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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

十字路口路燈模擬stm32源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:301517 發表于 2018-4-24 18:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
十字路口路燈模擬

stm32單片機源程序如下:
  1. /* Includes ------------------------------------------------------------------*/
  2. #include "stm32f10x.h"

  3. GPIO_InitTypeDef GPIO_InitStructure;                                                                  

  4. #define KEY_0         GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0)

  5. #define KEY_1         GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1)  

  6. #define KEY_2         GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_2)

  7. #define LED_EW_R_ON         GPIO_SetBits(GPIOA, GPIO_Pin_3);  
  8. #define LED_EW_R_OFF         GPIO_ResetBits(GPIOA, GPIO_Pin_3);

  9. #define LED_EW_G_ON         GPIO_SetBits(GPIOA, GPIO_Pin_4);  
  10. #define LED_EW_G_OFF        GPIO_ResetBits(GPIOA, GPIO_Pin_4);

  11. #define LED_EW_Y_ON         GPIO_SetBits(GPIOA, GPIO_Pin_5);  
  12. #define LED_EW_Y_OFF         GPIO_ResetBits(GPIOA, GPIO_Pin_5);  

  13. #define LED_NS_R_ON         GPIO_SetBits(GPIOC, GPIO_Pin_6);  
  14. #define LED_NS_R_OFF         GPIO_ResetBits(GPIOC, GPIO_Pin_6);

  15. #define LED_NS_G_ON         GPIO_SetBits(GPIOC, GPIO_Pin_7);  
  16. #define LED_NS_G_OFF        GPIO_ResetBits(GPIOC, GPIO_Pin_7);

  17. #define LED_NS_Y_ON         GPIO_SetBits(GPIOC, GPIO_Pin_8);  
  18. #define LED_NS_Y_OFF         GPIO_ResetBits(GPIOC, GPIO_Pin_8);

  19. char number=0,type=1; //閃爍次數,操作類型變量

  20. void RCC_Configuration(void);
  21. void LED_Config(void);
  22. void Delay(int x);
  23. void Traffic(void);
  24. void fShowLight1(void);
  25. void fShowLight2(void);
  26. void fShowLight3(void);
  27. void offLights(void);

  28. /****************************************************************************
  29. * 名    稱:void LED_Config(void)
  30. * 功    能:LED 控制初始化函數
  31. * 入口參數:無
  32. * 出口參數:無
  33. * 說    明:
  34. * 調用方法:無
  35. ****************************************************************************/
  36. void LED_Config(void){
  37.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABLE);       

  38.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
  39.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  40.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  41.   GPIO_Init(GPIOA, &GPIO_InitStructure);                                         

  42.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_0|GPIO_Pin_2;
  43.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  44.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  45.   GPIO_Init(GPIOB, &GPIO_InitStructure);

  46.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
  47.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  48.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  49.   GPIO_Init(GPIOC, &GPIO_InitStructure);
  50. }

  51. /****************************************************************************
  52. * 名    稱:int main(void)
  53. * 功    能:主函數
  54. * 入口參數:無
  55. * 出口參數:無
  56. * 說    明:
  57. * 調用方法:無
  58. ****************************************************************************/
  59. int main(void)
  60. {
  61.   RCC_Configuration();                                   //系統時鐘配置
  62.   LED_Config();                                                        //LED控制配置
  63.   while (1)
  64.   {
  65.           if(KEY_0&&!KEY_1&&!KEY_2){
  66.                  Traffic();
  67.         }  
  68.         else if(KEY_1&&!KEY_0&&!KEY_2){
  69.                  fShowLight1();
  70.         }  
  71.         else if(KEY_2&&!KEY_0&&!KEY_1){
  72.                  fShowLight3();
  73.         }
  74.         else{
  75.                  offLights();
  76.         }
  77.   }
  78. }

  79. /****************************************************************************
  80. * 名    稱:void RCC_Configuration(void)
  81. * 功    能:系統時鐘配置為72MHZ
  82. * 入口參數:無
  83. * 出口參數:無
  84. * 說    明:
  85. * 調用方法:無
  86. ****************************************************************************/
  87. void RCC_Configuration(void)
  88. {   
  89.   SystemInit();
  90. }

  91. /****************************************************************************
  92. * 名    稱:void Delay(int x)
  93. * 功    能:延時函數
  94. * 入口參數:無
  95. * 出口參數:無
  96. * 說    明:
  97. * 調用方法:無
  98. ****************************************************************************/
  99. void Delay(int x)
  100. {
  101.         char i;
  102.         while(x--) for(i=0;i<120;i++);
  103. }
  104. /****************************************************************************
  105. * 名    稱:void Traffic(void)
  106. * 功    能:交通燈切換函數
  107. * 入口參數:無
  108. * 出口參數:無
  109. * 說    明:
  110. * 調用方法:無
  111. ****************************************************************************/
  112. void Traffic(void)
  113. {
  114.         switch(type)
  115.         {
  116.         case 1: //東西向綠燈與南北向紅燈亮
  117.                 LED_EW_R_OFF;LED_EW_Y_OFF;LED_EW_G_ON;
  118.                 LED_NS_R_ON;LED_NS_Y_OFF;LED_NS_G_OFF;
  119.                 Delay(200);
  120.                 type=2;
  121.                 break;
  122.         case 2: //東西向黃燈閃爍,綠燈關閉
  123.                 LED_EW_Y_ON;LED_EW_G_OFF;
  124.                 Delay(10);
  125.                 LED_EW_Y_OFF;LED_EW_G_OFF;
  126.                 Delay(10);
  127.                 if(++number!=3) return; //閃爍3次
  128.                 number=0;
  129.                 type=3;
  130.                 break;
  131.         case 3: //東西向紅燈,南北向綠燈亮
  132.                 LED_EW_R_ON;LED_EW_Y_OFF;LED_EW_G_OFF;
  133.                 LED_NS_R_OFF;LED_NS_Y_OFF;LED_NS_G_ON;
  134.                 Delay(200);
  135.                 type=4;
  136.                 break;
  137.         case 4: //南北向黃燈閃爍3次
  138.                 LED_NS_Y_ON;LED_NS_G_OFF;
  139.                 Delay(10);
  140.                 LED_NS_Y_OFF;LED_NS_G_OFF;
  141.                 Delay(10);               
  142.                 if(++number!=3) return;
  143.                 number=0;
  144.                 type=1;
  145.         }
  146. }
  147. /****************************************************************************
  148. * 名    稱:void fShowLight1(void)
  149. * 功    能:六燈走馬效果
  150. * 入口參數:無
  151. * 出口參數:無
  152. * 說    明:
  153. * 調用方法:無
  154. ****************************************************************************/
  155. void fShowLight1(void)
  156. {
  157.         LED_EW_R_ON;LED_EW_G_OFF;LED_EW_Y_OFF;
  158.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_ON;
  159.         Delay(200);
  160.         LED_EW_R_ON;LED_EW_G_ON;LED_EW_Y_OFF;
  161.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_OFF;
  162.         Delay(200);
  163.         LED_EW_R_OFF;LED_EW_G_ON;LED_EW_Y_ON;
  164.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_OFF;
  165.         Delay(200);
  166.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_ON;
  167.         LED_NS_R_ON;LED_NS_G_OFF;LED_NS_Y_OFF;
  168.         Delay(200);
  169.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_OFF;
  170.         LED_NS_R_ON;LED_NS_G_ON;LED_NS_Y_OFF;
  171.         Delay(200);
  172.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_OFF;
  173.         LED_NS_R_OFF;LED_NS_G_ON;LED_NS_Y_ON;
  174.         Delay(200);
  175. }
  176. /****************************************************************************
  177. * 名    稱:void fShowLight2(void)
  178. * 功    能:六燈閃爍效果
  179. * 入口參數:無
  180. * 出口參數:無
  181. * 說    明:
  182. * 調用方法:無
  183. ****************************************************************************/
  184. void fShowLight2(void)
  185. {
  186.         LED_EW_R_ON;LED_EW_G_OFF;LED_EW_Y_OFF;
  187.         LED_NS_R_ON;LED_NS_G_OFF;LED_NS_Y_OFF;
  188.         Delay(200);
  189.         LED_EW_R_OFF;LED_EW_G_ON;LED_EW_Y_OFF;
  190.         LED_NS_R_OFF;LED_NS_G_ON;LED_NS_Y_OFF;
  191.         Delay(200);
  192.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_ON;
  193.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_ON;
  194.         Delay(200);
  195. }
  196. /****************************************************************************
  197. * 名    稱:void fShowLight3(void)
  198. * 功    能:六燈反復流水效果
  199. * 入口參數:無
  200. * 出口參數:無
  201. * 說    明:
  202. * 調用方法:無
  203. ****************************************************************************/
  204. void fShowLight3(void)
  205. {
  206.         LED_EW_R_ON;LED_EW_G_OFF;LED_EW_Y_OFF;
  207.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_OFF;
  208.         Delay(200);
  209.         LED_EW_R_OFF;LED_EW_G_ON;LED_EW_Y_OFF;
  210.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_OFF;
  211.         Delay(200);
  212.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_ON;
  213.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_OFF;
  214.         Delay(200);
  215.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_OFF;
  216.         LED_NS_R_ON;LED_NS_G_OFF;LED_NS_Y_OFF;
  217.         Delay(200);
  218.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_OFF;
  219.         LED_NS_R_OFF;LED_NS_G_ON;LED_NS_Y_OFF;
  220.         Delay(200);
  221.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_OFF;
  222.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_ON;
  223.         Delay(200);
  224.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_OFF;
  225.         LED_NS_R_OFF;LED_NS_G_ON;LED_NS_Y_OFF;
  226.         Delay(200);
  227.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_OFF;
  228.         LED_NS_R_ON;LED_NS_G_OFF;LED_NS_Y_OFF;
  229.         Delay(200);
  230.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_ON;
  231.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_OFF;
  232.         Delay(200);
  233.         LED_EW_R_OFF;LED_EW_G_ON;LED_EW_Y_OFF;
  234.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_OFF;
  235.         Delay(200);
  236. }
  237. /****************************************************************************
  238. * 名    稱:void offLights(void)
  239. * 功    能:關燈
  240. * 入口參數:無
  241. * 出口參數:無
  242. * 說    明:
  243. * 調用方法:無
  244. ****************************************************************************/
  245. void offLights(void){
  246.         LED_EW_R_OFF;LED_EW_G_OFF;LED_EW_Y_OFF;
  247.         LED_NS_R_OFF;LED_NS_G_OFF;LED_NS_Y_OFF;
  248. }
  249. /******************* (C) COPYRIGHT 2011 奮斗STM32 *****END OF FILE****/
