找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1765|回复: 1
收起左侧

STM32红外遥控交通灯程序

[复制链接]
ID:474146 发表于 2019-2-11 02:43 | 显示全部楼层 |阅读模式
STM32红外遥控交通灯

单片机源程序如下:
  1. /* Includes ------------------------------------------------------------------*/
  2. #include "stm32f10x.h"
  3. #include "Lcd_Driver.h"
  4. #include "GUI.h"
  5. #include "delay.h"
  6. #include "Picture.h"
  7. #include "LCD.h"
  8. #include "led.h"   
  9. #include "sys.h"  
  10. #include "usart.h"  
  11. #include "remote.h"
  12. GPIO_InitTypeDef GPIO_InitStructure;


  13. void RCC_Configuration(void);

  14. void Delayms(__IO uint32_t nCount);

  15. unsigned char Num[10]={0,1,2,3,4,5,6,7,8,9};

  16. unsigned char flag=0;

  17. int i ;
  18. uchar num0=30;


  19. void Redraw_Mainmenu(void)
  20. {

  21.         Lcd_Clear(GRAY0);
  22.        
  23.         Gui_DrawFont_GBK16(16,0,BLUE,GRAY0,"全动电子技术");
  24.         Gui_DrawFont_GBK16(16,20,RED,GRAY0,"液晶测试程序");

  25.         DisplayButtonUp(15,38,113,58); //x1,y1,x2,y2
  26.         Gui_DrawFont_GBK16(16,40,YELLOW,GRAY0,"颜色填充测试");

  27.         DisplayButtonUp(15,68,113,88); //x1,y1,x2,y2
  28.         Gui_DrawFont_GBK16(16,70,BLUE,GRAY0,"文字显示测试");

  29.         DisplayButtonUp(15,98,113,118); //x1,y1,x2,y2
  30.         Gui_DrawFont_GBK16(16,100,RED,GRAY0,"图片显示测试");


  31.         Gui_DrawFont_GBK16(16,120,BLUE,GRAY0,"S1:Move.    ");
  32.         Gui_DrawFont_GBK16(16,140,RED,GRAY0, "S2:Sellect  ");
  33.        
  34.         Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[5]);
  35.         delay_ms(1000);
  36.         Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[4]);
  37.         delay_ms(1000);
  38.         Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[3]);
  39.         delay_ms(1000);
  40.         Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[2]);
  41.         delay_ms(1000);
  42.         Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[1]);
  43.         delay_ms(1000);
  44.         Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[0]);       
  45. }

  46. void Num_Test(void)
  47. {
  48.         u8 i=0;
  49.         Lcd_Clear(GRAY0);
  50.         Gui_DrawFont_GBK16(16,20,RED,GRAY0,"Num Test");
  51.         delay_ms(1000);
  52.         Lcd_Clear(GRAY0);

  53.         for(i=0;i<10;i++)
  54.         {
  55.         Gui_DrawFont_Num32((i%3)*40,32*(i/3)+30,RED,GRAY0,Num[i+1]);
  56.         delay_ms(100);
  57.         }
  58.        
  59. }

  60. void Font_Test(void)
  61. {
  62.         Lcd_Clear(GRAY0);
  63.         Gui_DrawFont_GBK16(16,10,BLUE,GRAY0,"文字显示测试");

  64.         delay_ms(1000);
  65.         Lcd_Clear(GRAY0);
  66.         Gui_DrawFont_GBK16(16,30,YELLOW,GRAY0,"全动电子技术");
  67.         Gui_DrawFont_GBK16(16,50,BLUE,GRAY0,"专注液晶批发");
  68.         Gui_DrawFont_GBK16(16,70,RED,GRAY0, "全程技术支持");
  69.         Gui_DrawFont_GBK16(0,100,BLUE,GRAY0,"Tel:15989313508");
  70.         Gui_DrawFont_GBK16(0,130,RED,GRAY0, "www.qdtech.net");       
  71.         delay_ms(1800);       
  72. }

  73. void Color_Test(void)
  74. {
  75.         u8 i=1;
  76.         Lcd_Clear(GRAY0);
  77.        
  78.         Gui_DrawFont_GBK16(20,10,BLUE,GRAY0,"Color Test");
  79.         delay_ms(200);

  80.         while(i--)
  81.         {
  82.         Lcd_Clear(WHITE);
  83.         Lcd_Clear(BLACK);
  84.         Lcd_Clear(RED);
  85.   Lcd_Clear(GREEN);
  86.   Lcd_Clear(BLUE);
  87.         }               
  88. }
  89. //16位 垂直扫描  右到左  高位在前
  90. void show_pic()
  91. {
  92.         int i,j,k;
  93.         unsigned char picH,picL;
  94.         Lcd_Clear(GRAY0);
  95.         Gui_DrawFont_GBK16(16,10,BLUE,GRAY0,"图片显示测试");
  96.         delay_ms(1000);
  97.         Lcd_Clear(GRAY0);
  98.         k=0;
  99.         for(i=0;i<128;i++)
  100.         for(j=0;j<160;j++)
  101.         {
  102.                 picH=gImage_123[k++];
  103.                 picL=gImage_123[k++];
  104.                 Lcd_WriteData(picH);
  105.                 Lcd_WriteData(picL);
  106.         }       
  107. }
  108. u16 ID=0;
  109. int main(void)
  110. {

  111.        
  112.         u8 key,t=0;  
  113.   u8 *str=0;

  114.        
  115.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  116.         uart_init(115200);
  117.         LED_Init();
  118.        

  119.         Remote_Init();
  120.        
  121.   SystemInit();
  122.   delay_init(72);//延时初始化
  123.         Lcd_Init(0);
  124.         LCD_LED_SET;//??IO?????
  125.        
  126. while(1)
  127.   {  
  128.   TM1620_Init();
  129.         init_TM1620i();      // ???LCD????
  130.         init_TM1620ii();

  131.                 LCD_LED_SET;//??IO?????
  132.     /*Redraw_Mainmenu();
  133.                 Color_Test();//????????
  134.                 Num_Test();
  135.                 Font_Test();//???????               
  136.                 show_pic();//??????
  137.                 delay_ms(1200);*/
  138.                
  139.                
  140.                     lcd0_display(88);   //lcd0???????
  141.                                 lcd2_display(88);
  142.                     lcd1_display(88);   //lcd0???????
  143.                                 lcd3_display(88);
  144.        
  145.                
  146.                 key=Remote_Scan();
  147.                 if(key)  
  148.         {   
  149.                                         Lcd_Clear(GRAY0); //有按键则清屏
  150.             switch(key)  
  151.             {  
  152.                 case 0:str="ERROR";break;               
  153.                 case 162:str="yellow led on";flag=1;break;      
  154.                 case 98:str="yellow led off";flag=0;break;      
  155.                 case 2:str="green led on";flag=2;  break;           
  156.                 case 226:str="green led off";  flag=3; break;         
  157.                                                           case 194:str="Pattern 1"; flag=4;break;      
  158.                 case 34:str="Pattern 2";flag=5;break;           
  159.                 case 224:str="Pattern 3";flag=6;break;         
  160.                 case 168:str="Pattern 4";flag=7;break;           
  161.                 case 144:str="play";flag=8;break;            
  162.                 case 104:str="1";flag=9;break;         
  163.                 case 152:str="2";break;      
  164.                 case 176:str="3";break;      
  165.                 case 48:str="4";break;            
  166.                 case 24:str="5";break;            
  167.                 case 122:str="6";break;         
  168.                 case 16:str="7";break;                                
  169.                 case 56:str="8";break;     
  170.                 case 90:str="9";break;  
  171.                 case 66:str="0";break;  
  172.                 case 82:str="DELETE";break;  
  173.             }
  174.                                
  175.                                 Gui_DrawFont_GBK16(16,10,BLUE,GRAY0,str);
  176.                         }
  177.                                 if(flag==1)
  178.                                 {
  179.                                        
  180.                                         LED0= 1 ;
  181.                                         LED1=1;
  182.                                         LED2=1;
  183.                                         LED3=1;
  184.                                 }                                       
  185.                            if(flag==0)
  186.                                          {
  187.                                          LED0= 0 ;
  188.                                          LED1=0;
  189.                                          LED2=0;
  190.                                          LED3=0;
  191.                                          }
  192.                                          if(flag==2)
  193.                                          {
  194.                                          LED4= 1 ;
  195.                                          LED5=1;
  196.                                          LED6=1;
  197.                                          LED7=1;
  198.                                          }
  199.                                          if(flag==3)
  200.                                          {
  201.                                          LED4= 0 ;
  202.                                          LED5=0;
  203.                                          LED6=0;
  204.                                          LED7=0;
  205.                                          }
  206.                                          if(flag==4)
  207.                                          {

  208.                                                                  while(num0)
  209.                         {
  210.                                 num0--;
  211.                                 lcd0_display(num0);
  212.                                
  213.                        
  214.                         delay_ms(200);
  215.                        
  216.                                 if(num0 == 0)
  217.                                                 {
  218.                                                 while(4-i)
  219.                                                 {
  220.                                         LED0= 1 ;
  221.                                         LED1=1;
  222.                                         LED2=1;
  223.                                         LED3=1;
  224.                                         LED4= 1 ;
  225.                                          LED5=1;
  226.                                          LED6=1;
  227.                                          LED7=1;
  228.                                 delay_ms(1000);
  229.                                                           LED0= 0 ;
  230.                                          LED1=0;
  231.                                          LED2=0;
  232.                                          LED3=0;
  233.                                                           LED4= 0 ;
  234.                                          LED5=0;
  235.                                          LED6=0;
  236.                                          LED7=0;
  237.                                                          delay_ms(1000);
  238.                                                          i++;
  239.                                                
  240.                                                 }break;         }
  241.                                                  
  242.                                        
  243.                                          }break;
  244.                                          }
  245.            if(flag==5)
  246.                                          {
  247.                                                  while(num0)
  248.                                                  {
  249.                                                          
  250.                                                  num0--;
  251.                                 lcd1_display(num0);
  252.                                  
  253.                         delay_ms(200);
  254.                                                 if(num0 == 0)
  255.                                                 {
  256.                                                  while(4-i)
  257.                                                  {
  258.                                          LED0=1 ;
  259.                                                  delay_ms(200);
  260.                                          LED0=0;
  261.                                          LED7=1;
  262.                                                  delay_ms(200);
  263.                                          LED7=0;
  264.                                                  LED3=1;
  265.                                                  delay_ms(200);
  266.                                                  LED3=0;
  267.                                                  LED4=1;
  268.                                                  delay_ms(200);
  269.                                                  LED4=0;
  270.                                                  LED2=1;
  271.                                                  delay_ms(200);
  272.                                                  LED2=0;
  273.                                                  LED5=1;
  274.                                                  delay_ms(200);
  275.                                                  LED5=0;
  276.                                                  LED1=1;
  277.                                                  delay_ms(200);
  278.                                                  LED1=0;
  279.                                                  LED6=1;
  280.                                                  delay_ms(200);
  281.                                                  LED6=0;
  282.                                                  delay_ms(200);
  283.                                                  i++;
  284.                                          } break;}
  285.                                          }break;
  286.                                          }
  287.                                          
  288.                                          
  289.                                          if(flag==6)
  290.                                          {
  291.                                                  while(num0)
  292.                                                  { num0--;
  293.                                 lcd3_display(num0);
  294.                                
  295.                        
  296.                         delay_ms(200);
  297.                                                  if(num0 == 0)
  298.                                                 {
  299.                                                  while(4-i)
  300.                                                  {
  301.                                          LED0=1 ;
  302.                                                  delay_ms(200);
  303.                                          LED0=0;
  304.                                          LED6=1;
  305.                                                  delay_ms(200);
  306.                                          LED6=0;
  307.                                                   LED1=1;
  308.                                                  delay_ms(200);
  309.                                                  LED1=0;
  310.                                                  LED5=1;
  311.                                                  delay_ms(200);
  312.                                                  LED5=0;
  313.                                                  LED2=1;
  314.                                                  delay_ms(200);
  315.                                                  LED2=0;
  316.                                                  LED4=1;
  317.                                                  delay_ms(200);
  318.                                                  LED4=0;
  319.                                                  LED3=1;
  320.                                                  delay_ms(200);
  321.                                                   LED3=0;
  322.                                                  LED7=1;
  323.                                                  delay_ms(200);
  324.                                                  LED7=0;
  325.                                                  delay_ms(200);
  326.                                                  i++;
  327.                                          }break;}
  328.                                  }break;
  329.                                          }
  330.                                           if(flag==7)
  331.                                          {
  332.                                                  while(num0)
  333.                                                  {num0--;
  334.                                 lcd2_display(num0);
  335.                                
  336.                        
  337.                         delay_ms(200);
  338.                                                  if(num0 == 0)
  339.                                                 {
  340.                                                  while(4-i)
  341.                                                  {
  342.                                          LED0=1 ;
  343.                                                 LED1=1;                               
  344.                                                  LED2=1;                 
  345.                                                  LED3=1;
  346.                                                  delay_ms(200);
  347.                                                          LED0=0 ;
  348.                                                 LED1=0;                               
  349.                                                  LED2=0;                 
  350.                                                  LED3=0;
  351.                                                          
  352.                                                   LED4=1;                                                         
  353.                                                  LED5=1;
  354.                                                  LED6=1;
  355.                                                  LED7=1;
  356.                                                  delay_ms(200);
  357.                                                            LED4=0;                                                         
  358.                                                  LED5=0;
  359.                                                  LED6=0;
  360.                                                  LED7=0;
  361.                                                  i++;
  362.                                          }break;}
  363.                                  }break;
  364.                          }

  365.   }
  366.         LCD_LED_CLR;//IO?????

  367. }


  368. void RCC_Configuration(void)
  369. {   
  370.   /* Setup the microcontroller system. Initialize the Embedded Flash Interface,  
  371.      initialize the PLL and update the SystemFrequency variable. */
  372.   SystemInit();
  373. }


  374. void Delayms(__IO uint32_t nCount)
  375. {
  376.   for(; nCount != 0; nCount--);
  377. }

  378. #ifdef  USE_FULL_ASSERT
  379. /**
  380.   * @brief  Reports the name of the source file and the source line number
  381.   *   where the assert_param error has occurred.
  382.   * @param file: pointer to the source file name
  383.   * @param line: assert_param error line source number
  384.   * @retval : None
  385.   */



  386. void assert_failed(uint8_t* file, uint32_t line)
  387. {
  388.   /* User can add his own implementation to report the file name and line number,
  389.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  390.   /* Infinite loop */
  391.   while (1)
  392.   {
  393.   }
  394. }
  395. #endif



  396. /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
复制代码

所有资料51hei提供下载:
程序.7z (95.83 KB, 下载次数: 19)
回复

使用道具 举报

ID:1 发表于 2019-2-11 23:45 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表