单片机技术课程设计说明书交通灯——课程设计内容摘要:

*/ /*项目所以单片机资源: P0 口输出数码管段控信号, P2 口输出数码管位控信号, P1 口接按键, P3 口接流水灯; 晶振 12MHz; 按键 S1: ,甲车道通车; 按键 S2: ,乙车道通车; 按键 S3: ,紧急情况通车; 按键 S4: ,复位显示 P.; 40H 用于显示缓冲区个位; 41H 用于显示缓冲区十位; 堆栈栈底: 70H。 */ /*项目所用的显示模块:四位一体数码管最后 2 位; 6 个 LED 灯( LED0, LED3, LED4,LED5, LED6, LED7) .*/ /*项目所用报警装置: 蜂鸣器(与 单片机 口线相连接)。 */。 ********建立显示缓冲区 : 个位 40H, 十位 41H, ************************ ORG 0000H LJMP MAIN ORG 0003H LJMP WBZD MAIN: MOV SP ,70H SETB EA SETB EX0 SETB IT0 MOV 40H ,17 MOV 41H ,16。 显示 P. 19 SETB SETB SETB SETB SETB SETB。 关闭所有灯 DD: LCALL KEY LJMP DD。 判有无按键按下。 *********甲车道通 60s********************************************** JIA: CLR。 甲车道绿灯亮 CLR。 乙车道红灯亮 SETB SETB SETB SETB。 关闭其他灯 MOV 40H ,0 MOV 41H ,6。 初始化 60S LCALL DELAY。 延时 1 秒并显示 MOV R4 ,05 LOOP1: DEC 41H。 十位减 MOV 40H ,9。 个位显示 9 LCALL DELAY LOOP2: DEC 40H。 个位减 LCALL DELAY MOV A ,40H CJNE A ,00H ,LOOP2 LOOP3: DJNZ R4 ,LOOP1 FF: MOV 40H ,9 MOV 41H ,0 LCALL DELAY DD1: DEC 40H LCALL DELAY MOV A ,40H CJNE A ,04H ,DD1 20。 *************黄灯闪烁 3s******************************************** HD1: CLR。 甲车道黄灯亮 CLR。 乙车道红灯亮 SETB SETB SETB SETB MOV 40H ,3 MOV 41H ,0。 初始化 3S LCALL DLY。 显示 500MS 并延时 SETB LCALL DLY。 显示 500MS 并延时 LOOP4: DEC 40H CLR LCALL DLY。 显示 500MS 并延时 SETB LCALL DLY。 显示 500MS 并延时 MOV A ,40H CJNE A ,01H ,LOOP4。 ********乙车道 30s*********************************************** JI: CLR。 乙车道绿灯亮 CLR。 甲车道红灯亮 SETB SETB SETB SETB。 关闭其他灯 MOV 40H ,0 MOV 41H ,3。 初始化 30S LCALL DELAY。 延时 1 秒并显示 MOV R3 ,02 LOOP5: DEC 41H。 十位减 MOV 40H ,9。 个位显示 9 LCALL DELAY LP1: DEC 40H。 个位减 21 LCALL DELAY MOV A ,40H CJNE A ,00H ,LP1。 判断 个位是否为 0 LP2: DJNZ R3 ,LOOP5 FF1: MOV 40H ,9 MOV 41H ,0 LCALL DELAY DQ: DEC 40H LCALL DELAY MOV A ,40H CJNE A ,04H ,DQ。 *********黄灯闪 3s************************************************* HD2: CLR。 乙车道黄灯亮 CLR。 甲车道红灯亮 SETB SETB SETB SETB MOV 40H ,3 MOV 41H ,0。 初始化 3S LCALL DLY。 显示 500MS 并延时 SETB LCALL DLY。 显 示 500MS 并延时 LOOP6: DEC 40H CLR LCALL DLY。 显示 500MS 并延时 SETB LCALL DLY。 显示 500MS 并延时 MOV A ,40H CJNE A ,01H ,LOOP6 LJMP JIA。 ******** 500ms 延时 ************************************************** DLY: MOV A ,R0 PUSH ACC 22 MOV R0 ,125 LL: LCALL DIR LCALL KEY DJNZ R0 ,LL MOV R0 ,A POP ACC RET。 *********延时 1s,显 ************************************************* DELAY: MOV A ,R0 PUSH ACC MOV R0 ,250 LOO11: LCALL DIR LCALL KEY DJNZ R0 ,LOO11 MOV R0 ,A POP ACC RET。 *******显示程序 ***************************************************** DIR: PUSH DPH PUSH DPL PUSH ACC MOV DPTR ,TAB MOV P2 ,00000001B。 选中个位数码管 MOV A ,40H MOVC A ,@A+DPTR MOV P0 ,A。 送个位数 LCALL DL。 延时 1ms MOV P0 ,0FFH MOV P2 ,00000010B。 选中十位数码管 MOV A ,41H MOVC A ,@A+DPTR MOV P0 ,A。 送十位数 23 LCALL DL MOV P0 ,0FFH POP ACC POP DPL POP DPH RET。 ***********延时 1ms*********************************************** DL: MOV R7 ,01H DL1: MOV R6 ,8EH DL0: MOV R5 ,02H DJNZ R5 ,$ DJNZ R6 ,DL0 DJNZ R7 ,DL1 RET。 **********应急车道 10s********************************************* WBZD: PUSH PSW PUSH ACC PUSH B MOV B ,P3 MOV 45H ,40H MOV 46H ,41H CLR CLR CLR。 亮两个红灯 SETB SETB SETB SETB。 关闭其他灯 MOV 40H ,0 MOV 41H ,1。 初始化 10 秒 LCALL DELAY1。 显示并延时 1S MOV 40H ,9 MOV 41H ,0。 显示 09 24 LCALL DELAY1。 显示并延时 1S BB: DEC 40H LCALL DELAY1。 显示并延 时 1S MOV A ,40H CJNE A ,00H ,BB MOV P3 ,B SETB MOV 40H ,45H MOV 41H ,46H POP B POP ACC POP PSW CLR IE0 RETI。 ********中断调的延 1s********************************************** DELAY1: MOV A ,R3 PUSH ACC MOV R3 ,250 LOOP51: LCALL DIR。 调显示 LCALL DL LCALL DL DJNZ R3 ,LOOP51 POP ACC MOV R3 ,A RET。 ********键盘扫描 **************************************************** KEYSAO: LCALL KEYCHULI JZ EXIT LCALL DL LCALL DL。 去抖动 LCALL KEYCHULI JZ EXIT MOV B ,20H KEYSF: LCALL KEYCHULI 25 JZ KEY110 LCALL DL LCALL DL。 去抖动 LJMP KEYSF KEY110: MOV 20H ,B EXIT: RET KEYCHULI:PUSH PSW CLR RS1 SETB RS0 MOV P1 , 0FFH MOV A , P1 CPL A ANL A , 0FH MOV 20H , A CLR。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。