|
数码管显示倒计时时间的交通灯控制设计,带ad画的原理图和pcb
- #include "reg51.h"
- #include"absacc.h"
- #define uchar unsigned char
- #define uint unsigned int
- typedef unsigned char BYTE;
- typedef unsigned int WORD;
-
- sbit ge1=P2^3; //南北数码管
- sbit shi1=P2^2;
- sbit ge2=P2^1; //东西数码管
- sbit shi2=P2^0;
-
- sbit SNR=P1^5; //南北绿黄红灯
- sbit SNY=P1^4;
- sbit SNG=P1^3;
- sbit EWR=P1^2; //东西绿黄红灯
- sbit EWY=P1^1;
- sbit EWG=P1^0;
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- uint m,a,b,c,d;
- uchar ewg,snr;
- uchar tt=0;
- unsigned char flag;
- /******延时程序******/
- void delay(WORD n)
- {
- WORD x;
- while(n--)
- {
- x=500;
- while(x--);
- }
- }
- void delay2(WORD n)
- {
- WORD x;
- while(n--)
- {
- x=5000;
- while(x--);
- }
- }
- /******倒计时显示******/
- void display()
- {
- a=snr/10; //南北时间
- b=snr%10;
- shi1=1;
- ge1=0;
- shi2=1;
- ge2=1;
- P0=table[a];
- WR=0;
- WR=1;
- delay2(1);
- ge1=1;
- shi1=0;
- shi2=1;
- ge2=1;
- P0=table[b];
- WR=0;
- WR=1;
- delay2(1);
- c=ewg/10; //东西时间
- d=ewg%10;
- shi2=1;
- ge2=0;
- ge1=1;
- shi1=1;
- P0=table[c];
- WR=0;
- WR=1;
- delay2(1);
- ge2=1;
- shi2=0;
- ge1=1;
- shi1=1;
- P0=table[d];
- WR=0;
- WR=1;
- delay2(1);
- }
- /******程序初始化******/
- void initial()
- {
- ewg=0;snr=0;P1=0xff;
- TMOD=0x01;
- TH0=(65536-46080)/256;
- TL0=(65536-56080)%256;
- EA=1;
- ET0=1;
- TR0=1;
- }
- /*****************主函数********************/
- void main()
- {
- initial();
- ewg=30;snr=35;
- flag=0;
- while(1)
- {
- display();
- }
- }
- void T0_int() interrupt 1
- {
- TH0=(65536-46078)/256;
- TL0=(65536-56078)%256;
- tt++;
- if(tt==20)
- {
- tt=0;
- if(flag==0)
- {
- EWG=0;EWY=1;EWR=1;SNG=1;SNY=1;SNR=0;
- if(ewg>0&&snr>0){ewg--;snr--;}
- if(ewg==0){flag=1;ewg=6,snr=6;}
- }
- if(flag==1)
- {
- EWG=1;EWY=0;EWR=1;SNG=1;SNY=1;SNR=0;
- if(ewg>0&&snr>0){ewg--;snr--;}
- if(ewg==0){flag=2;ewg=36,snr=31;}
- }
- if(flag==2)
- { EWG=1;EWY=1;EWR=0;SNG=0;SNY=1;SNR=1;
- if(ewg>0&&snr>0){ewg--;snr--;}
- if(snr==0){flag=3;ewg=6,snr=6;}
- }
- if(flag==3)
- {
- EWG=1;EWY=1;EWR=0;SNG=1;SNY=0;SNR=1;
- if(ewg>0&&snr>0){ewg--;snr--;}
- if(ewg==0){flag=0;ewg=30,snr=35;}
- }
- }
- }
复制代码
课设.zip
(317.39 KB, 下载次数: 33)
|
评分
-
查看全部评分
|