仿真原版本:proteus 7.8
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0019
设计要求
导盲手杖主要用于帮助视觉有障碍的人解决行动不便问题,具有成本低,使用方便等特点。主要要求有:
1.显示前方障碍物距离;
2.实时测量距离,并通过蜂鸣器提醒距离过短,蜂鸣器蜂鸣发出预警;
3.可以通过按键调整蜂鸣器预警的距离;
4.附加要求,可以显示实际温度,根据温度调整传感器测试计算,减少误差。
仿真电路
可以通过按键调整蜂鸣器预警的距离,从而调整安全距离。
原理图
PCB图
源程序
主程序
/主函数
void main()
{
Init_ultrasonic_wave();
//屏幕初始化
Init1602();
//温度初始化
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();
//循环显示
while(1)
{
Key();
//正常显示
if(mode==0)
{
StartModule();//启动超声波
while(!RX); //当RX为零时等待
TR0=1; //开启计数
while(RX); //当RX为1计数并等待
TR0=0; //关闭计数
delayms(20); //20MS
tmpchange(); //温度转换
t_=tmp(); //度温度
Conut(t_/10); //计算距离
if(L_<Min)
{
Feng_Start();
}
/* if(FW=0)
Feng_Stop();
*/
Display_1602(t_/10,L_);
}
//调整显示
else if(mode!=0)
{
//最大最小值
Init_MaxMin();
while(mode!=0)
{
Key();
/*if(k==1&&mode==1)
{
Init_MaxMin();
write_com(0x8d);//设置位置
}
*/
if(k==1&&mode==1)
{
Init_MaxMin();
write_com(0x89);//设置光标位置
}
k=0;
}
//界面初始化
Init1602();
}
}
}
按键检测
//按键检测
void Key()
{
//功能键按下
if(K1==0)
{
Feng_Start();//蜂鸣器开
delay_key(); //消抖
while(K1==0);//等待松手
Feng_Stop(); //蜂鸣器关闭
mode++; //模式++
if(mode==2) //达到最大限度归为
mode=0;
k=1; //按键标志位
}
//+键
else if(K2==0)
{
Feng_Start();//蜂鸣器开
delay_key(); //消抖
while(K2==0);//等待松手
Feng_Stop(); //蜂鸣器关闭
//最大值调整
/*if(mode==1) //在最大值调整下
{
Max++; //调整最大值
if(Max==201)//到达201归为200
{
Max=200;
}
}*/
//最小值
if(mode==1)//最小模式下调整
{
Min++; //调整最小值
/*if(Min>Max) //最小值不能大于最大值
{
Min=Max;
}
*/
}
k=1;
}
//-键
else if(K3==0)
{
Feng_Start();
delay_key();
while(K3==0);
Feng_Stop();
//最大值调整
/*if(mode==1)
{
Max--;
if(Max<Min)
{
Max=Min;
}
}*/
//最小值
if(mode==1)
{
Min--;
if(Min==0xff)
{
Min=0;
}
}
k=1;
}
}
资料清单
下载
阅读全文