标题: STM32设计交通灯控制系统 实现东西南北方向同时倒计时 且按键可分别控制东西、南北... [打印本页]
作者: 踏风逐梦 时间: 2019-10-22 10:07
标题: STM32设计交通灯控制系统 实现东西南北方向同时倒计时 且按键可分别控制东西、南北...
STM32设计交通灯控制系统
实现东西南北方向同时倒计时
且按键可分别控制东西、南北方向通行时间
主要实验程序
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h"
#include "time.h"
#include "key.h"
void color_n_change(unsigned int clo)
{
LCD_Fill(110,130,130,150,clo);//1_deng_color
LCD_Fill(110,210,130,230,clo);//2
}
void color_e_change(unsigned int clo)
{
LCD_Fill(70,170,90,190,clo);//3
LCD_Fill(150,170,170,190,clo);//4
}
int main()
{
u8 key;
u8 north;
u8 northg;
u8 norths;
u8 mmm;
u8 eath;
u8 eaths;
u8 eathg;
u8 i=0;
u8 buf[20];
u8 flag=1;
u8 time;
u8 timen;
u8 timee;
u8 timen1;
u8 timen2;
u8 timee1;
u8 timee2;
SysTick_Init(168);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
LED_Init();
KEY_Init();
TIM4_Init(10000-1,8400-1);
TIM3_Init(10000-1,8400-1);
USART1_Init(9600);
TFTLCD_Init();
FRONT_COLOR=BLACK;
LCD_DrawLine(90,60 , 90, 150);//1_hua xian
LCD_DrawLine(150,60 , 150, 150);//2
LCD_DrawLine(30,150 , 90, 150);//3
LCD_DrawLine(150,150 , 210, 150);//4
LCD_DrawLine(30,210 , 90, 210);//5
LCD_DrawLine(150,210 , 210, 210);//6
LCD_DrawLine(90,210 , 90, 300);//7
LCD_DrawLine(150,210 , 150, 300);//8
LCD_DrawRectangle(110,130,130,150);//1_hua_deng
LCD_DrawRectangle(110,210,130,230);//2
LCD_DrawRectangle(70,170,90,190);//3
LCD_DrawRectangle(150,170,170,190);//4
while(1)
{
if(flag==1)//xiu gai
{
north=(TIM4_IRQHandler());//daojishi_zhihou
northg=north%10;
norths=north/10;
sprintf((char *)buf,"%d",norths);
LCD_ShowString(115,110,tftlcd_data.width,tftlcd_data.height,16,buf);//1
LCD_ShowString(115,235,tftlcd_data.width,tftlcd_data.height,16,buf);//2
sprintf((char *)buf,"%d",northg);
LCD_ShowString(123,110,tftlcd_data.width,tftlcd_data.height,16,buf);//1
LCD_ShowString(123,235,tftlcd_data.width,tftlcd_data.height,16,buf);//2
eath=(TIM3_IRQHandler());
eathg=eath%10;
eaths=eath/10;
sprintf((char *)buf,"%d",eaths);
LCD_ShowString(50,175,tftlcd_data.width,tftlcd_data.height,16,buf);//3
LCD_ShowString(175,175,tftlcd_data.width,tftlcd_data.height,16,buf);//4 sprintf((char *)buf,"%d",eathg);
LCD_ShowString(58,175,tftlcd_data.width,tftlcd_data.height,16,buf);//3
LCD_ShowString(183,175,tftlcd_data.width,tftlcd_data.height,16,buf);//4
if(TIM4_IRQHandler()==1)//north_xunhuan_1ci
{
mmm++;
}
if(mmm%2==1)//ji
{
if(eath>5)
color_e_change(GREEN);
else
color_e_change(YELLOW);
if(north>5)
color_n_change(RED);
else
color_n_change(RED);
}
if(mmm%2==0)//ou
{
if(eath>5)
color_e_change(RED);
else
color_e_change(RED);
if(north>5)
color_n_change(GREEN);
else
color_n_change(YELLOW);
}
key=KEY_Scan(0);
if(key==KEY_UP)//nanbei
{
flag=2;
}
if(key==KEY_DOWN)//dongxi
{
flag=3;
}
}//flag1
if(flag==2)//up_nanbei
{
key=KEY_Scan(2);
timen=tiiiiimt(key,1);//nanbei
timen1=timen/10;//shi_wei
timen2=timen%10;//ge_wei
if(key==KEY_DOWN)//que ding
{
flag=1;//gai
}
LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,12,"time_setn:");
sprintf((char *)buf,"%d",timen1);
LCD_ShowString(100,10,tftlcd_data.width,tftlcd_data.height,16,buf);//1
sprintf((char *)buf,"%d",timen2);
LCD_ShowString(110,10,tftlcd_data.width,tftlcd_data.height,16,buf);//1
}
if(flag==3)//down_dongxi
{
key=KEY_Scan(0);
timee=tiiiiimt(key,2);//dongxi
timee1=timee/10;//shi_wei
timee2=timee%10;//ge_wei
if(key==KEY_DOWN)//queding
{
flag=1;//gai_xianshi
}
LCD_ShowString(10,30,tftlcd_data.width,tftlcd_data.height,12,"time_sete:");
sprintf((char *)buf,"%d",timee1);
LCD_ShowString(100,30,tftlcd_data.width,tftlcd_data.height,16,buf);//1
sprintf((char *)buf,"%d",timee2);
LCD_ShowString(110,30,tftlcd_data.width,tftlcd_data.height,16,buf);//1
}
} }
作者: wsyyta 时间: 2021-1-12 17:02
有没有图
作者: lvdeqiang 时间: 2022-1-6 21:11
有所有程序吗
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |