|
學(xué)習(xí)51單片機(jī)時(shí)做的交通燈課程設(shè)計(jì),分享給大家,附件含Protues仿真,源程序和設(shè)計(jì)文檔
未命名.jpg (3.71 MB, 下載次數(shù): 130)
下載附件
2019-4-10 07:46 上傳
捕獲.JPG (55.69 KB, 下載次數(shù): 83)
下載附件
2019-4-10 08:02 上傳
單片機(jī)源程序如下:
- #include<stdio.h>
- #include<reg52.h>
- sbit ST=P3^0;
- sbit Ho1=P1^7;
- sbit Ho2=P1^4;
- sbit L1=P1^5;
- sbit L2=P1^2;
- sbit Hu1=P1^6;
- sbit Hu2=P1^3;
- sbit Q0=P3^2;
- sbit Q1=P3^3;
- int second=65,p=1,count_t0=0,
- count_t1=0,below_second=60,scan=0;
- void debouncer(void);
- char Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //數(shù)碼管顯示數(shù)組,共陽
- char Ma[]={0x01,0x02,0x04,0x08}; //掃描數(shù)組
- char disp[]={0xc0,0xc0,0xc0,0xc0}; //數(shù)碼管輸出數(shù)組
- char Count[]={0xc0,0xc0,0xc0,0xc0,0xc0,0xc0}; //數(shù)據(jù)存儲(chǔ)數(shù)組
- void main() //主函數(shù)
- {
- IE=0x8f; //中斷初值定義
- TCON=0x55;
- TMOD=0x21;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- TH1=256-250;
- TH2=256-250;
- while(1) //數(shù)碼管與交通燈顯示
- {
- if(p==1)
- {
- if(second>5) //南北通行60秒
- {
- disp[1]=Tab[below_second%10];
- disp[0]=Tab[below_second/10];
- disp[3]=Tab[second%10];
- disp[2]=Tab[second/10];
- L1=0;
- L2=1;
- Ho1=1;
- Ho2=0;
- Hu1=0;
- Hu2=0;
- }
- else //黃燈5秒
- {
- disp[1]=Tab[second%10];
- disp[0]=Tab[second/10];
- disp[3]=Tab[second%10];
- disp[2]=Tab[second/10];
- L1=0;
- L2=0;
- Hu1=0;
- Hu2=1;
- Ho1=1;
- Ho2=0;
- }
- }
- else
- {
- if(second>5) //東西通行60秒
- {
- disp[1]=Tab[second%10];
- disp[0]=Tab[second/10];
- disp[3]=Tab[below_second%10];
- disp[2]=Tab[below_second/10];
- L1=1;
- L2=0;
- Ho1=0;
- Ho2=1;
- Hu1=0;
- Hu2=0;
- }
- else //黃燈5秒
- {
- disp[1]=Tab[second%10];
- disp[0]=Tab[second/10];
- disp[3]=Tab[second%10];
- disp[2]=Tab[second/10];
- L2=0;
- L1=0;
- Hu1=1;
- Hu2=0;
- Ho1=0;
- Ho2=1;
- }
- }
- }
- }
- void int0(void) interrupt 0 //中斷int0,全為紅燈。
- {
- Count[0]=Ho1;
- Count[1]=Ho2;
- Count[2]=Hu1;
- Count[3]=Hu2;
- Count[4]=L1;
- Count[5]=L2;
- Count[6]=p;
- P0=0x00;
- L1=0;
- L2=0;
- Ho1=1;
- Ho2=1;
- Hu1=0;
- Hu2=0;
- debouncer();
- while(Q0==0);
- Ho1=Count[0];
- Ho2=Count[1];
- Hu1=Count[2];
- Hu2=Count[3];
- L1=Count[4];
- L2=Count[5];
- p=Count[6];
- second=65;
- below_second=60;
- count_t0=0;
- Tab[0]=0xc0;
- }
- void int1(void) interrupt 2 //中斷int1,單方向綠燈。
- {
- Count[0]=Ho1;
- Count[1]=Ho2;
- Count[2]=Hu1;
- Count[3]=Hu2;
- Count[4]=L1;
- Count[5]=L2;
- Count[6]=p;
- P0=0x00;
- if(ST==0)
- {
- L1=1;
- L2=0;
- Ho1=0;
- Ho2=1;
- }
- else
- {
- L1=0;
- L2=1;
- Ho1=1;
- Ho2=0;
- }
- Hu1=0;
- Hu2=0;
- debouncer();
- while(Q1==0);
- Ho1=Count[0];
- Ho2=Count[1];
- Hu1=Count[2];
- Hu2=Count[3];
- L1=Count[4];
- L2=Count[5];
- p=Count[6];
- second=65;
- below_second=60;
- count_t0=0;
- Tab[0]=0xc0;
- }
復(fù)制代碼
全部資料51hei下載地址:
交通燈控制.zip
(149.51 KB, 下載次數(shù): 239)
2019-4-10 08:27 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
Proteus仿真.docx
(1.09 MB, 下載次數(shù): 156)
2019-4-10 07:47 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|