復制代碼

所有資料51hei提供下載:
GPIO2.rar (278.27 KB, 下載次數: 8)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久精品一区二区 | 久久视频精品 | 天天草狠狠干 | 日韩国产高清在线观看 | 97精品超碰一区二区三区 | 四虎伊人 | 国产激情视频在线 | 天天干夜夜 | 日韩一级电影免费观看 | 日韩高清成人 | 日韩视频免费看 | 久草.com | 国产精品国产精品国产专区不卡 | 成人久久18免费网站图片 | 亚洲精品2区 | 国产日韩精品一区二区三区 | 精品中文在线 | 亚洲综合天堂 | 色男人天堂av | 亚洲精品电影网在线观看 | 久久中文一区二区 | 日韩av在线一区 | 国产精品爱久久久久久久 | 一区二区三区四区国产 | 在线观看国产精品视频 | 日韩精品一区二区三区中文字幕 | www.久久国产精品 | 国产视频精品区 | 欧美一区二区免费视频 | 久久精品国产一区二区三区不卡 | 日韩成人影院在线观看 | 97av视频在线 | 成人国内精品久久久久一区 | 精品国产伦一区二区三区观看体验 | 粉嫩一区二区三区四区公司1 | 波多野结衣一区二区 | 青青草av在线播放 | 日韩福利| 精品99爱视频在线观看 | 国产免费xxx | 亚洲一区二区在线播放 |