欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

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

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

求助單片機(jī)交通燈,數(shù)碼管的數(shù)值如何跟交通燈連接起來(lái)呢

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 5 黑幣 回復(fù)本帖可獲得 5 黑幣獎(jiǎng)勵(lì)! 每人限 1 次(中獎(jiǎng)概率 20%)
跳轉(zhuǎn)到指定樓層
樓主
ID:863590 發(fā)表于 2021-12-11 20:59 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
看了好多別人的作品可還是搞不清楚要怎么把這兩個(gè)聯(lián)系起來(lái)

單片機(jī)源程序如下:
  1. #include <reg51.h>                                                                                                               
  2. #define uchar unsigned char
  3. #define  uint unsigned int
  4. sbit RED_A=P0^0;                         //定義東西方向紅燈
  5. sbit YELLOW_A=P0^1;                         //定義東西方向黃燈
  6. sbit GREEN_A=P0^2;                         //定義東西方向綠燈
  7. sbit RED_B=P0^3;                         //定義南北方向紅燈
  8. sbit YELLOW_B=P0^4;                         //定義南北方向黃燈
  9. sbit GREEN_B=P0^5;                         //定義南北方向綠燈
  10. sbit add=P3^3;                                 //定義東西綠燈時(shí)間加按鍵
  11. sbit sub=P3^4;                                 //定義東西綠燈時(shí)間減按鍵
  12. sbit K1=P3^2;                                 //定義設(shè)定時(shí)間按鍵
  13. sbit add2=P3^5;                             //定義調(diào)南北綠燈時(shí)間加按鍵
  14. sbit sub2=P3^6;                             //定義調(diào)南北綠燈時(shí)間減按鍵
  15. int time_1=2000,time_2=2000; //定義東西和南北綠燈亮?xí)r可調(diào)變量并賦予初值2S
  16. uchar Flash_Count=0;                 //黃燈閃爍次數(shù)初始為0
  17. Operation_Type=1;                         //從模式1開(kāi)始
  18. void DelayMS(uint x);                 //延時(shí)子函數(shù)聲明
  19. void Traffic_lignt();                 //交通燈循環(huán)亮子程序聲明
  20. /*主函數(shù)*/
  21. void main()
  22. {
  23.         P3=0xff;                                 //預(yù)讀先寫(xiě)1
  24.         EA=1;                                         //打開(kāi)總中斷
  25.         EX0=1;                                         //打開(kāi)外部中斷0
  26.         IT0=0;                                         //觸發(fā)方式為低電平觸發(fā)
  27.   
  28.                 while(1)
  29.                 {
  30.                    Traffic_lignt();        
  31.                 }
  32. }
  33. /*延時(shí)子程序*/
  34. void DelayMS(uint x)                  //延時(shí)ms
  35. {
  36.     uchar t;
  37.     while(x--)
  38.     {
  39.         for(t=120;t>0;t--);
  40.     }
  41. }
  42. /*交通燈循環(huán)亮程序**/
  43. void Traffic_lignt()                 
  44. {
  45.          switch(Operation_Type)
  46.         {
  47.                  case 1:
  48.                         RED_A=1;YELLOW_A=1;GREEN_A=0;                 //東西方向紅燈和黃燈滅,綠燈亮
  49.                         RED_B=0;YELLOW_B=1;GREEN_B=1;                 //南北方向綠燈和黃燈滅,紅燈亮
  50.                         DelayMS(time_1);                                         //東西方向綠燈延時(shí)時(shí)間
  51.                         while(K1==0);                                                 //產(chǎn)生中斷時(shí)可靠停止
  52.                         Operation_Type = 2;                                         //轉(zhuǎn)到模式2
  53.                         break;
  54.                 case 2:
  55.                         GREEN_A=1;                                                         //東西方向綠燈滅
  56.                         DelayMS(200);                                                 //黃燈延時(shí)時(shí)間
  57.                         while(K1==0);                                                 //產(chǎn)生中斷時(shí)可靠停止
  58.                         YELLOW_A=~YELLOW_A;                                         //黃燈閃爍
  59.                         if(++Flash_Count !=10)                                  //閃爍10次(亮5次滅5次)
  60.                                 return;
  61.                         Flash_Count=0;                                                 //黃燈閃爍次數(shù)清零
  62.                         Operation_Type = 3;                                         //轉(zhuǎn)到模式3
  63.                         break;
  64.                 case 3:
  65.                         RED_A=0;YELLOW_A=1;GREEN_A=1;                 //東西方向僅紅燈亮
  66.                         RED_B=1;YELLOW_B=1;GREEN_B=0;                 //南北方向僅綠燈亮
  67.                         DelayMS(time_2);                                     //南北方向綠燈延時(shí)時(shí)間
  68.                         while(K1==0);                                                 //產(chǎn)生中斷時(shí)可靠停止
  69.                         Operation_Type = 4;                                         //轉(zhuǎn)到模式4
  70.                         break;        
  71.                 case 4:
  72.                         GREEN_B=1;                                                         //南北方向綠燈滅
  73.                         DelayMS(200);                                                 //黃燈延時(shí)時(shí)間
  74.                         while(K1==0);                                                 //產(chǎn)生中斷時(shí)可靠停止
  75.                         YELLOW_B=~YELLOW_B;                                         //黃燈閃爍
  76.                         if(++Flash_Count !=10)                                  //閃爍10次(亮5次滅5次)
  77.                                 return;
  78.                         Flash_Count=0;                                                 //黃燈閃爍次數(shù)清零
  79.                         Operation_Type = 1;                                         //轉(zhuǎn)到模式1
  80.                         break;        
  81.         }
  82. }
  83. /*外部中斷0子程序*/
  84. void exter_0() interrupt 0
  85. {
  86.         while(!(add&&sub&&add2&&sub2))                        //掃描是否有按鍵按下
  87.                 {
  88.                 while(add==0)                                    //如果第一個(gè)按鍵按下東西方向綠燈延續(xù)時(shí)間加1秒
  89.                                         {
  90.                                             DelayMS(10);
  91.                                                 while(add==0);
  92.                                                 time_1=time_1+1000;
  93.                                                 if(time_1>60000)   //當(dāng)時(shí)間超過(guò)60秒將時(shí)間置為60秒
  94.                                                 {time_1=60000;}
  95.                                         }
  96.                         while(sub==0)                                   //如果第二個(gè)按鍵按下東西方向綠燈延續(xù)時(shí)間減1秒
  97.                                         {        
  98.                                                 DelayMS(10);
  99.                                                 while(sub==0);
  100.                                                 time_1=time_1-1000;
  101.                                                 if(time_1<=0)           //當(dāng)時(shí)間減到小于或等于0時(shí)將時(shí)間置為1秒
  102.                                                 {time_1=1000;}
  103.                                         }
  104.                     while(add2==0)                                   //如果第三個(gè)按鍵按下南北方向綠燈延續(xù)時(shí)間加1秒
  105.                                         {        
  106.                                                 DelayMS(10);
  107.                                                 while(add2==0);
  108.                                                 time_2=time_2+1000;
  109.                                                 if(time_2>60000)   //當(dāng)時(shí)間超過(guò)60秒將時(shí)間置為60秒
  110.                                                 {time_2=60000;}
  111.                                         }
  112.                         while(sub2==0)                                   //如果第四個(gè)按鍵按下南北方向綠燈延續(xù)時(shí)間減1秒
  113.                                         {                                          
  114.                                                 DelayMS(10);
  115.                                                 while(sub2==0);
  116.                                                 time_2=time_2-1000;
  117.                                                 if(time_2<=0)           //當(dāng)時(shí)間減到小于或等于0時(shí)將時(shí)間置為1秒
  118.                                                 {time_2=1000;}
  119.                                         }
  120.            }
  121. }
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:863590 發(fā)表于 2021-12-11 21:04 | 只看該作者
就是不知道display函數(shù)要怎么設(shè)計(jì)呢,怎么才能跟紅綠燈的倒計(jì)時(shí)聯(lián)系起來(lái),
回復(fù)

