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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機(jī)交通燈 紅綠燈設(shè)計(jì) 程序+電路圖+PROTUES仿真下載

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82781 發(fā)表于 2015-6-12 00:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式


程序預(yù)覽:
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();                                                  //初始化定時(shí)器0
  15.         while(1)
  16.         {       
  17.                 LEDScan();                                                  //數(shù)碼管即LED掃描
  18.                 KeyDriver();                                          //鍵盤驅(qū)動(dòng)掃描
  19.                 if(flag1s)
  20.                 {
  21.                         flag1s=0;
  22.                         NS_time--;                                          //紅綠燈倒計(jì)時(shí)時(shí)間減
  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;         //非正常運(yùn)行時(shí),不紅綠燈數(shù)值不減一       
  43. }
  44. void LEDScan()
  45. {
  46.          if(StaSysterm==NormalRun)                         //正常運(yùn)行
  47.          {
  48.                 if(NS_time==0 || WE_time==0)
  49.                 {
  50.                         switch(index)                                 //改變紅綠燈的狀態(tài),狀態(tài)機(jī)
  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.         {                                                                   //緊急情況運(yùn)行
  88.                 P2=0x12;
  89.                 Delayms(200);
  90.                 P2=0x00;
  91.                 Delayms(200);
  92.         }
  93.         else                                                           //設(shè)置調(diào)整紅綠燈時(shí)間
  94.         {
  95.                 index=0;
  96.                 NS_time=0;
  97.                 WE_time=0;         //重新初始化紅綠燈并運(yùn)行
  98.                 UrgentScan();
  99.         }
  100. }
復(fù)制代碼


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)                                                 //鍵盤執(zhí)行
  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()                                                                 //鍵盤驅(qū)動(dòng)
  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);//這里適當(dāng)修改程序可以實(shí)現(xiàn)組合按鍵的效果
  42.                 }
  43.                 backup[i]=keystr[i];
  44.         }
  45. }
復(fù)制代碼



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)        //數(shù)碼管動(dòng)態(tài)顯示程序
  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()                                                    //緊急情況運(yùn)行掃描
  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()                                                                //紅綠燈設(shè)置模式
  26. {
  27.         if(StaSysterm==NormalRun)
  28.         {
  29.                 StaSysterm=ResetGreen;  //狀態(tài)機(jī)
  30.             BackupGreen=GreenTime;
  31.             BackupRed=RedTime;       
  32.                 CopyLight=P2;                        //對數(shù)據(jù)進(jìn)行備份
  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;                        //恢復(fù)數(shù)據(jù)
  43.         }
  44. }
  45. void ADDTime()                                                            //紅綠燈時(shí)間加
  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()                                                                   //紅綠燈時(shí)間減
  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()                                                                   //備用函數(shù)
  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;                         //對數(shù)據(jù)進(jìn)行備份
  87.                 P0=0XFF;
  88.                 we=1;
  89.                 we=0;
  90.         }
  91.         else if(StaSysterm==UrgentRun)
  92.         {       
  93.                 StaSysterm=NormalRun;
  94.                 P2=CopyLight;                           //恢復(fù)數(shù)據(jù)
  95.         }
  96.         else if(StaSysterm==ResetGreen || StaSysterm==ResetRed)
  97.         {
  98.                 StaSysterm=NormalRun;
  99.                 GreenTime=BackupGreen;
  100.             RedTime=BackupRed;                   //重新設(shè)置紅綠燈時(shí)間
  101.         }
  102. }
復(fù)制代碼

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

評分

參與人數(shù) 22黑幣 +102 收起 理由
whbt51h + 12 很給力!
卡卡卡西 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
mimonarch + 5 回帖助人的獎(jiǎng)勵(lì)!
haha_haha + 4
vktpas + 3 贊一個(gè)!
陳見夏 + 5 贊一個(gè)!
Vvinsmoke + 3 共享資料的黑幣獎(jiǎng)勵(lì)!
xsy137158143 + 5 贊一個(gè)!
用戶名已被占用 + 5 很給力!
yinkun230 + 5 贊一個(gè)!
crazyol + 5 很給力!
46546541561 + 5 很給力!
許久先生 + 5 很給力!
qqqq1 + 1
眼睛睜大啦 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
nliang + 3 贊一個(gè)!
shanel + 5 絕世好帖!
xjjiangxin + 3
我不是我 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
Tristina + 5 很給力!
msifortinet + 5 學(xué)習(xí)中,如果能有多點(diǎn)注釋就更好了
huangxiao + 3 贊一個(gè)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏44 分享淘帖 頂50 踩1

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:82988 發(fā)表于 2015-7-11 11:00 | 只看該作者
不錯(cuò),支持下
回復(fù)

