久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 51單片機交通燈 紅綠燈設計 程序+電路圖+PROTUES仿真下載 [打印本頁]

作者: xuwei    時間: 2015-6-12 00:43
標題: 51單片機交通燈 紅綠燈設計 程序+電路圖+PROTUES仿真下載


程序預覽:
1.main.c 文件:
  1. #define _MAIN_C
  2. #include "use.h"
  3. #include "main.h"
  4. #include "time.h"
  5. #include "key.h"
  6. bit flag1s;
  7. uchar count1s,NS_time,WE_time;
  8. uchar GreenTime=30,RedTime=35;
  9. uchar index=0;
  10. enum eStaSysterm StaSysterm=NormalRun;

  11. void main()
  12. {
  13.         EA=1;                                                                  //開總中斷
  14.         InintTimer0();                                                  //初始化定時器0
  15.         while(1)
  16.         {       
  17.                 LEDScan();                                                  //數碼管即LED掃描
  18.                 KeyDriver();                                          //鍵盤驅動掃描
  19.                 if(flag1s)
  20.                 {
  21.                         flag1s=0;
  22.                         NS_time--;                                          //紅綠燈倒計時時間減
  23.                         WE_time--;
  24.                 }       
  25.         }
  26. }
  27. void InintTimer0()
  28. {
  29.         TMOD=0X01;
  30.         TH0=0X4C;
  31.         TL0=0X00;
  32.         ET0=1;
  33.         TR0=1;
  34. }
  35. void Timer0() interrupt 1
  36. {
  37.         TH0=0XBB;
  38.         TL0=0X00;
  39.         KeyScan();
  40.         if(++count1s<50)        return;
  41.         count1s=0;
  42.         if(StaSysterm==NormalRun) flag1s=1;         //非正常運行時,不紅綠燈數值不減一       
  43. }
  44. void LEDScan()
  45. {
  46.          if(StaSysterm==NormalRun)                         //正常運行
  47.          {
  48.                 if(NS_time==0 || WE_time==0)
  49.                 {
  50.                         switch(index)                                 //改變紅綠燈的狀態,狀態機
  51.                         {
  52.                                 case 0:
  53.                                 {
  54.                                         index=1;
  55.                                         NS_time=GreenTime;
  56.                                         WE_time=RedTime;
  57.                                         P2=0X09;       
  58.                                 }break;
  59.                                 case 1:
  60.                                 {
  61.                                         index=2;
  62.                                         NS_time=RedTime-GreenTime;
  63.                                         P2=0X0A;       
  64.                                 }break;
  65.                                 case 2:
  66.                                 {
  67.                                         index=3;
  68.                                         NS_time=RedTime;
  69.                                         WE_time=GreenTime;
  70.                                         P2=0X24;       
  71.                                 }break;
  72.                                 case 3:
  73.                                 {
  74.                                         index=0;
  75.                                         WE_time=RedTime-GreenTime;
  76.                                         P2=0X14;       
  77.                                 }break;
  78.                                 default:break;
  79.                         }
  80.                 }
  81.                 Seg_Display(NS_time/10,0);
  82.                 Seg_Display(NS_time%10,1);
  83.                 Seg_Display(WE_time/10,2);
  84.                 Seg_Display(WE_time%10,3);
  85.         }
  86.         else if(StaSysterm==UrgentRun)
  87.         {                                                                   //緊急情況運行
  88.                 P2=0x12;
  89.                 Delayms(200);
  90.                 P2=0x00;
  91.                 Delayms(200);
  92.         }
  93.         else                                                           //設置調整紅綠燈時間
  94.         {
  95.                 index=0;
  96.                 NS_time=0;
  97.                 WE_time=0;         //重新初始化紅綠燈并運行
  98.                 UrgentScan();
  99.         }
  100. }
復制代碼


