单片机实验实训教材Word下载.docx
《单片机实验实训教材Word下载.docx》由会员分享,可在线阅读,更多相关《单片机实验实训教材Word下载.docx(54页珍藏版)》请在冰豆网上搜索。
简易抢答器的设计实验-------------------------23页
任务15:
外部中断实验--------------------------------25页
任务16:
定时器延时程序的设计-------------------------26页
任务17:
定时器计数工作方式实验---------------------32页
任务18:
外部中断优先级实验---------------------------28页
任务19:
串口输出实验--------------------------------36页
任务20:
串口工作方式0扩展输出口实验---------------37页
任务21:
74HC154,4线-16路译码电路的设计--------------40页
实验1、Keil软件的使用
一、实验目的:
1、通过软件程序编写,掌握KEIL软件的使用。
2、学会程序的简单调试。
二、实验步骤:
1、首先双击桌面上的Uv2图标打开Keil.
2、先建立一个工程:
点选菜单栏:
工程\先建工程\(在弹出窗口新建工程中命名工程文件名如):
LED\保存\(在弹出的CPU选择窗口中选择)Atmel\AT89C51\确定(完成工程的建立)。
3、源文件的建立;
(1)、点选菜单栏:
文件\新建\文件\保存\(命名源文件名同新建工程一致)LED.ASM\保存。
(2)、编写源程序如下:
(和文字可以不输入。
)
4、利用KeiluVision2仿真软件进行编译,直到编译无误为止。
5、将程序下载到89S51芯片,插入实验仿真板打开模块电源和总电源,运行实验程序。
三、实验源程序:
程序1、显示数字0
ORG0000H
START:
CLRP2.0;
开选通端P2.0
MOVP0,#0C0H;
送入"
0"
所对应的代码
END;
结束程序
程序2、ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVP1,#00H
CLRP1.0;
点亮LED0
SJMP$;
END
程序3、循环显示数字0-3
ORG00H;
程序开始
CLRP2.0;
选通最低位数码管
MOVP0,#0F9H;
将1的编码送P0口显示
LCALLDELAY;
显示2S
MOVP0,#0A4H;
将2的编码送P0口显示
MOVP0,#0B0H;
将3的编码送P0口显示
延时一段时间的显示
LJMPSTART
;
延时2S子程序
DELAY:
MOVR5,#250
D3:
MOVR6,#200
D2:
MOVR7,#200
D1:
DJNZR7,D1
DJNZR6,D2
DJNZR5,D3
RET
END;
程序编写结束
实验2:
发光二极管闪烁实验
一、实验目的
1、学习P1口的使用方法
2、学习延时子程序的编写和使用
二、实验说明
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
三、实验内容及步骤
用P1口做输出口,程序功能使发光二极管闪烁点亮。
1、使用单片机最小应用系统1模块。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
四、实验电路
五、实验源程序:
SETBP1.0;
LCALLDELAY;
SJMPSTART;
;
子程序
MOVR5,#10
MOVR6,#40
MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
实验3:
P1断口控制的流水灯实验
1、掌握KEIL软件的使用。
2、学习利用单片机编写流水灯的控制程序。
二、实验功能:
利用RL指令实现流水灯的控制。
三、实验步骤:
四、实验源程序:
程序1:
ORG0000H
MOVA,#01H;
将初始输出数存入A寄存器
LOOP:
MOVP1,A;
将A寄存器中的数从P1端口输出
LCALLDELAY;
调用延时子程序
RLA;
将A寄存器中的数向左移动一位
SJMPLOOP;
跳转到LP标号循环
MOVR5,#1;
MOVR6,#200;
MOVR7,#200;
DJNZR7,$;
DJNZR6,D2;
DJNZR5,D1;
RET;
程序2:
利用取表的方法实现的彩灯实验
单片机端口接八只LED,编程时利用取表的方法,使端口P1做单一灯的变化:
先向左移2次,然后向右移2次,再闪烁4次,不断循环。
ORG30H
START:
MOVDPTR,#TABLE;
存表
LOOP:
CLRA;
A清零
MOVCA,@A+DPTR;
取表代码
CJNEA,#01H,LOOP1;
不是01H,循环
JMPSTART;
重新设定
LOOP1:
MOVP1,A;
送P1输出
ACALLDELAY;
调延时程序
INCDPTR;
数据指针加1
JMPLOOP;
转移到LOOP处
DELAY:
MOVR5,#25;
延时0.5秒
DLY1:
MOVR6,#100;
DLY2:
MOVR7,#100;
DJNZR7,$;
DJNZR6,DLY2;
DJNZR5,DLY1;
RET;
TABLE:
DB0FEH,0FDH,0FBH,0F7H;
DB0EFH,0DFH,0BFH,7FH;
左移
左移
DB7FH,0BFH,0DFH,0EFH;
DB0F7H,0FBH,0FDH,0FEH;
右移
右移
DB00H,0FFH,00H,0FFH;
闪烁
DB01H;
结束码
END;
实验4:
一位数码管静态显示实验
1.掌握数字、字符转换成显示段码的软件译码方法
2.静态显示的原理和相关程序的编写
二、实验电路:
三、、实验步骤:
LCD\保存\(在弹出的CPU选择窗口中选择)Atmel\AT89C51\确定(完成工程的建立)。
文件\新建\文件\保存\(命名源文件名同新建工程一致)LCD.ASM\保存。
ORG0040H
MOVSP,#60H;
开始程序
MOVP0,#3FH;
最后一位七段数码管显示
延时
MOVP0,#00H;
熄灭
SETBP2.0;
循环闪烁
MOVR5,#5;
实验5:
利用查表的方法实现数码管静态显示实验
同上(略)
MOVA,#0
MOVDPTR,#TAB
MOVCA,@A+DPTR;
将数值转换为显示段码
MOVP0,A;
将查得的段码显示
段码表
;
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,40H,80H
'
0'
1'
2'
3'
4'
5'
6'
7'
8'
9'
A'
B'
C'
D'
E'
F'
-'
.'
实验6:
数码管动态显示数码(8051)实验
2.动态显示的原理和相关程序的编写
4个数码管动态显示8051四个数字。
LED4\保存\(在弹出的CPU选择窗口中选择)Atmel\AT89C51\确定(完成工程的建立)。
文件\新建\文件\保存\(命名源文件名同新建工程一致)LED4.ASM\保存。
ORG00H
AJMPSTART
ORG30H
MOVP0,#0FFH;
关显示
MOVP2,#0FFH;
CLRP2.7;
选中第一个数码管
MOVP0,#80H;
数码管显示8
调用延时
MOVP0,#0FFH
MOVP2,#0FFH
CLRP2.6;
选中第二个数码管
MOVP0,#0C0H;
数码管显示0
ACALLDELAY
CLRP2.5;
选中第三个数码管
MOVP0,#92H;
数码管显示5
CLRP2.4;
选中第四个数码管
MOVP0,#0F9H;
数码管显示1
AJMPSTART;
程序条转到第一步,反复执行
MOVR6,#10;
延时子程序
D0:
MOVR7,#25
D1:
DJNZR7,D1
DJNZR6,D0
END
开始程序:
该程序显示“3210”
使显示器不显示
MOVP2,#0FFH;
关闭显示器位选择码目的也是使显示器不显示
LCALLDISP0;
调用将数值转换为显示段码并在P0端口输出的子程序
少许延时目的是使得数码管更亮
MOVA,#1
CLRP2.1;
倒数第二位七段数码管显示
LCALLDELAY
MOVA,#2
CLRP2.2;
倒数第三位七段数码管显示
MOVA,#3
CLRP2.3;
倒数第四位七段数码管显示
LCALLSTART;
跳回初始位置,使程序循环
MOVR6,#1;
DISP0:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,40H,80H
实验7:
独立式按键控制的流水灯实验
1.掌握键盘的工作原理及过程。
2.掌握键盘和流水灯的结合工作过程
三、实验功能:
通过P3.4口按键控制流水灯的流动。
四、、实验步骤:
MOVSP,#60H
MOVA,#01H
MOVP1,A
JBP3.4,$
RLA
SJMPLOOP
实验8:
键盘控制的数字显示与小灯。
2、掌握独立式键盘程序结合数码显示程序的编写过程。
通过对外部数据的输入从P1口输出显示。
三、实验电路:
四、实验步骤:
AJMPMAIN
ORG0030H
MOVC,P3.2;
检测按键
MOVP1.2,C;
根据按键决定输出。
AJMPMAIN;
循环
按P32,P33,P34,P35,分别全部显示0123
LJMPSTART
MOVSP,#5FH
MOVP1,#0FFH
选中6个数码管
CLRP2.2
CLRP2.3
CLRP2.4
CLRP2.5
CLRP2.6
MOVP3,#0FFH
MOVP0,#0FFH
L1:
JNBP3.2,L2;
键盘监测程序
JNBP3.3,L3;
P33按下则执行L3
JNBP3.4,L4
JNBP3.5,L5
LJMPL1;
反复监测
L2:
MOVP1,#0FFH;
关P1口的灯
MOVP0,#28H;
CLRP1.0
CLRP1.1
LJMPL1
L3:
MOVP1,#0FFH
MOVP0,#7EH;
CLRP1.2
CLRP1.3
L4:
MOVP0,#0A2H;
数码管显示2
CLRP1.4
CLRP1.5
L5:
MOVP1,#0FFH
MOVP0,#62H;
数码管显示3
CLRP1.6
CLRP1.7
实验9:
独立键盘控制的数字加1实验
一位计数器,按V3.2数码管加1,到9后回0
KEY\保存\(在弹出的CPU选择窗口中选择)Atmel\AT89C51\确定(完成工程的建立)。
文件\新建\文件\保存\(命名源文件名同新建工程一致)K