标题:
STM32红外遥控交通灯程序
[打印本页]
作者:
911670085
时间:
2019-2-11 02:43
标题:
STM32红外遥控交通灯程序
STM32红外遥控交通灯
单片机源程序如下:
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "Lcd_Driver.h"
#include "GUI.h"
#include "delay.h"
#include "Picture.h"
#include "LCD.h"
#include "led.h"
#include "sys.h"
#include "usart.h"
#include "remote.h"
GPIO_InitTypeDef GPIO_InitStructure;
void RCC_Configuration(void);
void Delayms(__IO uint32_t nCount);
unsigned char Num[10]={0,1,2,3,4,5,6,7,8,9};
unsigned char flag=0;
int i ;
uchar num0=30;
void Redraw_Mainmenu(void)
{
Lcd_Clear(GRAY0);
Gui_DrawFont_GBK16(16,0,BLUE,GRAY0,"全动电子技术");
Gui_DrawFont_GBK16(16,20,RED,GRAY0,"液晶测试程序");
DisplayButtonUp(15,38,113,58); //x1,y1,x2,y2
Gui_DrawFont_GBK16(16,40,YELLOW,GRAY0,"颜色填充测试");
DisplayButtonUp(15,68,113,88); //x1,y1,x2,y2
Gui_DrawFont_GBK16(16,70,BLUE,GRAY0,"文字显示测试");
DisplayButtonUp(15,98,113,118); //x1,y1,x2,y2
Gui_DrawFont_GBK16(16,100,RED,GRAY0,"图片显示测试");
Gui_DrawFont_GBK16(16,120,BLUE,GRAY0,"S1:Move. ");
Gui_DrawFont_GBK16(16,140,RED,GRAY0, "S2:Sellect ");
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[5]);
delay_ms(1000);
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[4]);
delay_ms(1000);
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[3]);
delay_ms(1000);
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[2]);
delay_ms(1000);
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[1]);
delay_ms(1000);
Gui_DrawFont_Num32(100,125,RED,GRAY0,Num[0]);
}
void Num_Test(void)
{
u8 i=0;
Lcd_Clear(GRAY0);
Gui_DrawFont_GBK16(16,20,RED,GRAY0,"Num Test");
delay_ms(1000);
Lcd_Clear(GRAY0);
for(i=0;i<10;i++)
{
Gui_DrawFont_Num32((i%3)*40,32*(i/3)+30,RED,GRAY0,Num[i+1]);
delay_ms(100);
}
}
void Font_Test(void)
{
Lcd_Clear(GRAY0);
Gui_DrawFont_GBK16(16,10,BLUE,GRAY0,"文字显示测试");
delay_ms(1000);
Lcd_Clear(GRAY0);
Gui_DrawFont_GBK16(16,30,YELLOW,GRAY0,"全动电子技术");
Gui_DrawFont_GBK16(16,50,BLUE,GRAY0,"专注液晶批发");
Gui_DrawFont_GBK16(16,70,RED,GRAY0, "全程技术支持");
Gui_DrawFont_GBK16(0,100,BLUE,GRAY0,"Tel:15989313508");
Gui_DrawFont_GBK16(0,130,RED,GRAY0, "www.qdtech.net");
delay_ms(1800);
}
void Color_Test(void)
{
u8 i=1;
Lcd_Clear(GRAY0);
Gui_DrawFont_GBK16(20,10,BLUE,GRAY0,"Color Test");
delay_ms(200);
while(i--)
{
Lcd_Clear(WHITE);
Lcd_Clear(BLACK);
Lcd_Clear(RED);
Lcd_Clear(GREEN);
Lcd_Clear(BLUE);
}
}
//16位 垂直扫描 右到左 高位在前
void show_pic()
{
int i,j,k;
unsigned char picH,picL;
Lcd_Clear(GRAY0);
Gui_DrawFont_GBK16(16,10,BLUE,GRAY0,"图片显示测试");
delay_ms(1000);
Lcd_Clear(GRAY0);
k=0;
for(i=0;i<128;i++)
for(j=0;j<160;j++)
{
picH=gImage_123[k++];
picL=gImage_123[k++];
Lcd_WriteData(picH);
Lcd_WriteData(picL);
}
}
u16 ID=0;
int main(void)
{
u8 key,t=0;
u8 *str=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
LED_Init();
Remote_Init();
SystemInit();
delay_init(72);//延时初始化
Lcd_Init(0);
LCD_LED_SET;//??IO?????
while(1)
{
TM1620_Init();
init_TM1620i(); // ???LCD????
init_TM1620ii();
LCD_LED_SET;//??IO?????
/*Redraw_Mainmenu();
Color_Test();//????????
Num_Test();
Font_Test();//???????
show_pic();//??????
delay_ms(1200);*/
lcd0_display(88); //lcd0???????
lcd2_display(88);
lcd1_display(88); //lcd0???????
lcd3_display(88);
key=Remote_Scan();
if(key)
{
Lcd_Clear(GRAY0); //有按键则清屏
switch(key)
{
case 0:str="ERROR";break;
case 162:str="yellow led on";flag=1;break;
case 98:str="yellow led off";flag=0;break;
case 2:str="green led on";flag=2; break;
case 226:str="green led off"; flag=3; break;
case 194:str="Pattern 1"; flag=4;break;
case 34:str="Pattern 2";flag=5;break;
case 224:str="Pattern 3";flag=6;break;
case 168:str="Pattern 4";flag=7;break;
case 144:str="play";flag=8;break;
case 104:str="1";flag=9;break;
case 152:str="2";break;
case 176:str="3";break;
case 48:str="4";break;
case 24:str="5";break;
case 122:str="6";break;
case 16:str="7";break;
case 56:str="8";break;
case 90:str="9";break;
case 66:str="0";break;
case 82:str="DELETE";break;
}
Gui_DrawFont_GBK16(16,10,BLUE,GRAY0,str);
}
if(flag==1)
{
LED0= 1 ;
LED1=1;
LED2=1;
LED3=1;
}
if(flag==0)
{
LED0= 0 ;
LED1=0;
LED2=0;
LED3=0;
}
if(flag==2)
{
LED4= 1 ;
LED5=1;
LED6=1;
LED7=1;
}
if(flag==3)
{
LED4= 0 ;
LED5=0;
LED6=0;
LED7=0;
}
if(flag==4)
{
while(num0)
{
num0--;
lcd0_display(num0);
delay_ms(200);
if(num0 == 0)
{
while(4-i)
{
LED0= 1 ;
LED1=1;
LED2=1;
LED3=1;
LED4= 1 ;
LED5=1;
LED6=1;
LED7=1;
delay_ms(1000);
LED0= 0 ;
LED1=0;
LED2=0;
LED3=0;
LED4= 0 ;
LED5=0;
LED6=0;
LED7=0;
delay_ms(1000);
i++;
}break; }
}break;
}
if(flag==5)
{
while(num0)
{
num0--;
lcd1_display(num0);
delay_ms(200);
if(num0 == 0)
{
while(4-i)
{
LED0=1 ;
delay_ms(200);
LED0=0;
LED7=1;
delay_ms(200);
LED7=0;
LED3=1;
delay_ms(200);
LED3=0;
LED4=1;
delay_ms(200);
LED4=0;
LED2=1;
delay_ms(200);
LED2=0;
LED5=1;
delay_ms(200);
LED5=0;
LED1=1;
delay_ms(200);
LED1=0;
LED6=1;
delay_ms(200);
LED6=0;
delay_ms(200);
i++;
} break;}
}break;
}
if(flag==6)
{
while(num0)
{ num0--;
lcd3_display(num0);
delay_ms(200);
if(num0 == 0)
{
while(4-i)
{
LED0=1 ;
delay_ms(200);
LED0=0;
LED6=1;
delay_ms(200);
LED6=0;
LED1=1;
delay_ms(200);
LED1=0;
LED5=1;
delay_ms(200);
LED5=0;
LED2=1;
delay_ms(200);
LED2=0;
LED4=1;
delay_ms(200);
LED4=0;
LED3=1;
delay_ms(200);
LED3=0;
LED7=1;
delay_ms(200);
LED7=0;
delay_ms(200);
i++;
}break;}
}break;
}
if(flag==7)
{
while(num0)
{num0--;
lcd2_display(num0);
delay_ms(200);
if(num0 == 0)
{
while(4-i)
{
LED0=1 ;
LED1=1;
LED2=1;
LED3=1;
delay_ms(200);
LED0=0 ;
LED1=0;
LED2=0;
LED3=0;
LED4=1;
LED5=1;
LED6=1;
LED7=1;
delay_ms(200);
LED4=0;
LED5=0;
LED6=0;
LED7=0;
i++;
}break;}
}break;
}
}
LCD_LED_CLR;//IO?????
}
void RCC_Configuration(void)
{
/* Setup the microcontroller system. Initialize the Embedded Flash Interface,
initialize the PLL and update the SystemFrequency variable. */
SystemInit();
}
void Delayms(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval : None
*/
void assert_failed(uint8_t* file, uint32_t line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* Infinite loop */
while (1)
{
}
}
#endif
/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
复制代码
所有资料51hei提供下载:
程序.7z
(95.83 KB, 下载次数: 19)
2019-2-11 23:44 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-2-11 23:45
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1