大学单片机实验报告
【篇一:单片机实验报告】
单 片 机 实 验 报 告
姓名: 班级: 学号:任课教师:上课地点:
实验一 流水灯实验
一、实验目的及要求
1、闪烁的led;
2、从左到右的流水灯;
3、8只led左右来回点亮; 4、led模拟交通灯。
要求1:led按设定的时间间隔闪烁
要求2:接在p0口的8个led从左到右循环依次点亮,产生走马灯效果要求3:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果;
二、实验原理 电路图1、
电路图2、
三、源程序
要求1:
#includereg51.h
#define uchar unsigned char #define uint unsigned int sbit led=p1^0; //延时
void delayms(uint x) { uchar i; while(x--) {for(i=0;i120;i++); } } //主程序 void main() { while(1) {led=~led;delayms(150); } }
要求2:
#include reg51.h
#include intrins.h //包含程序中的_cror_(p0,y) #define uchar unsigned char #define uint unsigned int
uchar led;
void delay(unsigned int i) { uint j; uchar k; for(j=i;j0;j--)for(k=125;k0;k--); }
void main()
{ led=0x7f;//只亮 { p0=led;
delay(500);
led=_cror_(led,1);//p0逐步右移一位。} }
要求3:
#include reg51.h
#include intrins.h //包含程序中的_crol_(p0,y)
#define uchar unsigned char #define uint unsigned int
sbit led=p0^0; uchar i;
void delay(unsigned int i) { uint j; uchar k; for(j=i;j0;j--)for(k=125;k0;k--); }
void main() { p0=0xfe; delay(1000); while(1) {
for(i=0;i8;i++) {p0=led;
delay(500);
led=_crol_(led,1); }
for(i=0;i8;i++)
{p0=led;
delay(500);
led=_cror_(led,1); }
} }
//p0逐步左移一位。 //p0逐步右移一位
实验二 独立键盘实验
一、实验目的
1、k1-k4 按键状态显示; 2、k1-k4 控制led移位; 3、单只数码管循环显示0~9;
4、k1-k4 控制数码管移位显示。
要求1:k1、k2按下时led点亮,松开时熄灭,k3、k4按下并释放时led点亮,
再次按下并释放时熄灭;
要求2: 按下k1时,p0口led上移一位; 按下k2时,p0口led下移一位; 按下k3时,p2口led上移一位; 按下k4时,p2口led下移一位;
要求3:主程序中的循环语句反复将0~9的段码送至p0口,使数字0~9循环显示; 要求4:按下k1时加1计数并增加显示位, 按下k2时减1计数并减少显示位,
按下k3时清零
二、实验原理
电路图1、 电路图2、
电路图3、 电路图4、
【篇二:单片机实验报告】
单片机原理与应用
实验报告 学校: 合肥工业大学
姓名: 杨敏宇
学号:20112597
班级:计算机科学与技术11-4班
目录
一.单片机原理实验的任务
单片机原理实验是单片机原理及应用课程的一部分,它的任务是:
1.通过实验进一步了解和掌握单片机原理的基本概念、单片机应用系统的硬件设计及调试方法。
2.学习和掌握单片机应用系统程序设计技术。
3.提高应用计算机的能力及水平,提高逻辑动手能力。
二.实验设备
单片机实验所使用的设备由计算机、单片机实验开发系统(,其中计算机是软件开发平台,主要完成程序编辑、编译、下载程序等任务;单片机实验开发系统是硬件开发平台,是基于51/196 单片机的扩展实验系统。计算机和单片机实验开发系统之间是通过rs232 串行接口进行通信的。
单片机实验开发系统配有开关电源、单片机、晶振、存储器、可编程并行接口芯片、键盘显示控制芯片、24 键键盘、六位led 数码管显示、a/d 及d/a 转换芯片、简单输出口2个、简单输入口1 个、逻辑电平输入开关、发光二极管显示电路,并配有小直流电机、步进电机、继电器、音响等驱动电路。在计算机软件的控制下可完成单片机基本实验及综合设计性实验项目。所有的mcs51 单片机原理及应用课程实验都是在这套实验系统上完成的。keil与proteus的联合使用: keil c51 6.02的使用:
1.打开keil,新建一个程序文件(file--new),在上面输入要调试的程序,保存为*.asm格式;
2.新建一个工程(project--newproject),保存,在cpu选项了选择atmel--at89c51,点击确
定,在弹出的选项框中选择“否”。
3.在project workspace选框中,选择你新建的工程,右击,选择options for targettarget
(你起的工程名),选择debug,选择proteus vsm monitor 51 driver,点击确定.
4.在source group上右击,选择add files to groupsource group(工程名),在文件类型
里选择all files (*.*),找到刚才保存的.asm文件.
5.调试程序: 选择 编译连接程序,保证其全部正确.
2. 试验设备
(1)zy15mcu12bc2单片机实验开发装置一台。
(2)pc系列微机及相关软件。
3. 试验内容
(2)开启pc机及实验开发装置,启动keil c51软件进入uvision2集成开发环境。
(3)确认拨位开关kf的开关为a端,确认89c51处于仿真状态。
(4)在uvision2开发平台上建立并编辑示例程序:计算n个数求和程序。
其中n个数分别放在片内ram区50h到55h单元中,n=6,求和的结果放在片内ram区03h(高位)和04h(低位)单元
【篇三:单片机实验报告山东大学 (6000字)】
极管全部熄灭。将显示缓冲单元(设为 20h 单元)初始化为 feh。
② 从 p1 口读数据,查看 p1.0 位,如果 p1.0 位为 0,则执行如下循环:将显示缓冲单元
的值送给 p2 口,调用 100ms 延时程序,将显示缓冲单元的值循环左移 1 位,再送回显示缓
冲单元。如果 p1.0 位不为 0 则不执行上述循环。
③重复上面的操作②
3、实验步骤
① 根据上述实验内容,参考 1.2.2,在 proteus 环境下建立图 3.5 所示原理图,并将其保 存为 basicio_self.dsn 文件。 ② 根据(2)和(3)编写控制源程序,将其保存为 basicio_self.asm。
③ 将源程序添加到 u1 中,并构造(build)该程序。
④ 执行仿真过程观察 d1-d8 的指示,查看程序功能是否正确。
⑤ 修改延时程序延时参数,重新执行③和④。
4、源程序
org 0000h
ajmp main
org 0030h
main: mov sp,#60h
mov p2,#0ffh
mov a,#0feh
mov 20h,a;缓冲单元
loop:
jnb p1.0,loop1; ;如果p1.0=0,跳转
sjmp loop ;否则循环不断检测
loop1:
;
mov p2,20h ;将缓冲单元内的值给p2口 lcall delay100ms ;延时100ms mov a,20h rl a ;左移一位 mov 20h,a
jb p1.0,loop;如果p1.0=1,跳转到loop处
ljmp loop1;否则循环
delay100ms:mov r7,#200 ;1us
dl:mov r6,#248 ;1us
djnz r6,$ ;248*2=496us nop ;1us
djnz r7,dl ;2us
ret
;(496+1+1+2)*200+1=100.001ms
end
5、电路图
6、仿真结果
当按键 sw1 按下之后,d1-d8 轮流点亮,点亮时间为 100ms,当按键停下后,停止轮换, 再次按下后继续轮换。
实验二 扩展并行i/o口实验 自我完成实验
1、实验要求
仿真实现交通信号灯控制功能。
控制顺序为:
① 南北绿灯亮,同时东西红灯亮 10s;
② 南北黄灯亮,同时东西红灯亮 2s;
③ 南北红灯亮,同时东西绿灯亮 10s;
④ 东西黄灯亮,同时南北红灯亮 2s;
⑤ 重复①~④。
2、编程思路
①进行初始化工作,包括设置堆栈指针 sp,将两个 373 的输出口所有位均设置为 1,使所有发光二极管全部熄灭。
②分析两个 373 的地址:
假定所有无关地址均定义为 1,那么 u4 的锁存地址为:#0fe00h,u5 的锁存地址为:#0fd00h。
③分析 4 个状态下两个 373 的输出数据值:
假定“南北绿灯亮,同时东西红灯亮”为状态 1,即:stat1;“南北黄灯亮,同时东西红灯亮”为状态 2,即:stat2;
“南北红灯亮,同时东西绿灯亮”为状态 3,即:stat3;
“东西黄灯亮,同时南北红灯亮”为状态 4,即:stat4。 3、实验步骤
① 根据上述实验内容,参考 1.2.2,在 proteus 环境下建立图 3.7 所示原理图,并将其保
存为 expandio_self.dsn 文件。
② 根据(2)和(3)编写控制源程序,将其保存为 expandio_self.asm。
③ 将源程序添加到 u1 中,并构造(build)该程序。
④ 执行仿真过程观察各个方向的交通信号灯指示,查看程序功能是否正确。
4、源程序
org 0000h ajmp main
org 0030h
main:
mov sp,#60h
mov a,#0ffh
mov dptr,#0fe00h
movx @dptr,a
mov dptr,#0fd00h
movx @dptr,a
stat1:
mov a,#0f3h mov dptr,#0fe00h
movx @dptr,a
mov a,#0ch
mov dptr,#0fd00h
movx @dptr,a
lcall delay10s
stat2:
mov a,#0c3h
mov dptr,#0fe00h
movx @dptr,a
mov a,#0fh mov dptr,#0fd00h
movx @dptr,a
lcall delay2s
stat3:
mov a,#0fch
mov dptr,#0fe00h
movx @dptr,a
mov a,#03h
mov dptr,#0fd00h
movx @dptr,a
lcall delay10s stat4:mov a,#3ch
mov dptr,#0fe00h movx @dptr,a mov a,#0fh
mov dptr,#0fd00h movx @dptr,a lcall delay2sljmp stat1
delay2s:mov r7,#20 dl2:mov r6,#200 dl1:mov r5,#250 djnz r5,$ djnz r6,dl1 djnz r7,dl2 ret
delay10s:mov r7,#100 dl3:mov r6,#200 dl4:mov r5,#250 djnz r5,$ djnz r6,dl4 djnz r7,dl3ret
end
5、电路图
6、实验结果
① 南北绿灯亮,同时东西红灯亮 10s;
② 南北黄灯亮,同时东西红灯亮 2s;
③ 南北红灯亮,同时东西绿灯亮 10s;
④ 东西黄灯亮,同时南北红灯亮 2s;
实验三 静态led显示实验 自我完成实验
1、实验要求
图中 7seg2 为十位显示数码管,7seg1 为个位显示数码管,key_load 为倒计时初 值按钮,key_start 为倒计时启动按钮。
要求实现的功能是:当 key_load 按钮按下时加载倒计时初值(如:10s),当按下 key_start 按钮时,开始倒计时,每过 1s,计时器减 1,直到减到“00”为止。减到“00”时使 p3.0 引脚上的 led 按 10hz 频率进行闪烁,直到再次按下 key_load 按钮才重新加载初值,并熄灭 led。再次按下 key_start 按钮又一次开始倒计时,如此反复。
2、编程思路
①分析两个 373 的地址:
假定所有无关地址均定义为 1,那么 u2 的锁存地址为:#0fe00h,u3 的锁存地址为:#0fd00h。
②程序流程图:
3、实验步骤
① 根据上述实验内容,参考 1.2.2,在 proteus 环境下建立图 3.9 所示原理图,并将其保 存为 staticled_self.dsn 文件。
② 根据(2)和(3)编写控制源程序,将其保存为 staticled_self.asm。
③ 将源程序添加到 u1 中,并构造(build)该程序。
④ 执行仿真过程观察秒表程序功能是否正确。
4、源程序
org 0000h
ajmp main org 0030hmain:
mov sp,#60h;堆栈初始化
mov r0,#0
;各位
mov r1,#1;十位
setb p3.0;关掉led1
clr f0
loop:
jb p1.1,loop2;如果p1.1=1,跳转到loop2,
loop1:
clr f0 mov 30h,r0
mov 31h,r1;装载初值
setb p3.0;关闭led1
lcall display;显示
loop2:
jb p1.0,loop;如果p1.0=1,跳回loop,否则继续执行
loop3:
lcall display;刷新显示
lcall delay1s;延时1s
lcall adjust2;调整计时器寄存器jb f0,loop4
ljmp loop3
loop4:
clr p3.0 ;led闪烁程序 lcall delay100ms
setb p3.0
lcall delay100ms
jb p1.1,loop4
ljmp loop1
display: ;显示子程序 mov a,30h
mov dptr,#table
movc a,@a+dptr mov dptr,#d1add
movx @dptr,a
mov a,31h
mov dptr,#table
movc a,@a+dptrmov dptr,#d10add movx @dptr,a
ret
adjust2:
dec 30h
mov a,30h
cjne a,#-1,gotoret mov 30h,#9
dec 31h
mov a,31h
cjne a,#-1,gotoret
setb f0
ret
gotoret:
ret
delay1s:mov r7,#10 dl2:mov r6,#200
dl1:mov r5,#250
djnz r5,$ djnz r6,dl1
djnz r7,dl2
ret
delay100ms:mov r7,#200 dl:mov r6,#248
djnz r6,$
nop
djnz r7,dl
【工作报告之大学单片机实验报告 石家庄铁道大学单片机实验报告】相关文章:
计算机辅助设计CAD-实验报告 道路工程计算机辅助设计实验报告08-15
工作报告之大学单片机实验报告 石家庄铁道大学单片机实验报告08-15
单片机实验报告 单片机实验报告怎么写08-15
安徽大学历次单片机实验报告 安徽工业大学单片机实验报告08-15
2023电子商务运营实习报告范文08-15
电子商务的实习报告三篇08-15