找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3524|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)交通燈(Proteus仿真電路,C語(yǔ)言程序代碼)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:849631 發(fā)表于 2020-11-28 15:40 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
東西向綠燈;
南北向紅燈;
東西向紅燈;
南北向綠燈;
南北向向黃燈閃爍;

時(shí)間顯示(時(shí)間自定);
下面是仿真電路;


(注:沒(méi)畫最小系統(tǒng))
篇幅有限,代碼放附件了

單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. //#define uchar unsigned char
  3. //#define uint unsigned int
  4. char code smg_dw[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  5. //共陽(yáng)0-9
  6. sbit lR=P1^0;
  7. sbit lY=P1^1;
  8. sbit lG=P1^2;
  9. sbit hR=P1^3;
  10. sbit hY=P1^4;
  11. sbit hG=P1^5;
  12. sbit shi=P3^0;
  13. sbit ge=P3^1;
  14. int a,b,c,type,j,i;
  15. void Delay(int x);
  16. void delay_ms(int q);
  17. void shumaguan(int k);
  18. main()
  19. {
  20.         TMOD=0x01;                                  
  21.         TH0=(65536-50000)/256;
  22.         TL0=(65536-50000)%256;
  23.         TR0=1;                                          
  24.         ET0=1;                                         
  25.         EX0=1;                                         
  26.         EA=1;                                                                           
  27.         a=10;                                          
  28.         type=1;
  29.         while(1){
  30.                 switch(type)
  31.                 {
  32.                         case 1: //東西向綠燈與南北向紅燈亮
  33.                                 lR=0;lY=1;lG=1;
  34.                                 hR=1;hY=1;hG=0;
  35.                                 shumaguan(a);
  36.                         break;
  37.                         case 2: //東西向黃燈閃爍,綠燈關(guān)閉       
  38.                                 if(a%2!=0)
  39.                                 {
  40.                                 lR=1;lY=0;lG=1;
  41.                                 }
  42.                                 if(a%2==0)
  43.                                 {               
  44.                                 lR=1;lY=1;lG=1;
  45.                                 }
  46.                                 shumaguan(a);
  47.                         break;
  48.                         case 3: //東西向紅燈,南北向綠燈亮
  49.                                 lR=1;lY=1;lG=0;
  50.                                 hR=0;hY=1;hG=1;
  51.                                 shumaguan(a);
  52.                         break;
  53.                         case 4: //南北向黃燈閃爍3次
  54.                                 if(a%2!=0)
  55.                                 {
  56.                                 hR=1;hY=0;hG=1;
  57.                                 }       
  58.                                 if(a%2==0)
  59.                                 {       
  60.                                 hR=1;hY=1;hG=1;
  61.                                 }
  62.                                 shumaguan(a);
  63.                         break;
  64.                 }
  65.                         }
  66. }

  67. void T0_int0(void) interrupt 1                   //中斷
  68. {
  69.         TH0=(65536-50000)/256;
  70.         TL0=(65536-50000)%256;
  71.         i++;
  72.         if(i==20)
  73.         {
  74.                 i=0;
  75.                 a--;
  76.                 if(a==0)
  77.                 {
  78.                         if(type==1||type==3)
  79.                         {
  80.                                 a=5;
  81.                         }
  82.                         if(type==2||type==4)
  83.                         {
  84.                                 a=10;
  85.                         }
  86.                         type++;
  87.                         if(type==5)
  88.                         {
  89.                                 type=1;
  90.                         }
  91.                 }
  92.         }       
  93. }

  94. void shumaguan(int k)           //數(shù)碼管顯示
  95. {
  96.                 b=k/10;
  97.                 c=k%10;
  98.                 P3=0xfd;
  99.                 P2=smg_dw[b];//選段碼
  100.       delay_ms(20);//延時(shí)5ms
  101.                 P3=0xfe;
  102.                 P2=smg_dw[c];//選段碼
  103.                 delay_ms(20);
  104. }

  105. void Delay(int x)                   //延時(shí)
  106. {
  107.         char i;
  108.         while(x--)for(i=0;i<120;i++);       

  109. }

  110. void delay_ms(int q)           //延時(shí)
  111. {        
  112.         int i,j;
  113.         for(i=q;i>0;i--)
  114.         for(j=141;j>0;j--);
  115. }
復(fù)制代碼

所有資料51hei提供下載:
交通燈.zip (46.36 KB, 下載次數(shù): 91)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:535215 發(fā)表于 2020-11-28 18:22 | 只看該作者
nice
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表