实验1 红黄绿灯控制
1.实验目的
(1) 学习Keil C51集成编译软件的使用和调试程序方法。 (2) 学习将用户程序下载到应用系统的方法。
(3) 掌握STC89C52单片机的I/O端口的控制和使用方法。 2.实验内容
(1)编写程序要求:利用单片机的P1.0, P1.1, P1.2控制3个LED灯,模仿控制交通灯(红灯亮4秒,黄灯亮2秒,,黄灯和绿灯同时亮1秒,绿灯亮4秒,如此循环)。 3.实验电路
见图1.2 4.实验参考程序 (1)程序流程图 红灯亮
延时4S
黄灯亮
延时2S 黄、绿灯亮 延时1S
绿灯亮
延时4S
(2)汇编语言参考程序
ORG 0000H SJMP MAIN ORG 0030H
MAIN: CLR P1.2 ;红灯亮4S SETB P1.0 ;绿灯灭 SETB P1.1 ;黄灯灭 MOV R0,#40 ACALL DELAY
?;自己编写
DELAY: MOV A,R0 ;延时程序,R0=10,延时1S MOV R5,A
DELAY3: MOV R6,#XXH ;XX的数值自己计算填写 DELAY2: MOV R7,#XXH ;XX的数值自己计算填写 DELAY1: DJNZ R7,DELAY1 DJNZ R7,DELAY1 DJNZ R7,DELAY1 RET END
5.实验步骤
(1)根据实验原理图编写程序,用“Keil uVision4”编译软件进行编译,如未通过,则修改程序,直至通过。
(2)用STC-ISP.EXE软件将所编写程序生成的“HEX”文件下载到实验板STC89C52芯片中 (3)运行程序,观察实验板上的红,黄,绿三个LED灯的亮灭次序和时间是否符合实验内容要求,如果不符合要求,改写程序,按照步骤(1)开始重新做实验,直至成功。 6.思考题
(1)怎样计算延时子程序的延时时间? (2)如何计算与LED连接的电阻阻值?
(3)如何用89C52单片机的I/O口控制继电器?画出电路原理图。 (4)根据实验板原理图,编写一段8个LED循环闪烁的流水灯程序。 7.实验报告要求
(1)画出本实验相关的原理图。 (2)回答思考题中的题目。
(3)总结本次实验,简述自己的感想。
实验2 键盘LED数码管显示
1.实验目的
掌握独立键盘,LED数码管的电路连接方法和编程方法。 2.实验内容
(1)编写程序,按下S2,S3,S4,S4任何一个按键的时候,蜂鸣器都鸣叫,松开按键的时候蜂鸣器停止鸣叫。
(2)开始的时候,数码管左边位不显示,右边位数码管显示数值0,每按一次S4按键,数码管显示值加1,直至9,再循环从0显示到9。 3.实验电路
见图1.2 4.实验参考程序
(1)汇编语言参考程序 BEEP EQU P2.7 ;蜂鸣器 S1 EQU P2.5 ;数码管位个位 S2 EQU P2.6 ;数码管位十位 KEY1 EQU P2.0 ;按键1
KEY2 EQU P2.1 KEY3 EQU P2.2 KEY4 EQU P2.3 ORG 0000H SJMP MAIN ORG 0030H MAIN: MOV R0,#00H CLR FO CLR S1 SETB S2
;按键2 ;按键3 ;按键4
;按键4按下标志位F0=1
ACALL DISNUM
LOOP: ACALL KEYSCAN JNB F0,LOOP INC R0 CLR F0 CJNE R0,#10,LOOP1 MOV R0,#00 LOOP1: ACALL DISNUM SJMP LOOP
DISNUM:MOV DPTR,#TAB MOV A,R0 MOVC A,@A+DPTR MOV P0,A RET
;数码管显示子程序
;按键扫描
;数码管显示子程序
KEYSCAN:JB KEY1,K2 ;按键扫描子程序 ACALL DELAY ;延时防止抖动 JB KEY1,K2 CLR BEEP JNB KEY1,$ SETB BEEP K2: ..... ..... K3: ..... .....
K4: JB KEY4,K5 ACALL DELAY JB KEY1,K5 CLR BEEP SETB F0 JNB KEY1,$ SETB BEEP K5: RET
DELAY: ....... ;延时10秒子程序
.......
TAB: DB 30H,0FCH,0A2H,0A4H,6CH,25H,21H,0BCH,20H,24H END 5.实验步骤
(1)根据实验原理图编写程序,用“Keil uVision4”编译软件进行编译,如未通过,则修改程序,直至通过。
(2)用STC-ISP.EXE软件将所编写程序生成的“HEX”文件下载到实验板STC89C52芯片中 (3)运行程序,按下实验板上的S2,S3,S4,S5按键,听蜂鸣器是否会鸣叫。按下S5键的时候观察数码管上的数字是否从0~9循环变化。 6.思考题
(1)如何编程实现按键长按和短按的识别?
(2)如果没有电路图,如何编程来找出LED数码管的段码? 7.实验报告要求
(1)画出本实验相关的电路图。 (2)写出调试成功的程序。 (3)回答思考题
实验3 定时器中断实验
1.实验目的
掌握MSC-51定时器的使用方法。 2.实验内容
(1)使用定时器中断方式做一个显示00~99的秒钟,每秒增加1; 3.实验电路
见图1.2 4.实验参考程序
(1)汇编语言参考程序
BEEP EQU P2.7 ;蜂鸣器 S1 EQU P2.5 ; 数码管位个位 S2 EQU P2.6 ; 数码管位十位 LED1 EQU 30H ;显示个位值 LED2 EQU 31H ;显示十位值 ORG 0000H SJMP MAIN ORG 000BH AJMP IT0P ORG 0030H
MAIN: MOV R0,#00H ;计数值 MOV R1,#00H ;显示值 CLR F0 ;位十位标志位F0=1(十位) MOV DPTR,#TAB ......... ; 定时中断方式0
........ ;定时器0为方式1,每10MS进入一次中断 ........
LOOP: MOV A,R1 MOV B,#0AH DIV AB MOV LED1,B MOV LED2,A SJMP LOOP
;定时中断0中断服务程序 IT0P: MOV TH0,#0DBH ;每10MS进入一次中断 MOV TL0,#0FFH ;数码管显示子程序 JB F0,DISLED2 SETB S2 CLR S1 MOV A,LED1 MOVC A,@A+DPTR MOV P0,A SETB F0 SJMP LL1 DISLED2:SETB S1 CLR S2 MOV A,LED2 MOVC A,@A+DPTR MOV P0,A CLR F0
LL1: CJNE R0,#100,LL2 MOV R0,#00 INC R1 CJNE R1,#100,LL3 MOV R1,#00 SJMP LL3 LL2: INC R0 LL3: RETI
TAB: DB 30H,0FCH,0A2H,0A4H,6CH,25H,21H,0BCH,20H,24H END 5.实验步骤
(1)根据实验原理图编写程序,用“Keil uVision4”编译软件进行编译,如未通过,则修改程序,直至通过。
(2)用STC-ISP.EXE软件将所编写程序生成的“HEX”文件下载到实验板STC89C52芯片中 (3)运行程序,观察数码管上的数据是否是每秒加1,从0~99依次变化。如果不符合要求则改写程序,按照步骤(1)开始重新做实验,直至成功。 6.思考题
(1)用LCD1602来显示完成该实验。 7.实验报告要求
(1)画出本实验相关的电路图。
(2)写出实验内容的程序。
实验4 计数器实验
1.实验目的
掌握计数器的使用方法。 2.实验内容
利用计数器,记录光电开关被遮断的次数,并用LCD1602显示出来。 3.实验电路 见图1.2
4.实验参考程序 000~255: ORG 0000H
DAT EQU P2.7 CLK EQU P2.6 AJMP MAIN ORG 0030H MAIN: CLR A
MOV 79H,#10 MOV 78H,#10 MOV 77H,A MOV 76H,A MOV 75H,A
MOV TMOD,#01100000B MOV TL1,#00H MOV TH1,#00H SETB TR1
LOOP: ACALL INV16_10 ACALL DISPLAY ACALL DELAY AJMP LOOP INV16_10: MOV A,TL1 MOV B,#100 DIV AB MOV 77H,A MOV A,B MOV B,#10 DIV AB MOV 76H,A MOV 75H,B RET
DISPLAY: MOV R0,#79H SETB CLK
MOV DPTR,#TAB
LOOP1: MOV A,@R0
MOVC A,@A+DPTR ACALL DIS DEC R0
CJNE R0,#74H,LOOP1 SETB DAT SETB CLK RET
DIS: MOV R7,#8 DIS1: CLR CLK RRC A
MOV DAT,C SETB CLK DJNZ R7,DIS1 CLR CLK SETB DAT RET
DELAY: MOV R4,#3 DEL0: MOV R6,#200 DEL1: MOV R5,#250 DEL2: DJNZ R5,DEL2 DJNZ R6,DEL1 DJNZ R4,DEL0 RET
TAB: DB 90H,0F3H,89H,0A1H,0E2H,0A4H DB 84H,0F1H,80H,0A0H,0FFH END
00000~99999: 5.实验步骤
(1)根据实验原理图编写程序,用“Keil uVision4”编译软件进行编译,如未通过,则修改程序,直至通过。
(2)用STC-ISP.EXE软件将所编写程序生成的“HEX”文件下载到实验板STC89C52芯片中 (3)运行程序,观察LCD1602屏上初始显示是否为零,用手指遮挡下光电开关管,观察LCD1602屏上的数字是否加1,每遮挡一次继续加1,如果不符合要求,修改程序,按照步骤(1)开始重新做实验,直至成功。 6.思考题
(1)如果计数引脚没有连接到 7.实验报告要求
(1)画出本实验相关的电路图。 (2)写出实验内容的程序。