2. key.c文件:
  1. #include "use.h"
  2. #include "time.h"
  3. sbit KEY1=P3^4;
  4. sbit KEY2=P3^5;
  5. sbit KEY3=P3^6;
  6. sbit KEY4=P3^7;
  7. uchar keystr[]={1,1,1,1},backup[]={1,1,1,1};
  8. void KeyScan()                                                                //鍵盤掃描
  9. {
  10.         static uchar keybuf[4]={0XFF,0XFF,0XFF,0XFF};
  11.         uchar i;
  12.         keybuf[0]=(keybuf[0]<<1)|KEY1;
  13.         keybuf[1]=(keybuf[1]<<1)|KEY2;
  14.         keybuf[2]=(keybuf[2]<<1)|KEY3;
  15.         keybuf[3]=(keybuf[3]<<1)|KEY4;
  16.         for(i=0;i<4;i++)
  17.         {
  18.                 if(keybuf[i]==0X00)                        keystr[i]=0;
  19.                 else if(keybuf[i]==0XFF)         keystr[i]=1;
  20.         }
  21. }
  22. void KeyAction(uchar key)                                                 //鍵盤執行
  23. {
  24.         switch(key)
  25.         {
  26.                 case 0:        SetModel();                break;       
  27.                 case 1:        ADDTime();                break;
  28.                 case 2:        SUBTime();                break;
  29.                 case 3: UrgentModel();        break;
  30.                           default:break;
  31.         }
  32. }
  33. void KeyDriver()                                                                 //鍵盤驅動
  34. {
  35.         uchar i;
  36.         for(i=0;i<4;i++)
  37.         {
  38.                 if(keystr[i]!=backup[i])
  39.                 {
  40.                         if(keystr[i]==0)
  41.                                 KeyAction(i);//這里適當修改程序可以實現組合按鍵的效果
  42.                 }
  43.                 backup[i]=keystr[i];
  44.         }
  45. }
復制代碼



3. time.c文件:
  1. #include "use.h"
  2. #include "main.h"

  3. uchar code seg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  4. uchar code seg_we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  5. uchar BackupGreen,BackupRed,CopyLight;

  6. void Seg_Display(uchar number,uchar wei)        //數碼管動態顯示程序
  7. {
  8.         P0=0XFF;
  9.         we=1;
  10.         we=0;
  11.         P0=seg_du[number];
  12.         du=1;
  13.         du=0;
  14.         P0=seg_we[wei];
  15.         we=1;
  16.         we=0;
  17. }
  18. void UrgentScan()                                                    //緊急情況運行掃描
  19. {
  20.         Seg_Display(BackupGreen/10,0);
  21.         Seg_Display(BackupGreen%10,1);
  22.         Seg_Display(BackupRed/10,2);
  23.         Seg_Display(BackupRed%10,3);
  24. }
  25. void SetModel()                                                                //紅綠燈設置模式
  26. {
  27.         if(StaSysterm==NormalRun)
  28.         {
  29.                 StaSysterm=ResetGreen;  //狀態機
  30.             BackupGreen=GreenTime;
  31.             BackupRed=RedTime;       
  32.                 CopyLight=P2;                        //對數據進行備份
  33.                 P2=0X09;
  34.         }
  35.         else if(StaSysterm==ResetGreen)
  36.         {
  37.             StaSysterm=ResetRed;
  38.         }
  39.         else if(StaSysterm==ResetRed)
  40.         {
  41.                 StaSysterm=NormalRun;
  42.                 P2=CopyLight;                        //恢復數據
  43.         }
  44. }
  45. void ADDTime()                                                            //紅綠燈時間加
  46. {
  47.         if(StaSysterm==ResetGreen)
  48.         {
  49.                 BackupGreen++;
  50.                 if(BackupGreen>=BackupRed)           BackupGreen=BackupRed;
  51.         }
  52.         else if(StaSysterm==ResetRed)
  53.         {
  54.             BackupRed++;
  55.         }
  56. }
  57. void SUBTime()                                                                   //紅綠燈時間減
  58. {
  59.         if(StaSysterm==ResetGreen)
  60.         {
  61.                 BackupGreen--;
  62.        
  63.         }
  64.         else if(StaSysterm==ResetRed)
  65.         {
  66.             BackupRed--;
  67.                 if(BackupGreen>=BackupRed)           BackupRed=BackupGreen;
  68.         }
  69. }

  70. /****************
  71. void Confirm()                                                                   //備用函數
  72. {
  73.         if(StaSysterm!=NormalRun && StaSysterm!=UrgentRun)
  74.         {
  75.                 GreenTime=BackupGreen;
  76.                 RedTime=BackupRed;
  77.                 StaSysterm=NormalRun;
  78.         }

  79. }
  80. **************/
  81. void UrgentModel()                                                           //緊急模式
  82. {
  83.         if(StaSysterm==NormalRun)
  84.         {       
  85.                 StaSysterm=UrgentRun;
  86.                 CopyLight=P2;                         //對數據進行備份
  87.                 P0=0XFF;
  88.                 we=1;
  89.                 we=0;
  90.         }
  91.         else if(StaSysterm==UrgentRun)
  92.         {       
  93.                 StaSysterm=NormalRun;
  94.                 P2=CopyLight;                           //恢復數據
  95.         }
  96.         else if(StaSysterm==ResetGreen || StaSysterm==ResetRed)
  97.         {
  98.                 StaSysterm=NormalRun;
  99.                 GreenTime=BackupGreen;
  100.             RedTime=BackupRed;                   //重新設置紅綠燈時間
  101.         }
  102. }