使用道具 舉報(bào)

板凳
ID:863590 發(fā)表于 2021-12-11 21:04 | 只看該作者
有大佬指導(dǎo)一下嗎
回復(fù)

使用道具 舉報(bào)

無(wú)效樓層,該帖已經(jīng)被刪除
5#
無(wú)效樓層,該帖已經(jīng)被刪除
6#
無(wú)效樓層,該帖已經(jīng)被刪除
7#
ID:332444 發(fā)表于 2021-12-12 15:02 | 只看該作者
回復(fù)

使用道具 舉報(bào)

8#
ID:332444 發(fā)表于 2021-12-12 15:03 | 只看該作者
回復(fù)

使用道具 舉報(bào)

9#
ID:89515 發(fā)表于 2021-12-12 15:29 | 只看該作者
沒(méi)有寫(xiě)過(guò)這個(gè),但是我想你的紅綠燈總得有個(gè)參考吧!用定時(shí)器把倒計(jì)時(shí)程序?qū)懗鰜?lái)做時(shí)間參考,同時(shí)送顯。計(jì)時(shí)參數(shù)由相應(yīng)燈的時(shí)間規(guī)則決定,各色的燈做個(gè)標(biāo)志以參數(shù)形式寫(xiě)入時(shí)間函數(shù),同時(shí)控制定時(shí)器的開(kāi)關(guān)。這個(gè)難點(diǎn)就在于規(guī)則不在顯示上啊。我從新看了你的程序,時(shí)間相關(guān)程序用軟件模擬雖然不嚴(yán)謹(jǐn)?shù)珱](méi)問(wèn)題,可是時(shí)間變量直接耦合根本沒(méi)法顯示了,時(shí)間設(shè)置部分可以解決,關(guān)鍵的倒計(jì)時(shí)部分沒(méi)戲了。個(gè)人認(rèn)為必須得從新寫(xiě)。
display(燈標(biāo)志,延時(shí)時(shí)間)
{
         燈標(biāo)志=?;//確定是那個(gè)燈的延時(shí);
         寫(xiě)入定時(shí)器延時(shí)參數(shù);
         參數(shù)送顯示;//數(shù)碼管顯示函數(shù)
         開(kāi)啟定時(shí)器;
         注意時(shí)間參數(shù)清零時(shí)關(guān)閉定時(shí)器,為下一次定時(shí)做準(zhǔn)備。
         哪個(gè)地方需要延時(shí)就放在那個(gè)地方。
         如果確實(shí)需要更改時(shí)間參數(shù),可將其設(shè)定為全局變量,再用按鍵去控制就行了。
         
         
}

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

10#
ID:863590 發(fā)表于 2021-12-12 23:44 | 只看該作者
mengzhixinheng 發(fā)表于 2021-12-12 15:29
沒(méi)有寫(xiě)過(guò)這個(gè),但是我想你的紅綠燈總得有個(gè)參考吧!用定時(shí)器把倒計(jì)時(shí)程序?qū)懗鰜?lái)做時(shí)間參考,同時(shí)送顯。計(jì)時(shí) ...

謝謝你,我感覺(jué)我好像能理解到你的意思,我去試試試試
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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