使用道具 舉報(bào)

板凳
ID:90378 發(fā)表于 2015-10-10 00:56 | 只看該作者
不錯(cuò),如果加入轉(zhuǎn)彎信號燈就更好了
回復(fù)

使用道具 舉報(bào)

地板
ID:95336 發(fā)表于 2015-11-11 13:44 | 只看該作者
求匯編程序!!!
回復(fù)

使用道具 舉報(bào)

5#
ID:100265 發(fā)表于 2015-12-24 20:36 來自手機(jī) | 只看該作者
匯編程序的有沒有啊
回復(fù)

使用道具 舉報(bào)

6#
ID:99525 發(fā)表于 2015-12-28 07:08 | 只看該作者
不錯(cuò),這個(gè)也算比較完整的了
回復(fù)

使用道具 舉報(bào)

7#
ID:106369 發(fā)表于 2016-2-25 18:43 | 只看該作者
雪玉寐影 發(fā)表于 2015-12-28 07:08
不錯(cuò),這個(gè)也算比較完整的了

請問這個(gè)解壓包下載之后,里面的文件是用什么軟件打開啊。是proteus嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:85227 發(fā)表于 2016-3-9 17:29 | 只看該作者
很不錯(cuò),支持一下
回復(fù)

使用道具 舉報(bào)

9#
ID:85227 發(fā)表于 2016-3-9 17:29 | 只看該作者
定喜愛
回復(fù)

使用道具 舉報(bào)

10#
ID:111153 發(fā)表于 2016-3-28 16:38 | 只看該作者
下下來學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

11#
ID:111474 發(fā)表于 2016-3-30 18:57 | 只看該作者
支持支持,正在做課程設(shè)計(jì)~
回復(fù)

使用道具 舉報(bào)

12#
ID:112635 發(fā)表于 2016-4-7 01:16 | 只看該作者
支持支持,正在找,謝謝
回復(fù)

使用道具 舉報(bào)

13#
ID:123509 發(fā)表于 2016-5-27 14:43 | 只看該作者

匯編程序的有沒有
回復(fù)

使用道具 舉報(bào)

14#
ID:123509 發(fā)表于 2016-5-27 14:48 | 只看該作者
匯編程序的有沒有
回復(fù)

使用道具 舉報(bào)

15#
ID:124737 發(fā)表于 2016-6-2 17:52 | 只看該作者
keyi de
回復(fù)

使用道具 舉報(bào)

16#
ID:126188 發(fā)表于 2016-6-11 09:07 | 只看該作者
很好,值得下載
回復(fù)

使用道具 舉報(bào)

17#
ID:127801 發(fā)表于 2016-6-23 14:25 | 只看該作者
求匯編程序
回復(fù)

使用道具 舉報(bào)

18#
ID:129302 發(fā)表于 2016-7-5 15:03 | 只看該作者
多個(gè)c文件怎么弄到一起啊
回復(fù)

使用道具 舉報(bào)

19#
ID:129302 發(fā)表于 2016-7-5 15:10 | 只看該作者
怎么有錯(cuò)誤啊  是什么情況啊
回復(fù)

使用道具 舉報(bào)

20#
ID:129595 發(fā)表于 2016-7-7 19:32 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報(bào)

21#
ID:129595 發(fā)表于 2016-7-7 19:32 | 只看該作者
哈哈哈哈哈哈哈 謝謝樓主
回復(fù)

使用道具 舉報(bào)

22#
ID:136440 發(fā)表于 2016-8-10 16:03 | 只看該作者
嗯 不多 多多學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

23#
ID:138549 發(fā)表于 2016-9-5 23:57 | 只看該作者
不錯(cuò) 樓主辛苦了
回復(fù)

使用道具 舉報(bào)

24#
ID:147666 發(fā)表于 2016-11-13 21:06 | 只看該作者
贊一個(gè)
回復(fù)

使用道具 舉報(bào)

25#
ID:148983 發(fā)表于 2016-11-20 12:03 | 只看該作者
先謝樓主~
回復(fù)