復制代碼

完整程序代碼,及其電路圖和仿真文件下載: 加強版紅綠燈.rar (70.65 KB, 下載次數: 1710)

作者: jyzas    時間: 2015-7-11 11:00
不錯,支持下
作者: lb921464846    時間: 2015-10-10 00:56
不錯,如果加入轉彎信號燈就更好了
作者: zzc    時間: 2015-11-11 13:44
求匯編程序!!!

作者: lkaka525    時間: 2015-12-24 20:36
匯編程序的有沒有啊
作者: 雪玉寐影    時間: 2015-12-28 07:08
不錯,這個也算比較完整的了
作者: 午夜屠豬男    時間: 2016-2-25 18:43
雪玉寐影 發表于 2015-12-28 07:08
不錯,這個也算比較完整的了

請問這個解壓包下載之后,里面的文件是用什么軟件打開啊。是proteus嗎

作者: 心若孤城    時間: 2016-3-9 17:29
很不錯,支持一下
作者: 心若孤城    時間: 2016-3-9 17:29
定喜愛
作者: lm1259032699    時間: 2016-3-28 16:38
下下來學習一下
作者: wangweiforever    時間: 2016-3-30 18:57
支持支持,正在做課程設計~
作者: jx26229    時間: 2016-4-7 01:16
支持支持,正在找,謝謝
作者: 199601    時間: 2016-5-27 14:43

匯編程序的有沒有
作者: 199601    時間: 2016-5-27 14:48
匯編程序的有沒有
作者: lj37397438    時間: 2016-6-2 17:52
keyi de
作者: huangxiao    時間: 2016-6-11 09:07
很好,值得下載
作者: danpianji0    時間: 2016-6-23 14:25
求匯編程序
作者: clearlove    時間: 2016-7-5 15:03
多個c文件怎么弄到一起啊
作者: clearlove    時間: 2016-7-5 15:10
怎么有錯誤啊  是什么情況啊
作者: 粑粑粑粑翔    時間: 2016-7-7 19:32
謝謝樓主
作者: 粑粑粑粑翔    時間: 2016-7-7 19:32
哈哈哈哈哈哈哈 謝謝樓主
作者: 安然_93921    時間: 2016-8-10 16:03
嗯 不多 多多學習
作者: mengkang    時間: 2016-9-5 23:57
不錯 樓主辛苦了
作者: Tristina    時間: 2016-11-13 21:06
贊一個
作者: lzn312    時間: 2016-11-20 12:03
先謝樓主~
作者: xueyufeilong    時間: 2016-11-27 16:58
挺不錯的
作者: 783    時間: 2016-12-10 19:40
學習中,如果能有多點注釋就更好了
作者: baixuchang    時間: 2016-12-22 17:16
學到了,感謝樓主
作者: cyd    時間: 2016-12-22 22:44
可以的
作者: 437534778    時間: 2016-12-28 18:03
不錯  支持下
作者: sfdsfdvxcv    時間: 2016-12-29 16:06
午夜屠豬男 發表于 2016-2-25 18:43
**** 作者被禁止或刪除 內容自動屏蔽 ****

是的,proteus和keil兩個軟件結合
作者: sfdsfdvxcv    時間: 2016-12-29 16:07
很好,功能也比較完整
作者: 11927868942    時間: 2016-12-31 11:53
學習中
作者: 芝麻綠豆麻瓜    時間: 2017-1-1 18:36
真棒 ,好人一生平安。支持

