#include #define uchar unsigned char #define uint unsigned int sbit FMQ=P3^4; sbit QR=P2^7; sbit QY=P2^6; sbit QG=P2^5; sbit HR=P2^7; sbit HY=P2^6; sbit HG=P2^5; sbit ZR=P2^4; sbit ZY=P2^3; sbit ZG=P2^2; sbit YR=P2^4; sbit YY=P2^3; sbit YG=P2^2; sbit SWITCH1=P1^0; sbit SWITCH2=P1^1; sbit SWITCH3=P1^2; sbit SWITCH4=P1^3; sbit P3_2=P3^2; sbit P3_3=P3^3; uchar DAT1,DAT2; //显示时间变量 uchar DISP1[2]={0,0}; //显示缓冲区1,南北 uchar DISP2[2]={0,0}; //显示缓冲区2,东西 uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF}; void DISPCLK1(uchar i); void DISPCLK2(uchar i); void DEL1MS(uint z) { uint x,y; for(x=0;x } void main() { uchar i,j; TCON=0x5; PX1=1; EX0=1; EX1=1; EA=1; P0=0xFF; P1=0xFF; P2=0xFF; P3=0xFF; while(1) { P1=0xFF; P2=0xFF; DAT1=25; DAT2=25; QG=0; HG=0; ZR=0; YR=0; for(i=0;i<20;i++) { for(j=0;j<200;j++) { DISPCLK1(DAT1); DISPCLK2(DAT2); DEL1MS(25); //延时5毫秒 } FMQ=1; DAT1=DAT1-1; DAT2=DAT2-1; } P1=0xFF; P2=0xFF; ZY=0; YY=0; QY=0; HY=0; for(i = 0; i < 5; i++) { for(j = 0; j < 200; j++) { DISPCLK1(DAT1);//显示 DISPCLK2(DAT2);//显示 DEL1MS(25); //延时3毫秒 } QY = ~QY; //南北向黄灯亮 HY = ~HY; ZY = ~ZY; //东西方向黄灯亮 YY = ~YY; FMQ = ~FMQ; //黄灯时蜂鸣器叫一声 DAT1 = DAT1 - 1;//完成数字的减1操作,调整好的数字送显存 DAT2 = DAT2 - 1;//完成数字的减1操作,调整好的数字送显存 } P1 = 0xff; P2 = 0xff; DAT1 = 15; //汇编0x20 DAT2 = 15; //汇编0x20 ZG = 0; //东西方向绿灯亮 YG = 0; QR = 0; //南北方向红灯亮 HR = 0; for(i = 0; i < 10; i++)//执行15秒 { for(j = 0; j < 200; j++) { DISPCLK1(DAT1);//显示 DISPCLK2(DAT2);//显示 DEL1MS(25); //延时3毫秒 } FMQ = 1; //蜂鸣器响 DAT1 = DAT1 - 1;//完成数字的减1操作,调整好的数字送显存 DAT2 = DAT2 - 1;//完成数字的减1操作,调整好的数字送显存 } //最后5秒黄灯闪 P1 = 0xff; P2 = 0xff; //关所有的灯 ZY = 0; //黄灯亮 YY = 0; QY = 0; HY = 0; for(i = 0; i < 5; i++) { for(j = 0; j < 200; j++) { DISPCLK1(DAT1);//显示 DISPCLK2(DAT2);//显示 DEL1MS(25); //延时3毫秒 } QY = ~QY; //南北向黄灯亮 HY = ~HY; ZY = ~ZY; //东西方向黄灯亮 YY = ~YY; FMQ = ~FMQ; //黄灯时蜂鸣器叫一声 DAT1 = DAT1 - 1;//完成数字的减1操作 ,调整好的数字送显存 DAT2 = DAT2 - 1;//完成数字的减1操作 ,调整好的数字送显存 } } } void D_X() interrupt 0 using 0 { uchar i,j,temp0,temp1,temp2,temp3; EA=0; P3_2=1; while(!P3_2); temp0=DAT1; temp1=DAT2; temp2=P1; temp3=P2; DAT1=60; DAT2=60; P1=0xff; P2=0xff; ZG=0; YG=0; QR=0; HR=0; for(i=0;i<60;i++) { for(j=0;j<200;j++) { DISPCLK1(DAT1); DISPCLK2(DAT2); DEL1MS(25); } DAT1=DAT1-1; DAT2=DAT2-1; } DAT1=temp0; DAT2=temp1; P1=temp2; P2=temp3; EA=1; } void N_B() interrupt 2 using 0 { uchar i,j,temp0,temp1,temp2,temp3; EA=0; P3_3=1; while(!P3_3); temp0=DAT1; temp1=DAT2; temp2=P1; temp3=P2; DAT1=60; DAT2=60; P1=0xff; P2=0xff; ZR=0; YR=0; QG=0; HG=0; for(i=0;i<60;i++) { for(j=0;j<200;j++) { DISPCLK1(DAT1); DISPCLK2(DAT2); DEL1MS(25); } DAT1=DAT1-1; DAT2=DAT2-1; } DAT1=temp0; DAT2=temp1; P1=temp2; P2=temp3; EA=1; } void DISPCLK1(uchar i) { DISP1[0]=i%10; DISP1[1]=i/10; P0=table[DISP1[0]]; SWITCH2=0; DEL1MS(2); SWITCH2=1; P0=table[DISP1[1]]; SWITCH1=0; DEL1MS(2); SWITCH1=1; } void DISPCLK2(uchar i) { DISP2[0]=i%10; DISP2[1]=i/10; P0=table[DISP2[0]]; SWITCH4=0; DEL1MS(2); SWITCH4=1; P0=table[DISP2[1]]; SWITCH3=0; DEL1MS(2); SWITCH3=1; }
上一篇:基于单片机的温湿度检测系统
下一篇:基于单片机的智能照明控制系统设计
推荐阅读最新更新时间:2024-10-13 10:15
设计资源 培训 开发板 精华推荐
- 点评《深入浅出玩TI Sitara》,精彩好礼等你拿!
- 【已结束】 Qorvo & Keysight 直播【新一代无线连接的挑战与应对之道】
- 免费申请|兆易创新GD32L233尝鲜体验,开启节能“芯”时代!
- 《看一个TI老工程师如何驯服精密放大器》点评有礼!
- ADI学霸型讲师又来了,探讨MEMS传感器和工业设备的故障监测
- 易电源电源模块试用!
- 抢先体验!免费试用LM3S8962 评估套件!(10.13~11.30)
- 【你晒单我送礼】免费申请TI样品,晒单赢礼 !
- Fluke 总有一款适合你需求的红外热像仪!参与赢好礼
- 有奖学习 | 探索泰克 4 系列 BMSO 强大功能,还能参与“叠叠乐”省钱大作战!