单片机实验指导书.docx
《单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书.docx(18页珍藏版)》请在冰豆网上搜索。
单片机实验指导书
实验一、P1口输入输出实验
一、实验目的
1、熟悉P1口作为输出口的使用
2、熟悉THKSCM-1实验系统的使用方法
3、学习延时子程序的编写
二、实验器材
1、THKSCM-1实验系统电路板和51仿真器
2、PC机和KEIL软件或WAVE软件
3、导线若干
三、实验内容
P1口作输出口,用导线连接P1.0-7和8个发光二极管LED0-7(也可用扁平线连接F1模块的P1.0-70和I4模块的LED0-7),编写程序,使八个发光二极管循环点亮。
四、
实验电路
五、实验连线
P1.0-P1.7连接8个发光二极管LED0-7
六、流程图
七、参考程序
ORG0000H
LJMPSTART
ORG0100H
START:
MOVA,#01H
LOOP:
MOVP1,A
LCALLDELAY
RLA
SJMPLOOP
DELAY:
MOVR7,#200
DE0:
MOVR6,#126
DE1:
DJNZR6,DE1
DJNZR7,DE0
RET
END
八:
思考
1、自己设计P1口作为输入输出使用的电路和程序,并在系统上调
2、改变点亮的时间间隔程序的编写
3、改变灯的输出花样程序的编写
实验二、定时计数器实验
一、实验目的
1、熟悉定时计数器的使用方法和编程。
2、了解定时计数器中断的处理方法。
3、掌握利用CPU查询的方式判断计数溢出的编程方法。
二、实验器材
1、THKSCM-1实验系统电路板和51仿真器
2、PC机和KEIL软件或WAVE软件
3、导线若干
三、实验内容
利用定时计数器T0对P3.4进行计数,每计完2个脉冲将A里面的内容左移一位送P1口显示。
四、电路原理
五、实验连线
将实验电路板A6模块上的的脉冲开关PULSE连接到P3.4引脚,P1.0.7接LED0-7。
六、程序设计
1计数用,流程图如下
ORG0000H
LJMPSTART
ORG0100H
START:
MOVA,#01H
MOVP1,A
MOVTMOD,#05H
MOVTH0,#0FFH
MOVTL0,#0FDH
SETBTR0
LOOP:
JNBTF0,$
CLRTR0
CLRTF0
MOVTH0,#0FFH
MOVTL0,#0FDH
RLA
MOVP1,A
SETBTR0
SJMPLOOP
END
2定时用:
(流程图自己设计出来)
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOV50H,#20
MOV51H,#100
MOVTMOD,#20H
MOVTH1,#06H
MOVTL1,#06H
SETBTR1
L2:
JBCTF1,L1
SJMPL2
L1:
DJNZ50H,L2
MOV50H,#20
DJNZ51H,L2
MOV51H,#100
CPLP1.0
SJMPL2
END
八:
思考
1、修改计数脉冲的初值看程序的运行变化.
2、改变定时计数器的工作方式程序相应的修改.
3、改用T1,该方案要作何修改才能实现相应的要求。
4、怎样利用中断的方式来编程实现。
实验三、数码管显示实验
七、实验目的
1、熟悉LED七段显示器的工作原理
2、掌握LED数码管动态显示的使用方法
八、实验器材
1、THKSCM-1实验系统电路板和51仿真器
2、PC机和KEIL软件或WAVE软件
3、导线若干
九、实验内容
采用P1口作为数码管的段驱控制,高电平有效,P2.0-P2.5作为6位数码管的位驱控制,低电平有效。
利用动态显示的效果,显示出自己的出生年月(如198603)
一十、
实验电路原理
+5V
五、实验连线
将F1模块中的P1.0-7与I3模块的JDO1相连,F1模块中的P2.0-7与I3模块的JDI1相连。
六、流程图
七、参考程序
ORG0000H;程序起始地址
LJMPSTART
ORG0100H;主程序起始地址
START:
MOV20H,#3
MOV21H,#0
MOV22H,#6
MOV23H,#7
MOV24H,#9
MOV25H,#1;写入出生年月
LED:
MOVP2,#0FEH;位驱动的初值
MOVR0,#20H;显示数据首地址
MOVR1,#6;显示数据存放的首地址
NEXT:
MOVA,@R0
MOVDPTR,#TABLE;指向表的首地址
MOVCA,@A+DPTR;查七段显示码
MOVP1,A;送段码给P1
LCALLDELAY
MOVA,P2
RLA;修改显示位驱动
MOVP2,A;送下一个位驱动信号
INCR0;指向下一个显示数据地址
DJNZR1,NEXT;一轮没有显示完的话显示下一位
SJMPLED;显示下一轮
DELAY:
MOVR7,#2
DE0:
MOVR6,#200
DE1:
DJNZR6,DE1
DJNZR7,DE0
RET
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
;0—9十个数字的七段显示共阴极代码表格
END
八:
思考
1、修改出生年月的数据,程序怎样修改
2、改变数据显示的方向,程序应该作何修改。
3、增大扫描延时的时间,观察动态显示的效果。
实验四、电子时钟实验
一、实验目的
1、熟悉定时计数器的扩展使用与中断的使用方法。
2、掌握LED数码管动态显示的使用方法
二、实验器材
1、THKSCM-1实验系统电路板和51仿真器
2、PC机和KEIL软件
3、导线若干
三、实验内容和要求
采用P1口作为数码管的段驱控制,高电平有效,P2.0-P2.5作为6位数码管的位驱控制,低电平有效。
利用动态显示的效果,显示时钟、分钟和秒钟(如110324)
四、实验电路原理
+5V
五、实验连线
将F1模块中的P1.0-7与I3模块的JDO1相连,F1模块中的P2.0-7与I3模块的JDI1相连。
六、流程图
七、参考程序
ORG0000H
LJMPSTART
ORG001BH
LJMPCLOCK
ORG0100H
DISBUFEQU30H;显示数字缓冲首地址
SECBUFEQU21H;秒缓冲
MINBUFEQU22H;分缓冲
HOUBUFEQU23H;时钟缓冲
BUFEQU20H;0.1S秒缓冲
START:
MOVBUF,#00H;0.1S秒缓冲清0
MOVMINBUF,#00H
MOVSECBUF,#00H
MOVHOUBUF,#00H;时钟设置
MOVTMOD,#10H;设置T1工作于定时方式2
MOVTL1,#0B0H
MOVTH1,#3CH;写0.1S的时间常数
SETBEA;开放CPU中断
SETBET1;开放T1中断
SETBTR1;允许T1工作
DISP1:
MOVR0,#DISBUF;显示数字存放首地址
MOVA,SECBUF;取小时高为数字
ANLA,#0FH
MOV@R0,A;小时高位数字存放
INCR0;指向下一个单元
MOVA,SECBUF
ANLA,#0F0H
SWAPA
MOV@R0,A;小时低位数字存放
INCR0
MOVA,MINBUF
ANLA,#0FH
MOV@R0,A;分钟高为数字存放
INCR0
MOVA,MINBUF
ANLA,#0F0H
SWAPA
MOV@R0,A;分钟高为数字存放
INCR0
MOVA,HOUBUF
ANLA,#0FH
MOV@R0,A;秒钟高为数字存放
INCR0
MOVA,HOUBUF
ANLA,#0F0H
SWAPA
MOV@R0,A;秒钟高为数字存放
LCALLDISPLAY
SJMPDISP1
DISPLAY:
MOVP21,#0FEH;驱动最低位
MOVR1,#DISBUF;取显示数字首地址
MOVR2,#06H;软计数器表示显示位数
LOOP1:
MOVDPTR,#SEGTAB;七段显示码表首地址
MOVA,@R1
MOVCA,@A+DPTR;查代码
MOVP1,A;送段驱动器74LS273
LCALLDELAY;0.1s
MOVA,P2
RLA;指向下一位位驱动
MOVP2,A
INCR1;指向下以个显示数字的地址单元
DJNZR2,LOOP1;显示位完了吗
RET
CLOCK:
CLRTR1;关T1
MOVTL1,#0B0H
MOVTH1,#3CH;重装时间常数
PUSHPSW
PUSHACC;压栈保护
MOVA,BUF
ADDA,#01H;0.1S缓冲器加1
DAA;转换为BCD码数
MOVBUF,A
CJNEA,#10H,INT_DONE;1S时间没有到中断返回
MOVBUF,#00H;1S到就将BUF清0
MOVA,SECBUF
ADDA,#01H
DAA;秒钟加1并变成BCD码数
MOVSECBUF,A
CJNEA,#60H,INT_DONE;60秒没有到中断返回
MOVSECBUF,#00H;60秒到秒钟清0
MOVA,MINBUF
ADDA,#01H
DAA;环种蛹?
并变成BCD码数
MOVMINBUF,A
CJNEA,#60H,INT_DONE;60分钟没到中断返回
MOVMINBUF,#00H;60分到分钟清0
MOVA,HOUBUF
ADDA,#01H
DAA;60分钟到时钟加1并转换为BCD码数
MOVHOUBUF,A
CJNEA,#24H,INT_DONE;24小时没到中断返回
MOVHOUBUF,#00H;24小时到时钟清0
INT_DONE:
POPACC
POPPSW
SETBTR1
RETI
DELAY:
MOVR7,#2
D1:
MOVR6,#255
D2:
DJNZR6,D2
DJNZR7,D1
RET
SEGTAB:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH,00H
END
八:
思考
怎样提高电子时钟的精度