作者: 楊文峰    時間: 2017-1-9 11:28
標題: 沒錯沒錯,是我自己馬虎了
本帖最后由 楊文峰 于 2017-1-9 15:20 編輯

仿真執行有錯誤怎么搞?
作者: 楊文峰    時間: 2017-1-9 15:19
楊文峰 發表于 2017-1-9 11:28
仿真執行有錯誤怎么搞?

對不起,文件都沒錯,是我馬虎了!
作者: ken8lee    時間: 2017-1-11 19:10
謝謝樓主的分析,很不錯
作者: zc196    時間: 2017-2-27 14:11
哎喲不錯啊
作者: sophy_1026    時間: 2017-3-7 12:11
很給力!挺好用的
作者: 白楊    時間: 2017-3-30 09:01
學習中,很實用
作者: 13434805884    時間: 2017-4-5 11:04
不錯,學習中,如果能有多點注釋就更好了
作者: 13434805884    時間: 2017-4-5 11:05

 學習中,很實用
作者: 小潤龍    時間: 2017-4-5 23:20
好像學學交通燈

作者: 小潤龍    時間: 2017-4-6 19:43
數碼管電路是如何連接的,我的為什么一一只不行,求大神賜教
作者: 小潤龍    時間: 2017-4-6 19:45
午夜屠豬男 發表于 2016-2-25 18:43
**** 作者被禁止或刪除 內容自動屏蔽 ****

是的,用proteus和keil共同打開
作者: 武起風云    時間: 2017-4-10 11:03
東西很好,收下了
作者: cjc342019965    時間: 2017-4-14 09:55
干的漂亮
作者: heliu    時間: 2017-4-19 16:29
為什么加減時間退出設置,時間還是原來的
作者: 王者MS    時間: 2017-4-25 11:06
這個壓縮包里面都有什么,只有這一個交通燈的嗎
作者: 13434805884    時間: 2017-5-8 15:07
heliu 發表于 2017-4-19 16:29
為什么加減時間退出設置,時間還是原來的

設置好時間之后要按確定鍵才可以保存的,就是緊急按鈕那個鍵
作者: 無色無味    時間: 2017-5-16 08:52
電源是5V,直流
作者: 無色無味    時間: 2017-5-22 09:37
這個數碼管用那個型號啊,必須是5
作者: 無色無味    時間: 2017-5-22 09:38
這個數碼管用那個型號啊,必須是5V哇,我在仿真上面是5v,可是實際的數碼管好像不好找
作者: 1174722871    時間: 2017-6-4 17:15
l厲害了  樓主
作者: 1019SYY    時間: 2017-6-10 14:32
求匯編程序
作者: Tt1111    時間: 2017-6-11 14:32
非常給力啊,絕世號資料
作者: asd1235    時間: 2017-6-14 16:41
把這個稍稍改進一下,說不定會更好
作者: CSIR    時間: 2017-6-17 23:49
謝謝分享了餓
作者: hsy2966    時間: 2017-6-18 08:59
用vb 遍的調色板:vb 調色板
Private Sub Form_Load()

Form1.BackColor = RGB(255, 255, 255)
End Sub

Private Sub HScroll1_Change()
Form1.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value)
Label4.Caption = HScroll1.Value
End Sub

Private Sub HScroll2_Change()
Form1.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value)
  Label5.Caption = HScroll2.Value
End Sub

Private Sub HScroll3_Change()
Form1.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value)
  Label6.Caption = HScroll3.Value
End Sub

作者: nliang    時間: 2017-6-20 16:19
不錯,支持下
作者: cc778178521    時間: 2017-6-21 09:16
如果我說我是為了作業來的,會不會被人打死……
作者: anniejs    時間: 2017-6-26 09:10
我按照樓主的復制,為什么我的keil顯示的是 Target not created?
求大神解答!!!!!
作者: 魏祥    時間: 2017-6-27 21:45
共享資料的黑幣獎勵!
作者: q741125422    時間: 2017-7-17 10:50
我正在找鎖存器的編程方法,沒想到直接找到了這樣的好程序,連圖都是畫好了的。謝謝樓主的分享!
作者: cclinjiyan    時間: 2017-8-28 20:51
不錯。支持一下
作者: doudou2292    時間: 2017-9-5 13:08
支持一下

作者: doudou2292    時間: 2017-9-6 20:46
數碼管顯示亂碼怎么班

