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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5736|回復: 2
打印 上一主題 下一主題
收起左側

基于stm32的交通燈源程序與Proteus仿真

  [復制鏈接]
跳轉到指定樓層
樓主
熱乎乎的交通燈來了,基于stm32的交通燈,有仿真和源代碼,歡迎大家下載---加油中國

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機源程序如下:
  1. #include "stm32f103_config.h"


  2. #define LED595_DATA           PBout(7)
  3. #define LED595_CLK                PBout(8)
  4. #define LED595_LATCH          PBout(9)

  5. #define DXR  PBout(0)
  6. #define DXG  PBout(1)
  7. #define DXY  PBout(10)

  8. #define NBR  PBout(11)
  9. #define NBG  PBout(12)
  10. #define NBY  PBout(13)

  11. unsigned char duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

  12. void io_Init(void)//初始化GPIO
  13. {
  14.         GPIO_InitTypeDef  GPIO_InitStructure;        

  15.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);         

  16.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;        //GPIO_PIN0-16               
  17.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  
  18.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 
  19.         GPIO_Init(GPIOB, &GPIO_InitStructure);                                         
  20.         GPIO_ResetBits(GPIOB,GPIO_Pin_All);               
  21. }


  22. void _delay_ms(int i)//延時函數
  23. {
  24.         u16 j;
  25.         while(i--)
  26.         {
  27.                 for(j=0;j<5600;j++);
  28.         }
  29. }

  30. void _delay_us(int i)//延時函數
  31. {
  32.         u16 j;
  33.         while(i--)
  34.         {
  35.                 for(j=0;j<5;j++);
  36.         }
  37. }

  38. void inp(unsigned char OutData)
  39. {
  40.         unsigned char i;
  41.         for(i=0; i<8; i++) //將8位數據按位發送,先發送高字節后發送低字節
  42.         {
  43.                 LED595_CLK=0;//時鐘線低電平
  44.                 _delay_us(1);
  45.                 if( (OutData & 0x80) == 0x80)//判斷數據高低位
  46.                 {
  47.                         LED595_DATA=1;                   //數據線高電平
  48.                 }
  49.                 else
  50.                 {
  51.                          LED595_DATA=0;          //數據線低電平
  52.                 }
  53.                 _delay_us(1);
  54.                 OutData = OutData << 1;         //數據左移1位
  55.                 LED595_CLK=1;                 //時鐘線高電平
  56.                 _delay_us(1);
  57.         }
  58. }

  59. void LED595SendData(int a,int b)
  60. {
  61.         inp(duan[b%10]);
  62.         inp(duan[b/10]);
  63.         
  64.         inp(duan[a%10]);
  65.         inp(duan[a/10]);
  66.         
  67.     LED595_LATCH=0;  
  68.         _delay_us(1);
  69.     LED595_LATCH=1;
  70.         _delay_us(1);
  71. }


  72. int main(void)//主函數
  73. {        
  74.         int state=0;
  75.         int num=30;
  76.         
  77.         
  78.         RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_5);//系統時鐘初始化
  79.         io_Init();//引腳初始化
  80.         uart_init(9600);//串口初始化
  81.         sendDat(0x02);sendDat(0x04);
  82.         while(1)
  83.         {
  84.                 num--;//倒計時
  85.                 if(num==0)
  86.                 {
  87.                         state++;if(state==4)state=0;//四種模式對應
  88.                         /*
  89.                         (1)南北紅燈 東西綠燈(30秒)
  90.                         (2)南北紅燈 東西黃燈(05秒)
  91.                         (3)南北綠燈 東西紅燈(30秒)
  92.                         (4)南北黃燈 東西紅燈(05秒)

  93.                         */
  94.                         switch (state)//更新時間
  95.                         {
  96.                                 case 0: num=30;sendDat(0x02);sendDat(0x04);break;
  97.                                 case 1: num= 5;sendDat(0x03);sendDat(0x04);break;
  98.                                 case 2: num=30;sendDat(0x01);sendDat(0x05);break;
  99.                                 case 3: num= 5;sendDat(0x01);sendDat(0x06);break;
  100.                         }
  101.                 }
  102.                
  103.                 switch (state)//根據狀態點亮LED
  104.                 {
  105.                         case 0: DXR=0;DXY=0;DXG=1;NBR=1;NBY=0;NBG=0;break;
  106.                         case 1: DXR=0;DXY=1;DXG=0;NBR=1;NBY=0;NBG=0;break;
  107.                         case 2: DXR=1;DXY=0;DXG=0;NBR=0;NBY=0;NBG=1;break;
  108.                         case 3: DXR=1;DXY=0;DXG=0;NBR=0;NBY=1;NBG=0;break;
  109.                 }
  110.                
  111.                 switch (state)//根據狀態顯示當前倒計時
  112.                 {
  113.                         case 0: LED595SendData(num,num+5);break;
  114.                         case 1: LED595SendData(num,num);break;
  115.                         case 2: LED595SendData(num+5,num);break;
  116.                         case 3: LED595SendData(num,num);break;
  117.                 }
  118.                                 
  119.                 _delay_ms(100);//延時  速度快慢調這里
  120.         }

  121. }
復制代碼

所有資料51hei提供下載:
stm32交通燈.7z (265.03 KB, 下載次數: 231)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:855592 發表于 2020-12-8 16:32 | 只看該作者
仿真可以用 但是為什么將程序下載到我的單片機開發板中只有蜂鳴器在響,但是屏幕上沒有任何的顯示,是不是電路不兼容?
回復

使用道具 舉報

板凳
ID:934446 發表于 2021-6-16 21:00 | 只看該作者
樓主你好 為什么示波器上沒有任何顯示呢,,這個示波器應該可以去掉吧
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情精品久久久久 | 日韩在线小视频 | 国产精品激情在线 | 久久综合激情 | 精精国产xxxx视频在线播放 | 亚洲国产成人av好男人在线观看 | 久视频在线 | 伊人最新网址 | 一区精品视频在线观看 | 91久久久久| 日韩在线一区视频 | 成人av电影免费在线观看 | 久久久久国 | 国产成在线观看免费视频 | 日韩精品无码一区二区三区 | 青青草免费在线视频 | 在线国产一区二区 | 91国内产香蕉 | 成人午夜影院 | 在线a视频网站 | 一区二区三区亚洲视频 | 精品久久久久久久久久久久久久久久久 | 偷拍自拍在线观看 | 久久久久久免费观看 | 日韩欧美在线观看视频 | h视频在线观看免费 | 国产精品久久久免费 | 毛片一区| 天天爽夜夜爽精品视频婷婷 | 91av免费版 | 岛国av免费看 | 精品国产免费一区二区三区五区 | 久久久精 | 欧美日韩精品专区 | 99reav| 欧美成人a∨高清免费观看 老司机午夜性大片 | 91久久国产综合久久 | 中文字幕一区二区三区乱码图片 | 久久精品伊人 | 国产 日韩 欧美 制服 另类 | 日韩视频精品在线 |