本设计由STC89C52单片机电路+led灯电路+红外避障传感器电路+LCD1602液晶显示电路+语音模块电路+电源电路组成。
1、当红外避障传感器检测到障碍物时,15秒后,红色LED1亮,绿色LED1不亮。红色LED2不亮,绿色LED2亮,同时语音只播报:行人过马路请注意安全。15秒后,红色LED1不亮,绿色LED1亮。红色LED2亮,绿色LED2不亮,语音只播报:请行人耐心等待。并依次循环。
2、液晶实时显示倒计时时间。
3、当红外避障传感器没有检测到障碍物时,红色LED1不亮,绿色LED1亮。红色LED2亮,绿色LED2不亮。
4、上电默认红色LED1不亮,绿色LED1亮。红色LED2亮,绿色LED2不亮。
完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/1lX3dTf8ChHjgYz0F8lAz-g?pwd=8888
部分代码展示
bit disFlag = 0; //定时更新显示
void Init_Timer0(void);
void uartSendStr(unsigned char *s,unsigned char length);
void UART_Init(void);
void uartSendByte(unsigned char dat);
void main (void)
{
Init_Timer0(); //定时器0初始化
UART_Init();
DelayMs(200); //延时有助于稳定
uartSendStr("reday ok!!",10);
led_red1 = 1; //初始化
led_gre1 = 0;
led_red2 = 0;
led_gre2 = 1;
LCD_Init(); //初始化液晶
DelayMs(20); //延时有助于稳定
LCD_Clear();
LCD_Write_String(0,0,"my designer ");//显示
while (1) //主循环
{
if(disFlag == 1)//更新显示
{
disFlag = 0;
if(hotm == 0) //检测到障碍
{
sprintf(dis0,"TimeLater:%4.1fs ",(float)yunTime/10);
LCD_Write_String(0,1,dis0);//显示
if(runStep == 0) //运行步骤
{
if(yunTime == 0)
{
runStep = 1;
yunTime = 150;//运行时间
}
}
else if(runStep == 1) //运行步骤
{
led_red1 = 0; //第一个循环
led_gre1 = 1;
led_red2 = 1;
led_gre2 = 0;
yy1 = !yy1; // 语音播报
yy2 = 1; // 关闭语音
}
}
else //正常情况
{
sprintf(dis0,"TimeLater:xxxxs ");
LCD_Write_String(0,1,dis0);//显示
yy1 = 1; // 关闭语音
runStep = 0;
yunTime = 150;//运行时间
}
}
}
}
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=(65536-20000)/256; //重新赋值 20ms
TL0=(65536-20000)%256;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
完整版 电路图和程序代码 下载地址