#include<reg52.h> sbit ENLCD=P1^5; sbit ENLED=P1^4; sbit ADDR3=P1^3; sbit ADDR2=P1^2; sbit ADDR1=P1^1; sbit ADDR0=P1^0; unsigned char ge1=5,shi1=1,ge2=0,shi2=1,LED1; unsigned long cnt=0,n=0,j=0; unsigned char LED[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void dongxi(); void nanbei(); void dongxishu(unsigned char sec); void nanbeishu(unsigned char sec); void delay() { unsigned int i; for(i=0;i<=1000;i++); } void main() { ENLCD=0; ENLED=0; ADDR3=1; EA=1; ET1=1; TMOD=0x10; TH1=0xFC; TL1=0x66; TR1=1; while(1){ if(0<cnt && cnt<=10000) {LED1=0x7E;}//0111 1110 else if(10000<cnt && cnt<=15000) {LED1=0xBE;}//0111 1101 else if(15000<cnt && cnt<=25000) {LED1=0xDB;} else if(25000<cnt && cnt<=30000) {LED1=0xBD; cnt=0;} dongxi(); //东西数码管的显示 nanbei(); //南北对应数码管的显示 } } void nanbei() { //8s---0s---2s---0s---8s---0s………… static unsigned char a=0,m=10; if(n==1000){ n=0; m--;//8s nanbeishu(m); } if(m==0){ a++; if(a==1){ m=5; //2s } else if(a==2){ m=15;a=0; //8s } } } void dongxi() { //8s---0s---2s---0s---8s---0s………… static unsigned char a=0,k=15; if(j==1000){ j=0; k--; //8s dongxishu(k); } if(k==0){ a++; if(a==1){ k=10; //2s } else if(a==2){ k=5;a=0; //8s } } } void dongxishu(unsigned char sec) { ge1=sec%10; shi1=sec/10%10; } void nanbeishu(unsigned char sec1) { ge2=sec1%10; shi2=sec1/10%10; } void interrupt_deng()interrupt 3 { static unsigned char i=0; TH1 = 0xFC; TL1 = 0X66; //cnt为LED灯的秒数 cnt++;j++,n++;//j为东西方向数码管的秒数,n为南北方向数码管的秒数 switch(i) { case 0: ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=LED[ge1];break;//东西数码管 case 1: ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=LED[shi1];break;//东西数码管 case 2: ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=LED[ge2];break;//南北数码管 case 3: ADDR2=1;ADDR1=0;ADDR0=1;i++;P0=LED[shi2];break;//南北数码管 case 4: ADDR2=1;ADDR1=1;ADDR0=0;P0=LED1;i=0;break; } }
东西方向一组红黄绿灯,南北方向一组红黄绿灯,倒计时秒数在数码管上显示。
东西方向 | 南北方向 | ||||||
时间 | 红(led0) | 黄(led1) | 绿(led2) | 红(led5) | 黄(led6) | 绿(led7) | P0 |
10s | 亮 15s | 亮 10s | 01111110 0x7E | ||||
5s | 亮 | 亮 5s | 10111110 0xBE | ||||
10s | 亮 10s | 亮 15s | 11011011 0xDB | ||||
5s | 亮 5s | 亮 | 11011101 0xBD |
时间: 2024-10-14 04:55:17