单片机技术课程设计说明书交通灯——课程设计内容摘要:
*/ /*项目所以单片机资源: 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。单片机技术课程设计说明书交通灯——课程设计
相关推荐
有 4根。 (1) ALE/PROG:地址锁存允许 /片内 EPROM 编程脉冲。 ALE:用来锁存 P0口送出的低 8位地址。 /PROG:片内有 EPROM 的芯片 ,在 EPROM 编程期间 ,此引脚输入编程脉冲。 (2) /PSEN:外 ROM读选通信号 .在外部程式记忆体的指令码获取周期时 ,PSEN 将送出一个闪控信号 ,以表示 CPU 正自外部的程式记忆体中读取 指令码。 (3)
51单片机有一个复位引 脚 RST,它是史密特触发输入 (对于 CHMOS单片机,RST引脚的内部有一个拉低电阻 ),当振荡器起振后 该引脚上出现 2个机器周期 (即24个时钟周期 )以上的高电平,使器件复位,只要 RST保持高电平, MCS51保持复位状态。 此时 ALE、 PSEN、 P0、 P P P3口都 输出高电平。 RST变为低电平后,退出复位, CPU从初始状态开始工作。 单片机
N N Y Y 图 8 软件总流程图 开 始 初始化中断、定时器 =0。 Shu=0? LED 闪烁灯显示状态改变 LED 数码管重新倒计时 LED 闪烁灯显示状态 LED数码 管倒计时 中 断 响 应 Shu1=0? 7 软件单元模块分析 主程序 主程序主要负责总体程序管理功能,实现人及交互设定。 由于采用动态扫描方式显示时间,因此主程序大部分要调用扫描显示程序 [5]。 主程序流程图如图
MOV T1MSECOND,A CJNE A,00,DISPT1 ;满 1S MOV A,T1SECOND ;秒加 1 调整 ADD A,1 DA A MOV T1SECOND,A CJNE A,60H,DISPT1 ;满 1MIN MOV T1SECOND,0 ;秒清 0 MOV A,T1MINIT ;分加 1 调整 ADD A, 1 DA A MOV T1MINIT,A CJNE A,60H
的例子: 8031单片机的 P1口用作键盘 I/O 口,键盘的列线接到 P1口的低 4位,键盘的行线接到 P1口的高 4位。 列线 分别接有 4 个上拉电阻到正电源 +5V,并把列 线 ,行线 出线。 4 根行线和 4 根列线形成 16 个相交点。 检测当前是否有键被按下。 检测的方法是 输出全 “0” ,读取 的状态,若 为全 “1” ,则无键闭合,否则有键闭合。 去除键抖动。