免费行情软件网站有哪些,开店怎么做会员系统,模板网站制作服务,太原网站建设的公司排名一、系统方案 超声波具有指向性强#xff0c;能量消耗缓慢#xff0c;在介质中传播的距离较远#xff0c;因而超声波经常用于距离的测量#xff0c;如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制#xff…一、系统方案 超声波具有指向性强能量消耗缓慢在介质中传播的距离较远因而超声波经常用于距离的测量如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制并且在测量精度方面能达到工业实用的要求性价比很高。因此在液位、井深、管道长度的测量、移动机器人定位和避障等领域得到了广泛的应用。 单片机语音系统是以数字电路为基础利用数字语音电路来实现语音信号的记录、存储、还原等任务。数字语音电路是一种集语音合成技术、大规模集成电路技术以及微控制器为一体的并在近十几年迅速发展起来的一种新型技术。语音集成电路与微处理器相结合具有体积小、扩展方便等特点具有广泛的发展前景如电脑语音钟、语音型数字万用表、手机话费查询系统、排队机、监控系统语音报警以及公共汽车报站器等。 随着经济和科学技术的发展汽车这项代步工具也走近越来越多的家庭与此同时交通拥挤的状况也越来越严重。伴随着汽车带来方便的同时各种事故也层出不穷其中追尾、倒车碰撞则占据了很大一部分比例。而在汽车上安装一个带语音报警的测距防撞系统则能很好的帮助解决这一问题。泊车时系统检测汽车与障碍物的距离并且利用LCD显示当距离小于某设定值时实时播放距离大小来提醒驾驶人员。 二、硬件设计 原理图如下 三、单片机软件设计 1、首先是系统初始化 // // 1602液晶初始化函数 // void LcdInit() { LcdWriteCmd(0x38); // 162显示57点阵8位数据口 LcdWriteCmd(0x0C); // 开显示不显示光标 LcdWriteCmd(0x06); // 地址加1当写入数据后光标右移 LcdWriteCmd(0x01); // 清屏 } 2、液晶显示程序
// // 1602液晶写命令函数cmd就是要写入的命令 // void LcdWriteCmd(uchar cmd) { LcdRs_P 0; LcdRw_P 0; LcdEn_P 0; P0cmd; DelayMs(2); LcdEn_P 1; DelayMs(2); LcdEn_P 0; }
// // 1602液晶写数据函数dat就是要写入的数据 // void LcdWriteData(uchar dat) { LcdRs_P 1; LcdRw_P 0; LcdEn_P 0; P0dat; DelayMs(2); LcdEn_P 1; DelayMs(2); LcdEn_P 0; }
3、按键程序
// // 按键扫描 // void KeyScanf() { uchar num1,num2;
if(KeySet_P0) // 判断是否有按键按下
{LcdGotoXY(1,0); // 液晶第二行刷新显示LcdPrintStr( alarm m );LcdGotoXY(1,8); // 显示当前的报警值LcdPrintNum(gAlarm);DelayMs(10); // 消除按键按下的抖动while(!KeySet_P); // 等待按键释放DelayMs(10); // 消除按键松开的抖动while(1){ if(KeyDown_P0) // 报警值减的处理{if(gAlarm2)gAlarm--;LcdGotoXY(1,8);LcdPrintNum(gAlarm); DelayMs(300);}if(KeyUp_P0) // 报警值加的处理{if(gAlarm400)gAlarm;LcdGotoXY(1,8);LcdPrintNum(gAlarm);DelayMs(300);}if(KeySet_P0) // 再次按下设置键的判断{break;} }LcdGotoXY(1,0); // 液晶恢复测量时的内容显示LcdPrintStr( S m );DelayMs(10); // 消除按键按下的抖动while(!KeySet_P); // 等待按键释放DelayMs(10); // 消除按键松开的抖动num1gAlarm/100; // 将新的报警值存入到EEPROM里面去num2gAlarm%100;Sector_Erase(0x2000);EEPROM_Write(0x2000,num1);EEPROM_Write(0x2001,num2);
} } 4、核心算法程序 // // 播放一段语音 // void PlaySound(uchar addr) { uchar i; SDA0; DelayMs(5);
for(i0;i8;i)
{SDA1;if(addr1){DelayMs(3);SDA0;DelayMs(1);}else{DelayMs(1);SDA0;DelayMs(3);}addr1;
}
SDA1;
while(!BUSY); // 等待播放完毕} 四、 proteus仿真设计 Proteus软件是一款应用比较广泛的工具它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况这样就可以通过软件仿真来验证我们设计的方案有没有问题如果有问题可以重新选择器件连接器件直到达到我们设定的目的避免我们搭建实物的时候如果当初选择的方案有问题我们器件都已经焊接好了再去卸载下去再去焊接新的方案的器件测试这样会浪费人力和物力也给开发者带来一定困惑Proteus仿真软件就很好的解决这个问题我们在设计之初就使用该软件进行模拟仿真测试选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸焊接实物调试最终完成本设计的作品。