版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验1闪烁灯
实验2模拟开关灯
实验3多路开关状态指示
实验4广告灯设计
实验5广告灯(利用取表方式)
实验6报警器
实验7I/O并行口直接驱动LED显示
实验8按键识别方法之一
实验900~99计数器
实验10动态数码显示技术第八章单片机应用实验
1.实验目的
2.实验设备
3.实验原理
(1)延时程序的设计方法。图8-1所示石英晶体的晶振频率为12MHz,因此,1个机器周期为1μs。实验1闪烁灯机器周期微秒
MOVR6,#202个2
D1:
MOVR7,#2482个2
2+2×248=49820×498
DJNZR7,$2个2×248
+2+40
DJNZR6,D12个2×20=40
=10002
因此,上面的延时程序时间为10.002ms。
由以上可知,当R6=10、R7=248时,延时5ms;当R6=20、R7=248时,延时10ms。以此为基本的计时单位,如本实验要求0.2s=200ms,10ms×R5=200ms,则R5=20,那么延时子程序如下:
DELAY:MOVR5,#20
D1:
MOVR6,#20
D2:MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
(2)输出控制。如图8-1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB
P1.0指令使P1.0端口输出高电平,使用CLR
P1.0指令使P1.0端口输出低电平。图8-1
4.实验线路(见图8-1)
5.实验步骤
把“单片机系统”区域中的P1.0端口用导线连接到“8路发光二极管指示模块”区域中的L1端口上。
6.程序框图与参考程序
(1)程序框图如图8-2所示。图8-2
(2)参考程序。
①汇编程序如下:
ORG0
START:CLRP1.0
LCALLDELAY
SETBP1.0
LCALLDELAY
LJMPSTART
DELAY:MOVR5,#20;延时子程序,延时0.2s
D1: MOVR6,#20
D2: MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
END②C语言源程序如下:
#include〈AT89X51.H〉
sbitL1=P1^0;
voiddelay02s(void)//延时0.2s子程序
{
unsignedchari,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}voidmain(void)
{
while(1)
{
L1=0;
delay02s();
L1=1;
delay02s();
}
}
1.实验目的
2.实验设备
3.实验原理
(1)开关状态的检测过程。
(2)输出控制。
4.实验线路(见图8-3)实验2模拟开关灯图8-3
5.实验步骤
(1)把“单片机系统”区域中的P1.0端口用导线连接到“8路发光二极管指示模块”区域中的L1端口上;
(2)把“单片机系统”区域中的P3.0端口用导线连接到“8路拨动开关”区域中的S1端口上。
6.程序框图与参考程序
(1)程序框图如图8-4所示。图8-4
(2)参考程序。
①汇编源程序如下:
ORG00H
START:JBP3.0,LIG
CLRP1.0
SJMPSTART
LIG:
SETBP1.0
SJMPSTART
ENDA②C语言源程序如下:
#include〈AT89X51.H〉
sbitK1=P3^0;
sbitL1=P1^0;
voidmain(void)
{
while(1)
{
if(K1==0)
{
L1=0;//灯亮
}
else
{
L1=1;//灯灭
}
}
}
1.实验目的
2.实验设备
3.程序原理
(1)开关状态检测。
(2)输出控制。
4.实验线路(见图8-5)实验3多路开关状态指示图8-5
5.实验步骤
(1)把“单片机系统”区域中的P1.0~P1.3用导线连接到“8路发光二极管指示模块”区域中的L1~L4端口上;
(2)把“单片机系统”区域中的P1.4~P1.7用导线连接到“8路拨动开关”区域中的S1~S4端口上。
6.程序框图与参考程序
(1)程序框图如图8-6所示。图8-6
(2)参考程序。
方法一:
①汇编源程序如下:
ORG00H
START:
MOVA,P1
ANLA,#0F0H
RRA
RRA
RRA
RRA
XORA,#0F0H
MOVP1,A
SJMPSTART
END②C语言源程序如下:
#include〈AT89X51.H〉
unsignedchartemp;
voidmain(void)
{
while(1)
{
temp=P1>>4;
temp=temp|0xf0;
P1=temp;
}
}方法二:
①汇编源程序如下:
ORG00H
START:
JBP1.4,NEXT1
CLRP1.0
SJMPNEX1
NEXT1:
SETBP1.0
NEX1:
JBP1.5,NEXT2
CLRP1.1
SJMPNEX2
NEXT2:
SETBP1.1
NEX2:
JBP1.6,NEXT3
CLRP1.2
SJMPNEX3 NEXT3:SETBP1.2
NEX3:
JBP1.7,NEXT4
CLRP1.3
SJMPNEX4
NEXT4:SETBP1.3
NEX4:SJMPSTART
END②C语言源程序如下:
#include〈AT89X51.H〉
voidmain(void)
{
while(1)
{
if(P1_4==0)
{
P1_0=0;
}
else{
P1_0=1;
}
if(P1_5==0)
{
P1_1=0;
}
else
{
P1_1=1;
}
if(P1_6==0)
{
P1_2=0;
}
else
{
P1_2=1;
}
if(P1_7==0)
{
P1_3=0;
}
else
{
P1_3=1;
}
}
}
1.实验目的
(1)了解单片机最小系统;
(2)熟悉并掌握P1口的使用方法;
(3)学习单片机实验系统的使用方法和程序的调试方法。
2.实验设备
单片机最小系统试验箱,导线若干,计算机。实验4广告灯设计
3.实验原理
我们可以通过执行输出端口指令MOV
P1,A或MOV
P1,#DATA,即可达到输出控制的动作。
每次送出的数据不同,具体的数据如表所示。
4.实验步骤
把“单片机系统”区域中的P1.0~P1.7用8芯排线连接到“8路发光二极管指示模块”区域中的L1~L8端口上,要求:P1.0对应着L1,P1.1对应着L2,…,P1.7对应着L8。
5.实验线路(见图8-7)图8-7
6.程序框图和参考程序
(1)程序框图如图8-8所示。图8-8
(2)参考程序。
①汇编源程序如下:
ORG0
START:MOVR2,#8
MOVA,#0FEH
SETBC
LOOP:
MOVP1,A
LCALLDELAY
RLCA
DJNZR2,LOOP
MOVR2,#8 LOOP1:
MOVP1,A
LCALLDELAY
RRCA
DJNZR2,LOOP1
LJMPSTART
DELAY:MOVR5,#20;
D1:
MOVR6,#20
D2:
MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
END②C语言源程序如下:
#include〈AT89X51.H〉
unsignedchari;
unsignedchartemp;
unsignedchara,b;
voiddelay(void)
{
unsignedcharm,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}voidmain(void)
{
while(1)
{
temp=0xfe;
P1=temp;
delay();
for(i=1;i<8;i++)
{
a=temp<<i;
b=temp>>(8-i);
P1=a|b;
delay();
}
for(i=1;i<8;i++)
{
a=temp>>i;
b=temp<<(8-i);
P1=a|b;
delay();
}
}
}
1.实验目的
(1)了解单片机最小系统:
(2)熟悉并掌握P1口的使用方法;
(3)学习单片机实验系统的使用方法和程序的调试方法。
2.实验设备
单片机最小系统试验箱,导线若干,计算机。
3.实验原理实验5广告灯(利用取表方式)
4.实验线路(见图8-9)
图8-9
5.实验步骤
把“单片机系统”区域中的P1.0~P1.7用8芯排线连接到“8路发光二极管指示模块”区域中的L1~L8端口上,要求:P1.0对应着L1,P1.1对应着L2,…,P1.7对应着L8。
6.程序框图与参考程序
(1)程序框图如图8-10所示。图8-10
(2)参考程序。
①汇编源程序如下:
ORG0
START:MOVDPTR,#TABLE
LOOP:CLRA
MOVCA,@A+DPTR
CJNEA,#01H,LOOP1
JMPSTART
LOOP1:MOVP1,A
MOVR3,#20
LCALLDELAY
INCDPTR
JMPLOOP
DELAY:MOVR4,#20
D1:
MOVR5,#248
DJNZR5,$
DJNZR4,D1
DJNZR3,DELAY
RET TABLE:DB0FEH,0FDH,0FBH,0F7H
DB0EFH,0DFH,0BFH,07FH
DB0FEH,0FDH,0FBH,0F7H
DB0EFH,0DFH,0BFH,07FH
DB07FH,0BFH,0DFH,0EFH
DB0F7H,0FBH,0FDH,0FEH
DB07FH,0BFH,0DFH,0EFH
DB0F7H,0FBH,0FDH,0FEH
DB00H,0FFH,00H,0FFH
DB01H
END②C语言源程序如下:
#include〈AT89X51.H〉
unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0x00,0xff,0x00,0xff,
0x01};
unsignedchari;voiddelay(void)
{
unsignedcharm,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
voidmain(void)
{
while(1)
{
if(table[i]!=0x01)
{
P1=table[i];
i++;
delay();
}
else
{
i=0;
}
}
}
1.实验目的
利用开关控制报警器,当开关闭合报警信号报警,当开关断开告警信号停止,并编写程序。
2.实验设备
单片机最小系统试验箱,导线若干,计算机。
3.实验原理
500Hz音频信号的周期为2ms,信号电平为每1ms变反1次;1kHz的信号周期为1ms,信号电平每500μs变反1次。实验6报警器
4.实验线路(见图8-11)
图8-11
5.实验内容与步骤
(1)把“单片机系统”区域中的P1.0端口用导线连接到“扬声器模块”区域中的MIC-IN端口上;
(2)把“单片机系统”区域中的P1.7/RD端口用导线连接到“8路拨动开关”区域中的S1端口上。
6.程序框图与参考程序
(1)程序框图如图8-12所示。图8-12
(2)参考程序。
①汇编源程序如下:
FLAG BIT00H
ORG00H
START:JBP1.7,START
JNBFLAG,NEXT
MOVR2,#200
DV:CPLP1.0
LCALLDELY500
LCALLDELY500
DJNZR2,DV
CPLFLAG NEXT: MOVR2,#200
DV1: CPLP1.0
LCALLDELY500
DJNZR2,DV1
CPLFLAG
SJMPSTART
DELY500:MOVR7,#250
LOOP: NOP
DJNZR7,LOOP
RET
END②C语言源程序如下:
#include〈AT89X51.H〉
#include〈INTRINS.H〉
bitflag;
unsignedcharcount;
voiddely500(void)
{
unsignedchari;
for(i=250;i>0;i--){
_nop_();
}
}
voidmain(void)
{
while(1)
{
if(P1_7==0)
{
for(count=200;count>0;count--){
P1_0=~P1_0;
dely500();
}
for(count=200;count>0;count--)
{
P1_0=~P1_0;
dely500();
dely500();
}
}
}
}
1.实验目的
掌握LED数码管的工作原理。
2.实验设备
单片机最小系统实验箱,计算机,导线若干。
实验7I/O并行口直接驱动LED显示
3.实验原理
(1)LED数码显示原理。共阴极的字形码见下表。
(2)由于显示的数字0~9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。我们按数字0~9的顺序,把每个数字的笔段代码按顺序排好,如下所示:
TABLE
DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
4.实验线路(见图8-13)
图8-13
5.实验步骤与内容
6.程序框图与参考程序
(1)程序框图如图8-14所示。图8-14
(2)参考程序:
①汇编源程序如下:
ORG0
START:MOVR1,#00H
NEXT:MOVA,R1
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
INCR1
CJNER1,#10,NEXT
LJMPSTART DELAY:MOVR5,#20
D2:MOVR6,#20
D1:MOVR7,#248
DJNZR7,$
DJNZR6,D1
DJNZR5,D2
RET
TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END②C语言源程序如下:
#include〈AT89X51.H〉
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
unsignedchardispcount;
voiddelay02s(void)
{
unsignedchari,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}voidmain(void)
{
while(1)
{
for(dispcount=0;dispcount<10;dispcount++)
{
P0=table[dispcount];
delay02s();
}
}
}
1.实验目的
熟悉并掌握按键的工作原理及其编程方法。
2.实验设备及器材
单片机最小系统实验箱,计算机,导线若干。
3.实验原理实验8按键识别方法之一
4.实验线路(见图8-15)
图8-15
5.实验步骤与内容
(1)把“单片机系统”区域中的P3.7/RD端口连接到“低脉冲键盘”区域中的SP1端口上。
(2)把“单片机系统”区域中的P1.0~P1.4端口用8芯排线连接到“8路发光二极管指示模块”区域中的“L1~L8”端口上;要求:P1.0连接到L1,P1.1连接到L2,P1.2连接到L3,P1.3连接到L4。
每按下一次开关SP1,计数值加1,通过AT89S51单片机的P1端口的P1.0到P1.3显示出其的二进制计数值。
6.程序框图与参考程序
(1)程序框图如图8-16所示。图8-16
(2)参考程序:
①汇编源程序如下:
ORG0
START:MOVR1,#00H ;初始化R7为0,表示从0开始计数
MOVA,R1 ;
CPLA ;取反指令
MOVP1,A ;送出P1端口由发光二极管显示
REL: JNBP3.7,REL ;判断SP1是否按下
LCALLDELAY10MS ;若按下,则延时10ms左右
JNBP3.7,REL ;再判断SP1是否真得按下
INCR7 ;若真按下,则进行按键处理,使
MOVA,R7 ;计数内容加1,并送出P1端口由
CPLA ;发光二极管显示 MOVP1,A ;
JNBP3.7,$ ;等待SP1释放
SJMPREL ;继续对K1按键扫描
DELAY10MS:MOVR6,#20 ;延时10ms子程序
L1: MOVR7,#248
DJNZR7,$
DJNZR6,L1
RET
END②C语言源程序如下:
#include〈AT89X51.H〉
unsignedcharcount;
voiddelay10ms(void)
{
unsignedchari,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}voidmain(void)
{
while(1)
{
if(P3_7==0)
{
delay10ms();
if(P3_7==0)
{
count++;
if(count==16)
{
count=0;
}
P1=~count;
while(P3_7==0);
}
}
}
}
1.实验目的
(1)熟悉并掌握数码管动态扫描显示及按键的工作原理;
(2)掌握简单计数器的编程方法。
2.实验设备及器材
单片机最小系统实验箱,计算机,导线若干。
3.实验原理实验900~99计数器
4.实验线路(见图8-17)
图8-17
5.实验步骤与内容
6.程序框图和参考程序
(1)程序框图如图8-18所示。图8-18(2)参考程序。
①汇编源程序如下:
Count EQU30H
SP1 BITP3.7
ORG0
START: MOVCount,#00H
NEXT: MOVA,Count
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR MOVP0,A
MOVA,B
MOVCA,@A+DPTR
MOVP2,A
WT: JNBSP1,WT
WAIT: JBSP1,WAIT
LCALLDELY10MS
JBSP1,WAIT
INCCount
MOVA,Count
CJNEA,#100,NEXT
LJMPSTARTDELY10MS: MOVR6,#20
D1: MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
TABLE: DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,
7FH,6FH
END②C语言源程序如下:
#include〈AT89X51.H〉
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
unsignedcharCount;
voiddelay10ms(void)
{
unsignedchari,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}voidmain(void)
{
Count=0;
P0=table[Count/10];
P2=table[Count%10];
while(1)
{
if(P3_7==0)
{
delay10ms();
if(P3_7==0)
{
Count++;
if(Count==100){
Count=0;
}
P0=table[Count/10];
P2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某玩具厂质量办法
- 2025-2026年护理专业英语阅读理解习题集
- 2025-2026年婴幼儿护理与保健技能考核试卷
- 某钢铁公司采购条例
- 医院人力资源2026年工作总结及2026年工作计划
- 住宅物业投诉预防方案
- 物业收费标准调整方案公示
- 新苏教版科学二年級上册2.2《隔物吸铁》教学设计
- 现代企业管理(微课版 第4版) 教学大纲
- 洗煤厂消防安全职责清单
- 金蝶云星空总账初始化操作手册
- 新版2026秋新人教版五年级上册语文全册教案合集
- 新苏教版科学五年级上册 3.9《弹力》教学课件
- 2025年新交安安全员b证考试题库及答案
- 【初一】【秋季上】七年级开学家长会:从小学到初中陪孩子完成一次重要换挡 校园风【课件】
- 2026秋新教材译林版五年级上册英语Unit 1 Good habits 语法讲义+练习题(含答案)
- 2026年秋统编版(新教材)道德与法治五年级上册(全册)分层作业及答案(附目录)
- 超声评估卵巢囊肿分型
- 储罐焊接施工方案
- 2026年兵团公务员考试行测真题及答案
- 部编版语文一年级上册《a o e》说课稿
评论
0/150
提交评论