找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機交通燈設(shè)計全套資料 實物 仿真 論文都有 4個數(shù)碼管顯示

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:198674 發(fā)表于 2017-5-9 16:41 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
我買的一個很詳細(xì)的交通燈設(shè)計資料分享給大家(實物 仿真 原理圖 pcb 開題報告 論文一應(yīng)俱全,該有的都有了,看下面的目錄列表就知道了):

1
、單片機是通用的無論51還是52、無論stc還是at都一樣,引腳功能都一樣,原理圖和程序也是一樣的。
2、原理圖中的. sch等格式是要用protel99se打開的,沒有軟件的不要緊,我已幫您轉(zhuǎn)換成word格式和pdf格式的了。
3、程序中的.c文件可以用記事本打開,就是程序了。其他的是寫程序是自動生成的,沒什么用的。
4、可以按照正面布局,盡量不要按照實物的背面焊接,很容易看錯,要按照原理圖焊接,不要按照仿真圖焊接,因為仿真只是模擬一個現(xiàn)象。
5、關(guān)于資料好評后發(fā)送~~好評后記得向客服要哦~~~,我們的論文是針對這個設(shè)計寫的,不包修改,不包查重,望知悉。


全部資料包含以下目錄(在本帖附件都都可下載):
Altium Designer Sunner畫圖軟件學(xué)習(xí)視頻
Altium Designer Sunner畫圖軟件安裝視頻
AltiumDesignerSummer9 畫圖軟件安裝包
C語言視頻教程
KEIL 軟件安裝視頻
keil4軟件安裝包 開發(fā)工具地址
MCU 單片機芯片資料
PCB圖
Protel 99 軟件安裝包
Protel 99 軟件安裝視頻
Protel 99畫圖軟件學(xué)習(xí)視頻
Proteus ISIS  仿真軟件學(xué)習(xí)視頻
Proteus 軟件安裝包
PROTEUS仿真軟件的安裝方法
交通燈開題報告
仿真圖(使用PROTEUS軟件打開文件里面后綴為DSN的文件)
元件清單
制作過程
單片機初學(xué)者視頻教程 郭天祥老師
單片機初學(xué)者視頻教程 霖鋒老師
單片機初學(xué)者視頻程序講解教程
單片機程序下載軟件 STC-ISP-V4.83
原理圖
參考論文
實物照片
工程新建  程序下載 視頻教程
開發(fā)工具地址 keil4軟件安裝包
操作視頻地址
畢設(shè)答辯技巧
焊接注意事項和調(diào)試講解
程序
程序講解視頻
答辯常見問題解答
設(shè)計資料
使用前必讀.doc
原理圖 打開方式.txt
程序打開方法.txt




  1. #include <reg52.h>                 //調(diào)用單片機頭文件
  2. #define uchar unsigned char   //宏定義"uchar"代替"unsigned char"。
  3. #define uint  unsigned int          //宏定義"uint"用來定義無符號整型數(shù)。


  4. //數(shù)碼管段選定義 0     1    2    3           4           5        6         7          8           9       
  5. uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  6. //                                           A        B         C          D           E   F        不顯示
  7.                                          0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};         //斷碼       

  8. uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};       
  9. uchar smg_i = 4;    //顯示數(shù)碼管的個位數(shù)

  10. //數(shù)碼管位選定義
  11. sbit smg_we1 = P2^0;            //數(shù)碼管位選定義
  12. sbit smg_we2 = P2^1;
  13. sbit smg_we3 = P3^6;
  14. sbit smg_we4 = P3^7;


  15. char dx_s = 0;        //東西  南北 倒計時變量
  16. sbit dx_red    = P2^4;            //東西紅燈
  17. sbit dx_green  = P2^3;                //東西綠燈
  18. sbit dx_yellow = P2^2;                //東西黃燈

  19. sbit nb_red    = P2^7;                //南北紅燈
  20. sbit nb_green  = P2^6;                //南北綠燈
  21. sbit nb_yellow = P2^5;                //南北黃燈       

  22. uchar flag_jtd_mode;  //交通燈的模式 根據(jù)時間
  23. bit flag_1s = 0;
  24. bit flag_500ms;
  25. bit flag_dx_nb;                 //東西南北模式
  26. uchar flag_5m_value;
  27. uchar i;
  28. uchar flag_alarm;        //模式
  29. uchar dx_time = 30,nb_time = 20;   //東西、南北的時間
  30. uchar flag_jdgz ;     //交通管制


  31. /***********************數(shù)碼位選函數(shù)*****************************/
  32. void smg_we_switch(uchar i)
  33. {
  34.         switch(i)
  35.         {
  36.                 case 0: smg_we1 = 0;  smg_we2 = 1; smg_we3 = 1;  smg_we4 = 1; break;
  37.                 case 1: smg_we1 = 1;  smg_we2 = 0; smg_we3 = 1;  smg_we4 = 1; break;
  38.                 case 2: smg_we1 = 1;  smg_we2 = 1; smg_we3 = 0;  smg_we4 = 1; break;
  39.                 case 3: smg_we1 = 1;  smg_we2 = 1; smg_we3 = 1;  smg_we4 = 0; break;
  40.         }       
  41. }


  42. /********************************************************************
  43. * 名稱 : delay_1ms()
  44. * 功能 : 延時1ms函數(shù)
  45. * 輸入 : q
  46. * 輸出 : 無
  47. ***********************************************************************/
  48. void delay_1ms(uint q)
  49. {
  50.         uint i,j;
  51.         for(i=0;i<q;i++)
  52.                 for(j=0;j<110;j++);
  53. }


  54. /********************************************************************
  55. * 名稱 : display()
  56. * 功能 : 數(shù)碼管顯示
  57. * 輸入 : 無
  58. * 輸出 : 無
  59. ***********************************************************************/
  60. void display()
  61. {
  62.         uchar i;
  63.         for(i=0;i<smg_i;i++)
  64.         {               
  65.                 P0 = 0xff;                  //消隱
  66.                 smg_we_switch(i);            //位選
  67.                 P0 = dis_smg[i];          //段選          
  68.                 delay_1ms(3);
  69.         }
  70. }

  71. /*********************定時器0、定時器1初始化******************/
  72. void time0_init()          
  73. {
  74.         EA  = 1;                   //開總中斷
  75.         TMOD = 0X11;          //定時器0、定時器1工作方式1
  76.         ET0 = 1;                  //開定時器0中斷
  77.         TR0 = 1;                  //允許定時器0定時
  78. //        ET1 = 1;                  //開定時器1中斷
  79. //        TR1 = 1;                  //允許定時器1定時       
  80. }

  81. /*********************交通燈處理函數(shù)*********************************/
  82. void jiaotongdeng_dis()
  83. {
  84.         if(flag_1s == 1)
  85.         {
  86.                 flag_1s = 0;
  87.                 if(dx_s == 0)
  88.                 {
  89.                         if(flag_dx_nb == 1)
  90.                                 dx_s = nb_time;          //南北時間
  91.                         else
  92.                                 dx_s = dx_time;          //東西時間
  93.                         flag_dx_nb = ~flag_dx_nb;
  94.                 }
  95.                 dx_s --;
  96.         }
  97.         dis_smg[0] = smg_du[dx_s % 10] ;
  98.         dis_smg[1] = smg_du[dx_s / 10] ;
  99.         dis_smg[2] = smg_du[dx_s % 10] ;
  100.         dis_smg[3] = smg_du[dx_s / 10] ;

  101. /***********************南北時間*********************************/
  102.                 if(flag_dx_nb == 0)  
  103.                 {
  104.                         if(dx_s > 5)
  105.                         {
  106.                                 dx_red    = 1;  //滅
  107.                                 dx_green  =        0;        //亮
  108.                                 dx_yellow = 1;        //滅
  109.                                 nb_red    = 0;  //亮
  110.                                 nb_green  =        1;        //滅
  111.                                 nb_yellow = 1;        //滅
  112.                                 flag_5m_value = 0;       
  113.                         }else if(dx_s <= 5)                 //當(dāng)小于5秒時  黃燈要閃了
  114.                         {
  115.                                 dx_red    = 1;    //滅
  116.                                 dx_green  =        1;          //滅
  117.                                 nb_red    = 0;    //亮
  118.                                 nb_green  =        1;          //滅
  119.                                 nb_yellow = 1;          //滅
  120.                                 if(flag_500ms == 0)
  121.                                 {
  122.                                         dx_yellow = 0;//亮       
  123.                                 }
  124.                                 else
  125.                                 {
  126.                                         dx_yellow = 1;//滅       
  127.                                 }
  128.                         }
  129.                 }
  130. /***********************東西時間*********************************/
  131.                 if(flag_dx_nb == 1)  
  132.                 {
  133.                         if(dx_s > 5)
  134.                         {
  135.                                 dx_red    = 0;     //亮
  136.                                 dx_green  =        1;           //滅
  137.                                 dx_yellow = 1;           //滅
  138.                                 nb_red    = 1;     //滅
  139.                                 nb_green  =        0;           //亮
  140.                                 nb_yellow = 1;           //滅
  141.                                 flag_5m_value = 0;       
  142.                         }else if(dx_s <= 5)                 //當(dāng)小于5秒時  黃燈要閃了
  143.                         {
  144.                                 dx_red    = 0;     //滅
  145.                                 dx_green  =        1;           //滅
  146.                                 dx_yellow = 1;           //滅
  147.                                 nb_red    = 1;     //滅
  148.                                 nb_green  =        1;           //滅
  149.                                 if(flag_500ms == 0)           //黃燈閃爍
  150.                                 {
  151.                                         nb_yellow = 0;        //亮       
  152.                                 }
  153.                                 else
  154.                                 {
  155.                                         nb_yellow = 1;        //滅       
  156.                                 }
  157.                         }
  158.         }                       
  159. }

  160. /********************獨立按鍵程序*****************/
  161. uchar key_can;         //按鍵值

  162. void key()         //獨立按鍵程序
  163. {
  164.         static uchar key_new;
  165.         key_can = 20;                   //按鍵值還原
  166.         P1 |= 0x1f;
  167.         if((P1 & 0x1f) != 0x1f)                //按鍵按下
  168.         {
  169.                 delay_1ms(1);                     //按鍵消抖動
  170.                 if(((P1 & 0x1f) != 0x1f) && (key_new == 1))
  171.                 {                                                //確認(rèn)是按鍵按下
  172.                         key_new = 0;
  173.                         switch(P1 & 0x1f)
  174.                         {
  175.                                 case 0x1e:  key_can = 1;  break;         //得到按鍵值
  176.                                 case 0x1d:  key_can = 2;  break;         //得到按鍵值
  177.                                 case 0x1b:  key_can = 3;  break;         //得到按鍵值
  178.                                 case 0x17:  key_can = 4;  break;         //得到按鍵值
  179.                         }
  180.                 }                       
  181.         }
  182.         else
  183.                 key_new = 1;       
  184. }

  185. uchar menu_1,flag_s;


  186. /********************設(shè)置函數(shù)*****************/
  187. void key_with()
  188. {
  189.         if(key_can == 4)   //交通管制按鍵
  190.         {
  191.                 flag_jdgz ++;
  192.                 if(flag_jdgz > 5)
  193.                         flag_jdgz = 0;       
  194.                 if(flag_jdgz == 1)         //  全部亮紅燈
  195.                 {
  196.                         dx_red    = 0;  //亮
  197.                         dx_green  =        1;        //滅
  198.                         dx_yellow = 1;        //滅
  199.                         nb_red    = 0;  //亮
  200.                         nb_green  =        1;        //滅
  201.                         nb_yellow = 1;        //滅                       
  202.                 }
  203.                 if(flag_jdgz == 2)         //  東西紅燈  南北綠燈
  204.                 {
  205.                         dx_red    = 0;  //亮
  206.                         dx_green  =        1;        //滅
  207.                         dx_yellow = 1;        //滅
  208.                         nb_red    = 1;  //滅
  209.                         nb_green  =        0;        //亮
  210.                         nb_yellow = 1;        //滅                       
  211.                 }
  212.                 if(flag_jdgz == 3)         //  南北紅燈  東西綠燈
  213.                 {
  214.                         dx_red    = 1;  //滅
  215.                         dx_green  =        0;        //亮
  216.                         dx_yellow = 1;        //滅
  217.                         nb_red    = 0;  //亮
  218.                         nb_green  =        1;        //滅
  219.                         nb_yellow = 1;        //滅                       
  220.                 }
  221.                 if(flag_jdgz == 4)         //  南北綠燈  東西綠燈
  222.                 {
  223.                         dx_red    = 1;  //滅
  224.                         dx_green  =        0;        //亮
  225.                         dx_yellow = 1;        //滅
  226.                         nb_red    = 1;  //滅
  227.                         nb_green  =        0;        //亮
  228.                         nb_yellow = 1;        //滅                       
  229.                 }
  230.                 if(flag_jdgz == 5)         //  南北黃燈  東西黃燈
  231.                 {
  232.                         dx_red    = 1;  //滅
  233.                         dx_green  =        1;        //滅
  234.                         dx_yellow = 0;        //亮
  235.                         nb_red    = 1;  //滅
  236.                         nb_green  =        1;        //滅
  237.                         nb_yellow = 0;        //亮                       
  238.                 }
  239.         }
  240.         if(key_can == 1)          //設(shè)置鍵
  241.         {
  242.                 menu_1 ++;
  243.                 if(menu_1 >= 3)
  244.                 {
  245.                         menu_1  = 0;
  246.                 }
  247.         }

  248.         if(menu_1 == 1)           //設(shè)置東西的時間
  249.         {
  250.                 if(key_can == 2)
  251.                 {
  252.                         dx_time ++ ;                //加1
  253.                         if(dx_time > 99)
  254.                                 dx_time = 99;
  255.                 }
  256.                 if(key_can == 3)
  257.                 {
  258.                         dx_time -- ;                //減1
  259.                         if(dx_time <= 10)
  260.                                 dx_time = 10;
  261.                 }
  262.                 dis_smg[0] = smg_du[10] ;        //顯示為A
  263.                 dis_smg[1] = smg_du[10] ;        //顯示為A
  264.                 dis_smg[2] = smg_du[dx_time % 10] ;                //顯示東西設(shè)置的時候
  265.                 dis_smg[3] = smg_du[dx_time / 10] ;       
  266.         }       
  267.         if(menu_1 == 2)           //設(shè)置南北的時間
  268.         {
  269.                 if(key_can == 2)
  270.                 {
  271.                         nb_time ++ ;                //加1
  272.                         if(nb_time > 99)
  273.                                 nb_time = 99;
  274.                 }
  275.                 if(key_can == 3)
  276.                 {
  277.                         nb_time -- ;                //減1
  278.                         if(nb_time <= 10)
  279.                                 nb_time = 10;
  280.                 }
  281.                 dis_smg[0] = smg_du[11] ;        //顯示為B
  282.                 dis_smg[1] = smg_du[11] ;        //顯示為B
  283.                 dis_smg[2] = smg_du[nb_time % 10] ;                //顯示東西設(shè)置的時候
  284.                 dis_smg[3] = smg_du[nb_time / 10] ;       
  285.         }
  286. }


  287. /********************************************************************
  288. * 名稱 : main()
  289. * 功能 : 實現(xiàn)燈的閃爍
  290. * 輸入 : 無
  291. * 輸出 : 無
  292. ***********************************************************************/
  293. void main()
  294. {
  295.         time0_init();
  296.         dx_s = nb_time;          //東西時間
  297.         while(1)
  298.         {
  299.                 key();
  300.                 if(key_can < 20)
  301.                         key_with();
  302. //                menu_dis();



  303. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

全部資料打包下載(非常詳細(xì)):
##單片機交通燈 4個數(shù)碼管.rar (14.67 MB, 下載次數(shù): 996)


評分

參與人數(shù) 4黑幣 +20 收起 理由
gqzjl + 5 共享資料的黑幣獎勵!
活得簡單 + 5 贊一個!
mimonarch + 5 共享資料的黑幣獎勵!
菜鳥小哥 + 5 很給力!

查看全部評分

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

使用道具 舉報

66#
ID:302325 發(fā)表于 2020-6-17 09:02 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

65#
ID:639106 發(fā)表于 2020-6-3 19:08 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報

64#
ID:748563 發(fā)表于 2020-5-11 10:43 | 只看該作者
好像可以了
回復(fù)

使用道具 舉報

63#
ID:748563 發(fā)表于 2020-5-10 19:12 | 只看該作者
有報錯啊
回復(fù)

使用道具 舉報

62#
ID:738054 發(fā)表于 2020-5-6 18:47 來自手機 | 只看該作者
有proteus文件嗎,可以直接打開仿真嗎
回復(fù)

使用道具 舉報

61#
ID:587535 發(fā)表于 2020-2-3 23:17 來自手機 | 只看該作者
這個挺不錯的
回復(fù)

使用道具 舉報

60#
ID:673133 發(fā)表于 2019-12-25 09:13 | 只看該作者
對新手很有幫助
回復(fù)

使用道具 舉報

59#
ID:667916 發(fā)表于 2019-12-21 21:22 | 只看該作者
程序代碼生成的.hex文件無法正常仿真,交通燈4位.hex文件才可以正常仿真
回復(fù)

使用道具 舉報

58#
ID:418929 發(fā)表于 2019-6-26 19:42 | 只看該作者
新人學(xué)習(xí)了。
回復(fù)

使用道具 舉報

57#
ID:561510 發(fā)表于 2019-6-13 10:04 | 只看該作者
很好,給力!
回復(fù)

使用道具 舉報

56#
ID:561435 發(fā)表于 2019-6-13 08:32 來自手機 | 只看該作者
幫我一個大忙,唯一的一個突破口在你這里得到解決
回復(fù)

使用道具 舉報

55#
ID:560985 發(fā)表于 2019-6-12 15:46 | 只看該作者
admin 發(fā)表于 2017-5-9 18:09
好資料,很全 51黑有你更精彩.

挺好的
回復(fù)

使用道具 舉報

54#
ID:536112 發(fā)表于 2019-6-7 12:17 | 只看該作者
很好,很給力
回復(fù)

使用道具 舉報

53#
ID:544094 發(fā)表于 2019-5-22 18:35 | 只看該作者
真心雷到了,樓主厲害了
回復(fù)

使用道具 舉報

52#
ID:537889 發(fā)表于 2019-5-20 13:13 | 只看該作者
程序運行到后面2個錯誤是什么意思

{SIZIL8G593K]2@[93T0LF6.png (18.44 KB, 下載次數(shù): 425)

{SIZIL8G593K]2@[93T0LF6.png
回復(fù)

使用道具 舉報

51#
ID:464230 發(fā)表于 2019-4-7 15:42 | 只看該作者
小小天天 發(fā)表于 2019-1-2 12:56
仿真文件夾的hex文件可以正常顯示交通燈,程序里面生成的hex文件正常顯示不了是什么情況

其實就是程序是有錯的,仿真里的hex文件是對的,程序怕是得自己改
回復(fù)

使用道具 舉報

50#
ID:493240 發(fā)表于 2019-3-25 14:35 | 只看該作者
很好用
回復(fù)

使用道具 舉報

49#
ID:494146 發(fā)表于 2019-3-19 18:29 | 只看該作者
真好 謝謝
回復(fù)

使用道具 舉報

48#
ID:443391 發(fā)表于 2019-3-5 10:43 | 只看該作者
小小天天 發(fā)表于 2019-1-2 12:56
仿真文件夾的hex文件可以正常顯示交通燈,程序里面生成的hex文件正常顯示不了是什么情況

我也是的
回復(fù)

使用道具 舉報

47#
ID:481501 發(fā)表于 2019-2-28 22:45 | 只看該作者
怎么打不開
回復(fù)

使用道具 舉報

46#
ID:471632 發(fā)表于 2019-2-25 10:55 | 只看該作者
夠詳細(xì)了,這個才是實用的交通信號燈
回復(fù)

使用道具 舉報

45#
ID:479216 發(fā)表于 2019-2-22 10:57 來自手機 | 只看該作者
感謝樓主,正要在考慮要做個什么
回復(fù)

使用道具 舉報

44#
ID:375250 發(fā)表于 2019-1-30 17:45 | 只看該作者

我也打不開
回復(fù)

使用道具 舉報

43#
ID:473748 發(fā)表于 2019-1-30 12:29 | 只看該作者
謝謝 謝謝
回復(fù)

使用道具 舉報

42#
ID:471573 發(fā)表于 2019-1-22 16:50 | 只看該作者
很好的資料啊,值得學(xué)習(xí)!
回復(fù)

使用道具 舉報

41#
ID:466918 發(fā)表于 2019-1-20 18:23 | 只看該作者
好東西,正好用
回復(fù)

使用道具 舉報

40#
ID:415314 發(fā)表于 2019-1-3 21:05 | 只看該作者
proteus的仿真程序跟文件夾程序里的c程序一樣嗎?
回復(fù)

使用道具 舉報

39#
ID:459442 發(fā)表于 2019-1-2 12:56 | 只看該作者
仿真文件夾的hex文件可以正常顯示交通燈,程序里面生成的hex文件正常顯示不了是什么情況
回復(fù)

使用道具 舉報

38#
ID:448896 發(fā)表于 2019-1-2 11:13 | 只看該作者
s1945077681 發(fā)表于 2018-12-13 22:09
請問下載后怎樣正確打開,我不懂,希望你可以為我解答

顯示擴展名 把.txt改成.rar
回復(fù)

使用道具 舉報

37#
ID:274121 發(fā)表于 2018-12-31 21:11 | 只看該作者
文章很有想象力,符合交通燈的指示習(xí)慣
回復(fù)

使用道具 舉報

36#
ID:435947 發(fā)表于 2018-12-26 23:22 | 只看該作者
給力!!
回復(fù)

使用道具 舉報

35#
ID:454340 發(fā)表于 2018-12-25 13:39 | 只看該作者

很詳細(xì),很好,對我的實習(xí)很有用
回復(fù)

使用道具 舉報

34#
ID:453357 發(fā)表于 2018-12-25 09:07 | 只看該作者
很有用的資料
回復(fù)

使用道具 舉報

33#
ID:432200 發(fā)表于 2018-12-23 09:33 | 只看該作者
admin 發(fā)表于 2017-5-9 23:38
是rar文件 我測試過

我下載下來不是rar
回復(fù)

使用道具 舉報

32#
ID:451382 發(fā)表于 2018-12-21 10:57 來自手機 | 只看該作者
很詳細(xì),很好,對我的實習(xí)很有用
回復(fù)

使用道具 舉報

31#
ID:449253 發(fā)表于 2018-12-18 20:15 | 只看該作者
admin 發(fā)表于 2017-5-9 23:38
是rar文件 我測試過

亂碼
回復(fù)

使用道具 舉報

30#
ID:449073 發(fā)表于 2018-12-18 19:09 | 只看該作者
大佬6666
回復(fù)

使用道具 舉報

29#
ID:399179 發(fā)表于 2018-12-18 13:02 來自手機 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報

28#
ID:352362 發(fā)表于 2018-12-17 14:34 | 只看該作者

借用  借用 大神
回復(fù)

使用道具 舉報

27#
ID:446582 發(fā)表于 2018-12-15 19:18 | 只看該作者
很詳細(xì),收藏,樓主辛苦了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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