使用道具 舉報(bào)

26#
ID:150567 發(fā)表于 2016-11-27 16:58 | 只看該作者
挺不錯(cuò)的
回復(fù)

使用道具 舉報(bào)

27#
ID:153688 發(fā)表于 2016-12-10 19:40 | 只看該作者
學(xué)習(xí)中,如果能有多點(diǎn)注釋就更好了
回復(fù)

使用道具 舉報(bào)

28#
ID:156912 發(fā)表于 2016-12-22 17:16 | 只看該作者
學(xué)到了,感謝樓主
回復(fù)

使用道具 舉報(bào)

29#
ID:157017 發(fā)表于 2016-12-22 22:44 | 只看該作者
可以的
回復(fù)

使用道具 舉報(bào)

30#
ID:158425 發(fā)表于 2016-12-28 18:03 | 只看該作者
不錯(cuò)  支持下
回復(fù)

使用道具 舉報(bào)

31#
ID:158650 發(fā)表于 2016-12-29 16:06 | 只看該作者
午夜屠豬男 發(fā)表于 2016-2-25 18:43
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

是的,proteus和keil兩個(gè)軟件結(jié)合
回復(fù)

使用道具 舉報(bào)

32#
ID:158650 發(fā)表于 2016-12-29 16:07 | 只看該作者
很好,功能也比較完整
回復(fù)

使用道具 舉報(bào)

33#
ID:159030 發(fā)表于 2016-12-31 11:53 | 只看該作者
學(xué)習(xí)中
回復(fù)

使用道具 舉報(bào)

34#
ID:159227 發(fā)表于 2017-1-1 18:36 | 只看該作者
真棒 ,好人一生平安。支持
回復(fù)

使用道具 舉報(bào)

35#
ID:160856 發(fā)表于 2017-1-9 11:28 | 只看該作者

沒錯(cuò)沒錯(cuò),是我自己馬虎了

本帖最后由 楊文峰 于 2017-1-9 15:20 編輯

仿真執(zhí)行有錯(cuò)誤怎么搞?
回復(fù)

使用道具 舉報(bào)

36#
ID:160856 發(fā)表于 2017-1-9 15:19 | 只看該作者
楊文峰 發(fā)表于 2017-1-9 11:28
仿真執(zhí)行有錯(cuò)誤怎么搞?

對不起,文件都沒錯(cuò),是我馬虎了!
回復(fù)

使用道具 舉報(bào)

37#
ID:125593 發(fā)表于 2017-1-11 19:10 | 只看該作者
謝謝樓主的分析,很不錯(cuò)
回復(fù)

使用道具 舉報(bào)

38#
ID:166896 發(fā)表于 2017-2-27 14:11 | 只看該作者
哎喲不錯(cuò)啊
回復(fù)

使用道具 舉報(bào)

39#
ID:168780 發(fā)表于 2017-3-7 12:11 | 只看該作者
很給力!挺好用的
回復(fù)

使用道具 舉報(bào)

40#
ID:184702 發(fā)表于 2017-3-30 09:01 | 只看該作者
學(xué)習(xí)中,很實(shí)用
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 看特级黄色片 | 国产精品精品视频一区二区三区 | 在线播放中文字幕 | 免费黄网站在线观看 | 天天操天天拍 | 国产激情视频网 | 瑟瑟激情| 日本一区二区三区四区 | 国产精品久久片 | 91成人在线视频 | 久热精品视频 | 91中文视频| 国产特一级黄色片 | 999热精品视频 | 日韩a在线 | 91精品久久久久久久久中文字幕 | 国产精品视频在线播放 | 欧美亚洲成人网 | 日韩五月天 | 在线观看免费av网 | 日韩一区在线视频 | 丝袜久久 | 国产精品成人久久久久 | 免费观看av| 亚洲第一av | 亚洲a视 | 视频一区 亚洲 | 91精品国产综合久久福利软件 | 亚洲欧美激情精品一区二区 | 成人午夜免费福利视频 | 成人高清视频在线观看 | 久久久久综合 | 久久精品亚洲 | 成人在线中文字幕 | 午夜影院| 午夜影院污 | 狠狠躁夜夜躁人人爽天天高潮 | 精品一区二区在线观看 | 欧美亚洲国语精品一区二区 | 日韩在线视频网址 | 日韩精品久久久久久 |