作者: sjwss    時間: 2017-9-12 15:23
非常給力!
作者: 強的隆冬強    時間: 2017-9-18 09:14
不錯 樓主辛苦了
作者: ffsdsf    時間: 2017-9-19 20:28
很強大
作者: ffsdsf    時間: 2017-9-19 20:28
我就是其中的兩個原件找不到
作者: asm    時間: 2017-9-22 19:24
程序流程圖怎么畫啊
作者: asm    時間: 2017-9-22 19:24
確實不錯,很棒
作者: uyhnyrh    時間: 2017-9-24 09:48
最近正在學習,很實用
作者: F.romZero    時間: 2017-10-8 18:54
很好,來學習下
作者: lsfzxc    時間: 2017-10-18 11:38
好                好用
作者: 小豬后兒    時間: 2017-10-19 14:42
同樣為了作業而來,謝謝作者
作者: g34567s    時間: 2017-10-22 11:31
可以的
作者: choi_hui    時間: 2017-11-3 18:02
支持支持

作者: 弘毅無非    時間: 2017-11-5 21:36
很強,學習一下
作者: john0317    時間: 2017-11-7 15:26
謝謝樓主分享,正需要……
作者: LEMONLEMON    時間: 2017-11-28 10:10
main.c(2): 警告 C318: can't open file 'use.h'
main.c(3): 警告 C318: can't open file 'main.h'
main.c(4): 警告 C318: can't open file 'time.h'
main.c(5): 警告 C318: can't open file 'key.h'
打不開文件是什么原因呀
作者: LEMONLEMON    時間: 2017-11-28 10:31
還是有錯誤呀
作者: LEMONLEMON    時間: 2017-11-28 10:48
源文件怎么編寫呀
作者: fionx    時間: 2017-12-4 21:47
大贊。。。。。。。。。。。。。
作者: dhii1234    時間: 2017-12-7 09:00

學習中,很實用
作者: 鄒小宇    時間: 2017-12-8 14:52
這個數碼管是共陰極還是共陽極的
作者: 666eee    時間: 2017-12-14 21:53
不能下載
作者: tbjgdtcn    時間: 2017-12-15 14:45
不錯,支持下
作者: he1915128840    時間: 2017-12-17 18:33
很給力
作者: lyfawsome    時間: 2017-12-19 23:57
感謝樓主 完成作業了
作者: 晨夕    時間: 2018-1-3 10:41
很不錯
作者: zz251049105    時間: 2018-1-3 12:27
正在學習 希望下載后能學會原理
作者: zz251049105    時間: 2018-1-3 12:56
LEMONLEMON 發表于 2017-11-28 10:10
main.c(2): 警告 C318: can't open file 'use.h'
main.c(3): 警告 C318: can't open file 'main.h'
main. ...

請問你解決了嗎
作者: 1308190907    時間: 2018-1-3 17:56
很棒哦
作者: jiankang333    時間: 2018-1-3 20:39
厲害了
作者: wglove    時間: 2018-1-4 09:32
我得好好看看
作者: adas123    時間: 2018-1-6 18:36
啊啊啊
作者: 張君碩    時間: 2018-1-7 16:11
挺不錯的
作者: imbakyubb    時間: 2018-1-10 17:39
very good




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产一区二区 | 久久精品二区 | 天天操天天天干 | 97在线超碰 | 国产一区二区成人 | 久久久精 | 午夜一区 | 国产精品a久久久久 | 精品久久精品 | 亚洲欧美日韩中文字幕一区二区三区 | 色播99 | 中文字幕乱码一区二区三区 | 亚洲成av人片在线观看 | 久久男人 | 18av在线播放| 久久手机视频 | 日韩成人免费av | 国产麻豆一区二区三区 | 97超级碰碰| 国产草草视频 | 国产va| 久久精品综合 | 久久av一区二区三区 | 婷婷久| 伊人超碰| 国产日韩在线观看一区 | 欧美在线a| 国产一区三区在线 | 毛片免费看 | 亚洲国产精品va在线看黑人 | 欧美精品久久久久久 | 午夜看片网站 | 国产伦精品 | 毛片视频网站 | 日韩一区二区在线看 | 精品欧美乱码久久久久久 | 欧美精品一区二区三区四区 在线 | www.4567| 99re热精品视频 | 很很干很很日 | 成人一区av偷拍 |