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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2923|回復(fù): 4
收起左側(cè)

求助這個交通燈仿真圖的單片機源代碼

[復(fù)制鏈接]
回帖獎勵 50 黑幣 回復(fù)本帖可獲得 50 黑幣獎勵! 每人限 1 次
ID:252101 發(fā)表于 2017-11-27 10:33 | 顯示全部樓層 |閱讀模式
哪位大神能幫我看看有沒有這個圖的源代碼,小弟新人感激不盡
-1744fc35e121ab6a.jpg
回復(fù)

使用道具 舉報

ID:164602 發(fā)表于 2017-11-27 15:27 | 顯示全部樓層
你這個就是交通燈的電路嘛。
這有一個示例程序。不一定能配你的硬件,但可以參考的。它對應(yīng)電路如圖所示。
1.jpg 2.jpg

  1. #include<reg51.h>

  2. //--定義使用的IO口--//
  3. #define GPIO_DIG   P0
  4. #define GPIO_PLACE P1

  5. #define GPIO_TRAFFIC P2

  6. sbit RED10   = P2^0;   //上人行道紅燈
  7. sbit GREEN10 = P2^1;   //上人行道綠燈
  8. sbit RED11   = P2^2;
  9. sbit YELLOW11= P2^3;
  10. sbit GREEN11 = P2^4;

  11. sbit RED00   = P3^0;        //右人行道紅燈
  12. sbit GREEN00 = P3^1;        //右人行道綠燈
  13. sbit RED01   = P2^5;
  14. sbit YELLOW01= P2^6;
  15. sbit GREEN01 = P2^7;

  16. //--定義全局變量--//
  17. unsigned char code DIG_PLACE[8] = {
  18. 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位選控制   查表的方法控制
  19. unsigned char code DIG_CODE[17] = {
  20. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  21. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  22. //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼
  23. unsigned char DisplayData[8];
  24. //用來存放要顯示的8位數(shù)的值
  25. unsigned char Time, Second;                  //用來存放定時時間

  26. //--聲明全局函數(shù)--//
  27. void DigDisplay(); //動態(tài)顯示函數(shù)
  28. void Timer0Cofig(void);

  29. /*******************************************************************************
  30. * 函 數(shù) 名         : main
  31. * 函數(shù)功能                   : 主函數(shù)
  32. * 輸    入         : 無
  33. * 輸    出         : 無
  34. *******************************************************************************/

  35. void main(void)
  36. {
  37.         Second = 1;

  38.         Timer0Cofig();

  39.         while(1)
  40.         {
  41.                 if(Second == 70)
  42.                 {
  43.                         Second = 1;
  44.                 }

  45.                 //--寶田路通行,30秒--//
  46.                 if(Second < 31)
  47.                 {
  48.                         DisplayData[0] = 0x00;
  49.                         DisplayData[1] = 0x00;
  50.                         DisplayData[2] = DIG_CODE[(30 - Second) % 100 / 10];
  51.                         DisplayData[3] = DIG_CODE[(30 - Second) %10];
  52.                         DisplayData[4] = 0x00;
  53.                         DisplayData[5] = 0x00;
  54.                         DisplayData[6] = DisplayData[2];
  55.                         DisplayData[7] = DisplayData[3];
  56.                         DigDisplay();

  57.                         //--寶田路通行--//

  58.                         GPIO_TRAFFIC = 0xFF;  //將所有的燈熄滅
  59.                         RED00 = 1;
  60.                         GREEN00 = 1;

  61.                         GREEN11 = 0;    //寶田路綠燈亮                        
  62.                         GREEN10        = 0;    //寶田路人行道綠燈亮

  63.                         RED01 = 0;      //前進路紅燈亮
  64.                         RED00 = 0;      //前進路人行道紅燈亮
  65.                 }

  66.                 //--黃燈等待切換狀態(tài),5秒--//
  67.                 else if(Second < 36)
  68.                 {
  69.                         DisplayData[0] = 0x00;
  70.                         DisplayData[1] = 0x00;
  71.                         DisplayData[2] = DIG_CODE[(35 - Second) % 100 / 10];
  72.                         DisplayData[3] = DIG_CODE[(35 - Second) %10];
  73.                         DisplayData[4] = 0x00;
  74.                         DisplayData[5] = 0x00;
  75.                         DisplayData[6] = DisplayData[2];
  76.                         DisplayData[7] = DisplayData[3];
  77.                         DigDisplay();

  78.                         //--黃燈階段--//

  79.                         GPIO_TRAFFIC = 0xFF;  //將所有的燈熄滅
  80.                         RED00 = 1;
  81.                         GREEN00 = 1;

  82.                         YELLOW11 = 0;    //寶田路黃燈亮                        
  83.                         RED10        = 0;     //寶田路人行道紅燈亮

  84.                         YELLOW01 = 0;    //前進路紅燈亮
  85.                         RED00 = 0;       //前進路人行道紅燈亮
  86.                 }

  87.                 //--前進路通行--//
  88.                 else if(Second < 66)
  89.                 {
  90.                         DisplayData[0] = 0x00;
  91.                         DisplayData[1] = 0x00;
  92.                         DisplayData[2] = DIG_CODE[(65 - Second) % 100 / 10];
  93.                         DisplayData[3] = DIG_CODE[(65 - Second) %10];
  94.                         DisplayData[4] = 0x00;
  95.                         DisplayData[5] = 0x00;
  96.                         DisplayData[6] = DisplayData[2];
  97.                         DisplayData[7] = DisplayData[3];
  98.                         DigDisplay();

  99.                         //--黃燈階段--//

  100.                         GPIO_TRAFFIC = 0xFF;  //將所有的燈熄滅
  101.                         RED00 = 1;
  102.                         GREEN00 = 1;

  103.                         RED11 = 0;       //寶田路紅燈亮                        
  104.                         RED10 = 0;       //寶田路人行道紅燈亮

  105.                         GREEN01 = 0;     //前進路綠燈亮
  106.                         GREEN00 = 0;     //前進路人行道綠燈亮
  107.                 }

  108.                 //--黃燈等待切換狀態(tài),5秒--//
  109.                 else
  110.                 {
  111.                         DisplayData[0] = 0x00;
  112.                         DisplayData[1] = 0x00;
  113.                         DisplayData[2] = DIG_CODE[(70 - Second) % 100 / 10];
  114.                         DisplayData[3] = DIG_CODE[(70 - Second) %10];
  115.                         DisplayData[4] = 0x00;
  116.                         DisplayData[5] = 0x00;
  117.                         DisplayData[6] = DisplayData[2];
  118.                         DisplayData[7] = DisplayData[3];
  119.                         DigDisplay();

  120.                         //--黃燈階段--//

  121.                         GPIO_TRAFFIC = 0xFF;  //將所有的燈熄滅
  122.                         RED00 = 1;
  123.                         GREEN00 = 1;

  124.                         YELLOW11 = 0;    //寶田路黃燈亮                        
  125.                         RED10        = 0;     //寶田路人行道紅燈亮

  126.                         YELLOW01 = 0;    //前進路紅燈亮
  127.                         RED00 = 0;       //前進路人行道紅燈亮
  128.                 }
  129.         }                                
  130. }

  131. /*******************************************************************************
  132. * 函 數(shù) 名         : DigDisplay
  133. * 函數(shù)功能                   : 使用數(shù)碼管顯示
  134. * 輸    入         : 無
  135. * 輸    出         : 無
  136. *******************************************************************************/

  137. void DigDisplay()
  138. {
  139.         unsigned char i;
  140.         unsigned int j;


  141.         for(i=0; i<8; i++)
  142.         {
  143.                 GPIO_PLACE = DIG_PLACE[i];           //發(fā)送位選
  144.                 GPIO_DIG = DisplayData[i];     //發(fā)送段碼
  145.                 j = 10;                                                   //掃描間隔時間設(shè)定
  146.                 while(j--);        
  147.                 GPIO_DIG = 0x00;               //消隱
  148.         }
  149. }

  150. /*******************************************************************************
  151. * 函 數(shù) 名         : Timer0Cofig
  152. * 函數(shù)功能                   : 配置定時器
  153. * 輸    入         : 無
  154. * 輸    出         : 無
  155. *******************************************************************************/

  156. void Timer0Cofig(void)
  157. {
  158.         TMOD = 0x01;     //定時器0選擇工作方式1
  159.     TH0  = 0x3C;         //設(shè)置初始值,定時50MS
  160.     TL0  = 0xB0;
  161.     EA   = 1;             //打開總中斷
  162.     ET0  = 1;                 //打開定時器0中斷
  163.     TR0  = 1;                 //啟動定時器0        
  164. }

  165. /*******************************************************************************
  166. * 函 數(shù) 名         : Timer0
  167. * 函數(shù)功能                   : 定時器0中斷函數(shù)
  168. * 輸    入         : 無
  169. * 輸    出         : 無
  170. *******************************************************************************/                  

  171. void Timer0() interrupt 1
  172. {
  173.         TH0 = 0x3C;         //設(shè)置初始值
  174.         TL0 = 0xB0;
  175.         Time++;
  176.         if(Time == 20)
  177.         {
  178.                 Second ++;
  179.                 Time = 0;
  180.         }
  181. }
復(fù)制代碼
回復(fù)

使用道具 舉報

ID:252941 發(fā)表于 2017-11-27 16:18 | 顯示全部樓層
#include<reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit renrh=P3^0;          //人行道右紅
sbit renrl=P3^1;// 人行道右綠
sbit rensh=P2^0;  //人上下紅燈
sbit rensl=P2^1; //人上下綠燈
sbit cherh=P2^5; //車左右紅燈
sbit chery=P2^6; //車左右黃燈
sbit cherl=P2^7; //車左右綠燈
sbit chesh=P2^2; //車上下紅燈
sbit chesy=P2^3;//車上下黃燈
sbit chesl=P2^4;//車上下綠燈
uint8 smgduan[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
                             0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
uint8 smgwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uint8 sec,sum;
uint8 smgshu[8];
void delay(uint16 i)
{
          while(i--);
}
void init0()   //定時器0初始化
{
        TMOD=0x01;
        TH1=0x3c;
        TL1=0xb0;  //定時50ms
        TR0=1;
        ET0=1;
        EA=1;
}
void smgsaomiao()  //掃描顯示
{
        uint8 i;
        for(i=0;i<8;i++)
        {
                P0=smgshu[i];
                P1=smgwei[i];
                delay(300);
        }
}
void main()
{       
        init0();
        sec=1;
        while(1)
        {
                if(sec==70)       
                {
                        sec=1;
                }
                if(sec<31)
                {
                        P2=0xff;
                        P3=0xff;
                        renrh=0;
                        chesl=0;
                        cherh=0;
                        rensl=0;
                        smgshu[0]=0x00;
                        smgshu[1]=0x00;
                        smgshu[2]=smgduan[(30-sec)/10];
                        smgshu[3]=smgduan[(30-sec)%10];
                        smgshu[4]=0x00;
                        smgshu[5]=0x00;
                        smgshu[6]=smgduan[(30-sec)/10];
                        smgshu[7]=smgduan[(30-sec)%10];
                        smgsaomiao();               
                }
                if(sec>30&&sec<36)
                {
                        P3=0xff;
                        P2=0xff;
                        renrh=0;
                        chesy=0;
                        chery=0;
                        rensh=0;
                        smgshu[0]=0x00;
                        smgshu[1]=0x00;
                        smgshu[2]=smgduan[(36-sec)/10];
                        smgshu[3]=smgduan[(36-sec)%10];
                        smgshu[4]=0x00;
                        smgshu[5]=0x00;
                        smgshu[6]=smgduan[(36-sec)/10];
                        smgshu[7]=smgduan[(36-sec)%10];
                        smgsaomiao();       
                }
                if(sec>35&&sec<66)
                {
                        P3=0xff;
                        P2=0xff;
                        renrl=0;
                        chesh=0;
                        cherl=0;
                        rensh=0;
                        smgshu[0]=0x00;
                        smgshu[1]=0x00;
                        smgshu[2]=smgduan[(65-sec)/10];
                        smgshu[3]=smgduan[(65-sec)%10];
                        smgshu[4]=0x00;
                        smgshu[5]=0x00;
                        smgshu[6]=smgduan[(65-sec)/10];
                        smgshu[7]=smgduan[(65-sec)%10];
                        smgsaomiao();       
                }
                if(sec>65&&sec<71)
                {
                        P3=0xff;
                        P2=0xff;
                        renrh=0;
                        chesy=0;
                        chery=0;
                        rensh=0;
                        smgshu[0]=0x00;
                        smgshu[1]=0x00;
                        smgshu[2]=smgduan[(70-sec)/10];
                        smgshu[3]=smgduan[(70-sec)%10];
                        smgshu[4]=0x00;
                        smgshu[5]=0x00;
                        smgshu[6]=smgduan[(70-sec)/10];
                        smgshu[7]=smgduan[(70-sec)%10];
                        smgsaomiao();       
                }
        }               
}
void time0() interrupt 1
{
        TH1=0x3c;
        TL1=0xb0;
        sum++;
        if(sum==20)       
        {
                sum=0;
                sec++;
        }
}
回復(fù)

使用道具 舉報

ID:252101 發(fā)表于 2017-11-27 18:42 | 顯示全部樓層
Wuwds 發(fā)表于 2017-11-27 16:18
#include
typedef unsigned char uint8;
typedef unsigned int uint16;

老鐵,這個代碼是我的那個圖的嗎
回復(fù)

使用道具 舉報

ID:142559 發(fā)表于 2017-11-27 20:18 | 顯示全部樓層
這就是一個交通燈的仿真,你可以在網(wǎng)上搜交通燈程序。不過最好還是自己寫
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99热在线观看精品 | 99久热 | 国产一级片 | 国产成人精品久久二区二区91 | 欧美一级片在线观看 | 欧美不卡一区 | 一本色道精品久久一区二区三区 | 国产日韩一区二区三区 | 久久综合久久自在自线精品自 | aa级毛片毛片免费观看久 | 国产成人精品午夜视频免费 | 日韩色图视频 | 麻豆精品一区二区三区在线观看 | 香蕉视频黄色 | 人碰人操 | 欧美男人天堂 | 成人国产在线观看 | 国内精品久久影院 | 天堂男人av | 久久成 | 国产精品久久久久一区二区三区 | 日韩精品久久久久 | 美日韩精品 | 国产在线中文字幕 | 久久草视频 | www日韩欧美 | 一区二区不卡 | 午夜精品福利视频 | av毛片在线 | 国产一在线| 99综合| 国产精品99久久久久久宅男 | 农村妇女毛片精品久久久 | 午夜三区 | 情侣av| 久久成人精品视频 | 国产精品一区二区三区在线 | www亚洲精品 | 久久久久久久久久久丰满 | 日韩欧美三区 | 亚洲精品福利视频 |