仿真原版本:proteus 7.8
程序編譯器:keil 4/keil 5
編程語言:C語言
設計編號:S0019
設計要求
導盲手杖主要用于幫助視覺有障礙的人解決行動不便問題,具有成本低,使用方便等特點。主要要求有:
1.顯示前方障礙物距離;
2.實時測量距離,并通過蜂鳴器提醒距離過短,蜂鳴器蜂鳴發(fā)出預警;
3.可以通過按鍵調(diào)整蜂鳴器預警的距離;
4.附加要求,可以顯示實際溫度,根據(jù)溫度調(diào)整傳感器測試計算,減少誤差。
仿真電路
可以通過按鍵調(diào)整蜂鳴器預警的距離,從而調(diào)整安全距離。
原理圖
PCB圖
源程序
主程序
/主函數(shù)
void main()
{
Init_ultrasonic_wave();
//屏幕初始化
Init1602();
//溫度初始化
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();
//循環(huán)顯示
while(1)
{
Key();
//正常顯示
if(mode==0)
{
StartModule();//啟動超聲波
while(!RX); //當RX為零時等待
TR0=1; //開啟計數(shù)
while(RX); //當RX為1計數(shù)并等待
TR0=0; //關閉計數(shù)
delayms(20); //20MS
tmpchange(); //溫度轉(zhuǎn)換
t_=tmp(); //度溫度
Conut(t_/10); //計算距離
if(L_<Min)
{
Feng_Start();
}
/* if(FW=0)
Feng_Stop();
*/
Display_1602(t_/10,L_);
}
//調(diào)整顯示
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(); //蜂鳴器關閉
//最大值調(diào)整
/*if(mode==1) //在最大值調(diào)整下
{
Max++; //調(diào)整最大值
if(Max==201)//到達201歸為200
{
Max=200;
}
}*/
//最小值
if(mode==1)//最小模式下調(diào)整
{
Min++; //調(diào)整最小值
/*if(Min>Max) //最小值不能大于最大值
{
Min=Max;
}
*/
}
k=1;
}
//-鍵
else if(K3==0)
{
Feng_Start();
delay_key();
while(K3==0);
Feng_Stop();
//最大值調(diào)整
/*if(mode==1)
{
Max--;
if(Max<Min)
{
Max=Min;
}
}*/
//最小值
if(mode==1)
{
Min--;
if(Min==0xff)
{
Min=0;
}
}
k=1;
}
}
資料清單
下載
閱讀全文