找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于stm32的簡易紅綠燈語句

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:450868 發(fā)表于 2018-12-20 16:45 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
  1. //按鍵key1 設(shè)置紅燈時(shí)間
  2. 按鍵key2 設(shè)置綠燈時(shí)間
  3. 按鍵key3設(shè)置黃燈時(shí)間
  4. #include
  5. #include "sys.h"

  6. #include "delay.h"
  7. #include "usart.h"
  8. #include "stdlib.h"

  9. static int G=0,R=0,Y=0; //設(shè)置綠,紅,黃燈時(shí)間變量

  10. #include "lcd.h"
  11. #include "key.h"
  12. #include "time.h"

  13. //----------- 按鍵函數(shù)----------
  14. void scan_key1()
  15. {
  16. static u8 i,j;
  17. if(key1==0)
  18. {
  19. if(i==0)
  20. {
  21. j++;
  22. if(j>3)
  23. {
  24. i=1;j=0;
  25. R++;
  26. if(R>20)R=0;
  27. printf("key1 is inputed ");
  28. }
  29. }
  30. }
  31. else
  32. {
  33. i=j=0;
  34. }
  35. }

  36. void scan_key2()
  37. {
  38. static u8 i,j;
  39. if(key2==0)
  40. {
  41. if(i==0)
  42. {
  43. j++;
  44. if(j>3)
  45. {
  46. i=1;j=0;
  47. G++;
  48. if(G>20)G=0;
  49. printf("key2 is inputed. ");
  50. }
  51. }
  52. }
  53. else
  54. {
  55. i=j=0;
  56. }
  57. }

  58. void scan_key3()
  59. {
  60. static u8 i,j;
  61. if(key3==1)
  62. {
  63. if(i==0)
  64. {
  65. j++;
  66. if(j>3)
  67. {
  68. i=1;j=0;
  69. Y++;
  70. if(Y>20)Y=0;
  71. printf("key3 is inputed. ");
  72. }
  73. }
  74. }
  75. else
  76. {
  77. i=j=0;
  78. }
  79. }


  80. //各指示燈顯示秒數(shù)函數(shù)
  81. void LED_RED(u8 k)
  82. {
  83. LCD_ShowNum(120,55,k,2,16);
  84. }
  85. void LED_YELLOW(u8 k)
  86. {
  87. LCD_ShowNum(120,145,k,2,16);
  88. }
  89. void LED_GREEN(u8 k)
  90. {
  91. LCD_ShowNum(120,235,k,2,16);
  92. }


  93. //-----定時(shí)設(shè)置函數(shù)-------
  94. void LED_SET_GREEN(u8 k)
  95. {
  96. LCD_ShowNum(160,235,k,2,16);

  97. }
  98. void LED_SET_YELLOW(u8 k)
  99. {
  100. LCD_ShowNum(160,145,k,2,16);
  101. }
  102. void LED_SET_RED(u8 k)
  103. {
  104. LCD_ShowNum(160,55,k,2,16);
  105. }

  106. //-----定時(shí)器中斷函數(shù)---掃描按鍵和顯示設(shè)定值用----
  107. void TIM3_IRQHandler(void)
  108. {
  109. if(TIM3->SR&0x0001)
  110. {

  111. scan_key1();
  112. scan_key2();
  113. scan_key3();
  114. LED_SET_RED(R);
  115. LED_SET_GREEN(G);
  116. LED_SET_YELLOW(Y);
  117. }
  118. TIM3->SR=~(1<<0);
  119. }

  120. //------主函數(shù)-----------
  121. int main(void)
  122. {
  123. u16 code; //TFT驅(qū)動芯片代號
  124. int i;
  125. Stm32_Clock_Init(9);
  126. delay_init(72);
  127. uart_init(72,9600);
  128. printf("uart is ok. ");
  129. Timer_init(300,7199); //定時(shí)器初始化 設(shè)定溢出時(shí)間是 30ms
  130. printf("time_init is ok. ");
  131. LCD_Init(); //TFT-LCD初始化
  132. printf("lcd_init is ok.");
  133. key_init(); //按鍵I/O口設(shè)置初始化
  134. printf("key_init is ok.");
  135. JTAG_Set(JTAG_SWD_DISABLE); //關(guān)閉JTAG調(diào)試器
  136. code=LCD_ReadReg(0x0000);
  137. delay_ms(500);
  138. printf("deiver code is %ld",code); //讀取驅(qū)動芯片型號是發(fā)送到串口
  139. LCD_Fill(30,200,100,270,BLACK);
  140. LCD_Fill(30,110,100,180,BLACK);
  141. LCD_Fill(30,20,100,90,BLACK);
  142. LCD_ShowString(110,15,"Show");
  143. LCD_ShowString(110,30,"Time");
  144. LCD_ShowString(160,15,"Set ");
  145. LCD_ShowString(160,30,"Time");
  146. LED_GREEN(0);
  147. LED_YELLOW(0);
  148. LED_RED(0);
  149. while(1)
  150. {
  151. for(i=G;i>=0;i--) //綠燈控制
  152. {
  153. LED_GREEN(i);
  154. LCD_Fill(30,200,100,270,GREEN);
  155. delay_ms(1000);
  156. LCD_Fill(30,200,100,270,BLACK);
  157. delay_ms(1000);
  158. }
  159. for(i=Y;i>=0;i--) //黃燈控制
  160. {
  161. LED_YELLOW(i);
  162. LCD_Fill(30,110,100,180,YELLOW);
  163. delay_ms(1000);
  164. LCD_Fill(30,110,100,180,BLACK);
  165. delay_ms(1000);
  166. }
  167. for(i=R;i>=0;i--) //紅燈控制
  168. {
  169. LED_RED(i);
  170. LCD_Fill(30,20,100,90,RED);
  171. delay_ms(1000);
  172. LCD_Fill(30,20,100,90,BLACK);
  173. delay_ms(1000);
  174. }
  175. }
  176. }

  177. //-------各類庫函數(shù)省略---------



復(fù)制代碼

stm32簡易紅綠燈設(shè)計(jì)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-12-20 21:58 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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