数字式智能语音温度计设计.docx
- 文档编号:16767408
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:18
- 大小:818.23KB
数字式智能语音温度计设计.docx
《数字式智能语音温度计设计.docx》由会员分享,可在线阅读,更多相关《数字式智能语音温度计设计.docx(18页珍藏版)》请在冰点文库上搜索。
数字式智能语音温度计设计
河南大学物理与电子学院
开放实验室单片机设计报告
数字式智能语音温度计
设计人:
开放实验室入室人员
目录
0前言1
1系统组成与功能1
1.1系统组成1
1.1.1STC89C52单片机1
1.1.274LS138译码器芯片2
1.1.3DS18B20测温传感器3
1.1.4四位一体七段数码管3
1.1.5WT588D语音芯片4
1.2系统功能6
2系统原理5
2.1系统仿真图6
2.2实物照片6
3程序流程图7
4具体程序代码8
5结论11
6扩展部分设计心得12
参考文献13
数字式智能语音温度计
0前言
LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表示。
当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。
如:
显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。
LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。
小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。
发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。
常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
在本学期的单片机在项目设计中,我们两人一组共同讨论并设计出了一种基于单片机控制的LED数码智能语音温度计,并最终在老师指导下完成了实际的成品,调试后能实现了预期的功能。
同时我们在实现其基本功能的基础上进行了一定程度的功能扩展。
1系统组成与功能
1.1系统组成
本系统主要有STC89C52单片机、按键、74LS138译码器芯片、DS18B20测温传感器、四位一体七段数码管、WT588D语音芯片等元件组成。
1.1.1STC89C52单片机
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
其引脚图如图1—1所示。
1.1.274LS138译码器芯片
74LS138为3线-8线译码器,共有54/74S138和54/74LS138两种线路结构型式。
其工作原理如下:
1.当一个选通端(E1)为高电平,另两个选通端((/E2))和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。
比如:
A2A1A0=110时,则Y6输出端输出低电平信号。
2.利用E1、E2和E3可级联扩展成24线译码器;若外接一个反相器还可级联扩展成32线译码器。
3.若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。
(a)(b)
图1—2(a)74LS138引脚图(b)74LS138实物图
1.1.3DS18B20测温传感器
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
主要根据应用场合的不同而改变其外观。
封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。
耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
DS18B20采用一线通信接口。
因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。
若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。
一个控制功能指挥指示DS18B20的演出测温。
测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。
温度报警触发器TH和TL都有一字节EEPROM的数据。
如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。
在片上还载有配置字节以理想的解决温度数字转换。
写TH,TL指令以及配置字节利用一个记忆功能的指令完成。
通过缓存器读寄存器。
所有数据的读,写都是从最低位开始。
图1—3DS18B20实物及简易使用接线图
1.1.4四位一体七段数码管
本设计用到四位一体七段数码管1个,其原理与单个的数码管显示原理
相同。
四位一体的数码管共12个引脚。
A-dp八个引脚对应八根数据线,控
制显示的字形。
DIG1-DIG2四个引脚为公共端,控制当前显示字形的位别,为扫描法显示提供了方便,有效减少了数码管占用的单片机引脚数。
上图为共阴四位数码管的内部结构图。
引脚排列依然是从左下角的第一只管脚开始,以逆时针方向依次为1-12脚,数码管内部结构及引脚参见图1—4。
1.1.5WT588D语音芯片
WT588D芯片封装有DIP18、SSOP20和LQFP32形式;根据外挂或者内置SPI-Flash的不同,播放时长也不同,支持2M~32Mbit的SPI-Flash存储器;内嵌DSP高速音频处理器,处理速度快;
·内置13Bit/DA转换器,以及12Bit/PWM输出,音质好;
·PWM输出可直接推劢0.5W/8Ω扬声器,推挽电流充沛;
·支持DAC/PWM两种输出方式;
·支持加载WAV音频格式;支持MP3控制模式、挄键控制模式、3×8挄键组合控制模式、开口控制模式、一线串口控制模式、三线串口控制模式以及三线串口控制I/O口扩展输出模式;
三线串口控制模式切换到三线串口控制I/O口扩展输出模式只需发送数据就可以迚行切换。
切换后仍可把切换前的最后一工作状态带迚切换后的模式工作;
仸意设定显示诧音播放状态信号的BUSY输出方式;
·抗干扰性强,可应用在工业领域;
·15种挄键控制模式,仸意一个挄键可设定仸意一种控制模式;
·配套WT588DVoiceChip上位机软件,接口简单,使用方便。
能极大限度的发挥出WT588D诧音单片机的各项功能;
下图为WT588D—16PIN引脚图及实物图:
图1—5WT588D(16PIN)引脚图及实物图
1.2系统功能
本设计的主要功能是用单片机来控制DS18B20测温及驱动LED数码管显示温度,用户可以通过修改程序的延时函数来改变测温频率。
扩展后的系统增加了语音模块,通过事先编译的语音文件来实现智能的语音报告温度和高低温提醒功能。
同时,我们进一步优化了程序,将报温过程中的LED数码管设置成跟随语音的同步闪烁,增加了这个产品的人性化。
2系统原理
本系统设计的主要原理是用DS18B20测温单元和用单片机控制WT588D语音模块、数码管显示模块(由74LS138译码器驱动)来工作。
其中WT588D语音模块集成了语音的存储、编译和输入、输出功能。
当18B20测出实时温度后,单片机将采集到的相应的数据转换并由38译码器驱动LED数码管显示温度,接下来单片机通过I/O把程序转换后的相应数据分别传送到对应模块,实现对各模块的控制功能。
2.1系统仿真图
基本的仿真图具体见图2—1所示。
图2—1基本系统仿真图(WT588D不能仿真)
2.2实物照片
具体的实物照片如图2—3所示。
图2—3实物照片
3程序流程图
Y
N
N
Y
Y
Y
N
4程序源代码(主要部分)
/************************************************************
;闪烁函数
************************************************************/
voidreade(charj)
{TemCode=dis_7[display[j]];if(j==1){LEDdot=0;}
TemScan=scan_con[j];delay(90);TemScan=0xff;
}
/************************************************************
;显示扫描函数
************************************************************/
scan()
{
chark;
for(k=0;k<4;k++)
{
TemCode=dis_7[display[k]];
if(k==1){LEDdot=1;}
TemScan=scan_con[k];delay(90);TemScan=0xff;
}
}
/************************************************************
;读出温度函数
************************************************************/
floatread_temp()
{
ow_reset();//18B20总线复位
write_byte(0xCC);//发skipROM命令
write_byte(0xBE);//发读命令
temp_data[0]=read_byte();//温度低8位
temp_data[1]=read_byte();//温度高8位
ow_reset();
write_byte(0xCC);//发skipROM命令
write_byte(0x44);//发转换命令
}
/************************************************************
;语音报告函数
************************************************************/
TemVoice()
{
for(h=0;h<200;h++)scan();
TEST_Busy();Send_threelines(13);TEST_Busy();//现在温度是
for(h=0;h<50;h++)reade(3);
if(display[3]==0x0B){Send_threelines(16);TEST_Busy();}//读负判断
for(h=0;h<50;h++)reade
(2);//程序太长不宜写在报告中,完整程序请
if(display[2]!
=0x0A&&display[2]!
=1)//联系QQ154401855(或154401856)下载
Send_threelines(display[2]);TEST_Busy();Send_threelines(10);TEST_Busy();}//读第3位如果非零且非一读几十
if(display[2]==1){Send_threelines(10);TEST_Busy();}//第三位是一则读十
for(h=0;h<50;h++)reade
(1);
if(display[2]!
=0x0A&&display[1]!
=0||display[2]==0x0A)Send_threelines(display[1]);TEST_Busy();//读第2位
for(h=0;h<50;h++){TemCode=dis_7[10];LEDdot=1;TemScan=scan_con[1];delay(90);TemScan=0xff;}
Send_threelines(14);TEST_Busy();//读小数点
for(h=0;h<50;h++)reade(0);
Send_threelines(display[0]);TEST_Busy();//读第1位
Send_threelines(11);TEST_Busy();//摄氏度
delay(300000);//适当延时以便于提醒
if(display[3]==0x0B||display[2]==0x0A||(display[2]==1&&display[1]<=9&&display[1]>=0)){Send_threelines(17);TEST_Busy();}//低温提醒负或者0~19度
if(display[3]==0x0A&&(display[2]==2&&display[1]<=9&&display[1]>=0)){Send_threelines(18);TEST_Busy();}//提醒20~29度
if(display[3]==0x0A&&display[2]>=3&&display[2]<=9){Send_threelines(19);TEST_Busy();}//高温提醒大于30度
}
/************************************************************
;主函数
************************************************************/
main()
{
uniti=0;
TemCode=0xFF;//初始化端口
TemScan=0xff;
for(h=0;h<4;h++){display[h]=0x0B;}//开始显示"-.-.-.-."
ow_reset();//开机先转换一次
write_byte(0xCC);//SkipROM
write_byte(0x44);//发转换命令
for(h=0;h<500;h++)
{chark;for(k=0;k<4;k++){TemCode=dis_7[display[k]];LEDdot=1;TemScan=scan_con[k];delay(90);TemScan=0xff;}}//显示小数点
for(t=0;t<4;t++){for(h=0;h<200;h++)reade(t);for(h=0;h<50;h++){TemCode=dis_7[10];LEDdot=1;TemScan=scan_con[t];delay(90);TemScan=0xff;}}
Send_threelines(15);TEST_Busy();Send_threelines(12);TEST_Busy();//系统读音
while
(1)
{
read_temp();work_temp();//读出DS18B20温度数据处理温度数据
for(h=0;h<750;h++,i++){scan();if(i==3750){TemVoice();i=0;}}//温度3s一扫描15s报告一次
}
}
/************************************************************
;程序结束
************************************************************/
5结论
通过本学期单片机项目设计的学习与动手制作,本设计基本上实现的预定功能,但在此基础上还可以根据不同的需求做相应的扩展,比如可以设计实现与计算机的通信,无线遥控温度的报告及测温频率的大小等。
实际设计中,我们查阅了很多相关资料和各种所需原件的技术参数,学到了大量在教材中所不能得到的知识,对我们以后的学习工作带来了很大帮助。
由于个人的知识及时间有限,设计本身不足之处可能未完全顾及,比如硬件焊接的工艺不够美观、程序优化不够精简等,还有待进一步改进。
但总体来说,本组焊接和程序的优化都做的差强人意。
特别是程序的注释条理清晰,可为修改和以后同学的借鉴节省大量时间。
由此可见,一个良好的编程习惯对于一个项目设计的重要性是不言而喻的。
6扩展部分设计思路及心得
18B20测温基本程序老师已提供,本制作主要扩展了语音存储及播放提醒功能。
扩展部分主要使用了WT588D语音芯片,电路主要由魏浩洋同学制作,不再赘述。
由于本人编程能力有限,相关程序编写方面,颇费周折,也因此获得了更多的宝贵经验和教训,现总结如下:
1、WT588D芯片采用了三线串口下载模式,具体使用过程中,我们查阅了相关资料和技术参数,最终完成了其与单片机的连接,并顺利让单片机对其进行控制。
编译语音时应注意码率的控制,太大无法识别。
在制作提醒语音时,我们使用了SmartRead软件进TTS转换,避免了语音的人为朗读差异;
2、通过修改相关参数,我们对18B20采集的温度进行转换并最终显示在LED数码管上。
然后通过程序寻找显示数字对应的语音存放地址行朗读提醒。
实际制作过程中并不清楚各种数据的进制是否还需要进行转换,所以对显示函数、扫描函数进行了深入研究,最后发现可以直接调用数码管显示的十进制温度数字,因此编程变得清晰。
3、程序编写过程中我们对出现的各种问题进行了修正,并解决了Proteus仿真后刷入程序至硬件后的Bug。
4、程序的优化已做到了我们力所能及的最好状态,且考虑了实际情况中的几乎所有情况,并最大化的避免极端情况对程序和系统的实用性所造成的冗余。
程序中各模块功能已标注的十分清晰,便于理解及修改。
5、诸如提醒温度区间的设定和采集、播放频率之类的细节问题,我们进行了考虑,最终选择了一种较好的方案。
为便于软件和硬件的完美结合,我们对I/O口进行了重新定义,使焊接和程序的编写都变得得心应手。
6、在编程过程中,没有采用数组和指针,是因为此程序需要考虑的情况太过于繁多,若不分条列举,实际编写中会发现程序可读性大大降低。
故本程序采用了分条列举的方法,本组其他同学有使用数组的,均未能将各种情况完整考虑。
有兴趣的同学可以参阅他们的程序,进行对比。
7、特别注意,由于单片机的构造机制读数时数码管不能显示。
我们完成的最终的效果是语音报告时,LED数码管的“同步”闪烁。
此处的“同步”是程序不能解决的一个巧妙解决办法。
由于C语言的代码执行是顺序的,我们查找了资料,但是最终页没有找到让多条语句同时执行的方法,不能达到读数时,数码管的显示。
所以,在这里我们编写了一个闪烁函数,由于时间间隔造成的视觉停留效果,让人觉得是报数的同时LED数码管的闪烁提示。
8、最后我们就不能语音和显示同步的问题询问了老师,得到的解答是使用中断进行控制,但是由于时间原因,我们未能进行试验,希望后来参阅的同学能在此基础上使用中断的方法进行检验。
参考文献
[1]李朝青.单片机原理及接口技术,北京:
北京航空航天大学出版社,2006;
[2]阎石.数字电子技术基础,北京:
高等教育出版社,2005。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字式 智能 语音 温度计 设计