版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 课 程 设 计 课程名称单片机课程设计 题目名称温度控制语音播报专业班级11电信(2)班学生姓名学 号指导教师罗少轩 黄迎辉 陈章宝二一四年 三月 三十一概述1 系统介绍 在无人值守的情况下实现对温度实时监测,并在温度超过设定范围时及时通知相关人员,设计了基于STC89C52单片机的智能语音报警系统,本设计采用了STC89C52单片机作为控制核心,对数字温度传感器DS18b20控制,读取温度信号并进行计算处理,当测量温度超过设定的温度范围时,控制语音芯片WT588D自动报警。整个设计系统分为部分:单片机控制、温度传感器、液晶显示、语音播报以及独立按键控制等模块。2 硬件设计2.1 MCS-5
2、1单片机MCS-51单片机,8K字节在系统可编程Flash存储器、 1000次擦写周期、全静态操作:0Hz33Hz 、三级加密程序存储器 、 32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针、掉电标识符 。P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复
3、用。在这种模式下, P0具有内部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。引脚号第二功能 P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.
4、5 MOSI(在线系统编程用)P1.6 MISO(在线系统编程用)P1.7 SCK(在线系统编程用)。P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的
5、内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为STC89C52特殊功能(第二功能)使用,如下表所示。P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(
6、外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。 RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个
7、机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。 VCC: 电源 GND: 地2.2复位电路的设计 复位使单片机处于起始状态,并从该起始状态开始运行。AT89C52的RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振动周期)以上高电平,则可使单片机复位。内部复位电路在每一个机器周期的S5P
8、2期间采样斯密特触发器的输出端,该触发器可抑制RST引脚的噪声干扰,并在复位期间不产生ALE信号,内部RAM处于不断电状态。其中的数据信息不会丢失,也即复位后,只影响SFR中的内容,内部RAM中的数据不受影响。外部复位有上电复位和按键电平复位。由于单片机运行过程中,其本身的干扰或外界干扰会导致出错,此时我们可按复位键重新开始运行。为了便于本设计运行调试,复位电路采用按键复位方式。 2.3时钟电路设计时钟电路是单片机的心
9、脏,它控制着单片机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的,其典型值为12MHZ。AT89C51内部有一个反相振荡放大器,XTAL1 和 XTAL2分别是该反向振荡放大器的输入端和输出端。该反向放大器可配置为片内振荡器,石晶振荡和陶瓷振荡均可采用。本设计采用的晶振频率为12MHZ。其时钟电路如图3.4所示。51系列单片机还可使用外部时钟。在使用外部时钟时,外部时钟必须从XTAL1输入,而XTAL2悬空。2.4 电源电路设计此设计采用5V直流电直接给整个模块供电,并连接D3,用来检测系统是否已经供电。C8为滤波电容,可使总的供电电源更稳定,以保护单片机正常工
10、作。2.5 串口通信电路串口通信采用的是MAX232。由于单片机所使用是TTL电平,高低电平为05V,而上位机使用的二RS232电平,高低电平范围为-12V+12V。所以要使用MAX232实现电平转换,其中C3、C5、C6、C7四个电容和MAX232共同组成电荷泵,实现改变电压的目的。J11为串行接口,2号为接收串口,3号为发射串口,5号接地,与MAX232和外围器件共同组成串口通信。实现上位机与单片机之间的数据传输。2.6 独立按键设计独立按键使用杜邦线与单片机相连,用于实现各种功能的控制。2.7 显示模块采用LCD1602显示屏进行显示。LCD显示屏是一种低压、微功耗的显示器件,可以显示大
11、量信息,除数字外,还可以显示字母,比传统的LED数码显示器的画面有了质的提高。虽然LCD显示器的价格比传统的LED数码管要贵些,但它的显示效果更好,是当今显示器的主流,所以采用LCD作为显示器。采用LCD,更容易实现题目的要求,对后续的功能兼容性高,只需将软件修改即可,可操作性强,易于度数,采用1602两行十六字符的显示,能同时显示时间,温度。同时,R5为电位器,可以用来调节LCD1602的屏幕显示亮度。2.8语音播报模块在本次设计中采用了DS18B20作为数据采集器,它的精度最少可以精确到0.0625,完全可以用来进行环境温度的测量。DS18B20是美国DALLAS 公司生产的单总
12、线数字温度传感器,可把温度信号直接转换成串行数字信号供微处理器处理,而且可以在一条总线上挂接任意多个DS18B20芯片,构成多点温度检测系统无需任何外加硬件。DS18B20 数字温度传感器可提供912 位温度读数,读取或写入DS18B20 的信息仅需一根总线,总线本身可以向所有挂接的DS18B20 芯片提电源,而不需额外的电源。由DS18B20 这一特点,非常适合于多点温度检测系统,硬件结构简单,方便联网,在仓储管理、工农业生产制造、气象观测、科学研究以及日常生活中被广泛应用。语音芯片采用的是WT588D,WT588D 是一款具有单片机内核的语
13、音芯片,因此,可以冠名为 WT588D 系列语音单片机。WT588D 系列语音单片机是广州唯创科技有限公司联合台湾华邦共同研发出来的集单片机和语音电路于一体的可编辑语音芯片。功能多音质好应用范围广性能稳定是WT588D 系列语音单片机的特长,弥补了以往各类语音芯片应用领域狭小的缺陷,MP3 控制模式、按键控制模式、按键组合控制模式、并口控制模式、一线串口控制模式、三线串口控制模式以及三线串口控制控制端口扩展输出模式。作为一款以语音为基础的芯片,完全支持 6K22KHz 采样率的音频加载,芯片的独到之处便是将加载的音频音质几乎完整无损的展现出来。WT588D 系列语音单片机能通过配套软件 WT5
14、88D voiceChip轻而易举的做到语音组合播放、插入完美的陶冶静音。可控制的语音地址位能达到 220 个!每个地址位里能加载可组合语音为 128 段语音!WT588D 系列语音单片机模块内置 SPI-FLASH 存储器,WT588D 系列语音单片机芯片可根据实际用法外置 SPI-FLASH 存储器,众多的控制模式、语音组合只需更换 SPI-FLASH 的内容,即可完全实现操作方式的切换。3 软件设计3.1 开发工具介绍 单片的使用除了硬件,同样也要软件的使用,我们写汇编程序编程CPU可执行的机器码有两种方法,一种是手工汇编,一种是机器汇编。机器
15、汇编通过汇编软件变为机器码,用于MSC-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从使用普通汇编语言到高级语言的不断发展,Keil是目前最流行开发MCS-51系列单片机的软件。Keil c51汇编,PLM语言和C语言的程序设计,界面友好。Keil是美国keil software公司出品的52系列兼容单片机c语言开发系统。用过汇编语言后再使用C语言来开发,体会更加深刻。 Keil C51软件提供丰富的库,与汇编相比,C语言在功能上,结构上,可读性,可维护性上有明显的优势,因而易学易用函数和功能强大的集成开发调试工具,全W
16、indows界面。另外重要的一点,只要看一下编译后生产的汇编代码,就能体会到KeilC51DE 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解,在开发大型软件时更能体现高级语言的优势。3.2 程序设计整个系统的功能实现是由硬件配合软件来实现的,当硬件基本确定后,软件的功能也就基本确定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行程序(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件是一个小的执行模块。各执行模块规划好后,就可以规划监控程序了。首先要
17、根据系统的总体功能选择一种最合适的监控程序结构,然后根据实质行的要求,合理的安排监控软件和各执行模块之间的调度关系。主程序需要以下几个模块:(1) 1602液晶显示模块:向1602的显示送数,控制系统的显示部分。(2) 温度测试及处理模块:对芯片送过来的数据进行处理。(3) 语音播报模块:进行对当时的温度进行播报。(4) 温度采集模块:用于环境温度的采集,传给单片机,进行数据处理。主程序流程图如下:开始 结束DS18b20初始化1602显示 温度T >= 300度电机停止 工作语音播报YESNO3.3 代码程序(1) 主程序及显示模块显示部分使用1602液晶显示,主函数实现对其他子函数的
18、调用,从而实现温度控制播报。sbit rs=P20;sbit wr=P21;sbit lcden=P22;sbit DC=P05; /电动机控制bit flag0;uchar display2;uchar bai,shi,ge;uchar num=0;void delayus(uint s)uint i;for(i=0; i<s; i+);for(i=0; i<s; i+);void delay(uint z) /延时函数 uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);void write_com(uchar com) /液晶写
19、指令rs=0;P1=com;lcden=0;delay(5);lcden=1 ;delay(5);lcden=0;void write_data(uchar date) /液晶写数据 rs=1; P1=date; lcden=0; delay(5); lcden=1; delay(5);lcden=0;void init() /液晶初始化wr=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);void distwo(uchar add,uchar temp)/液晶显示两位数字uch
20、ar shi,ge;shi=temp/10;ge=temp%10;write_com(0x80+add);write_data(shi|0x30);write_data(ge|0x30);void diszifu(uchar add,uchar *temp)uchar i;write_com(0x80+add);for(i=0;tempi!='0'i+) write_data(tempi);delay(5); void distemp(uchar add,uint temp)bai=temp/100;shi=temp%100/10;ge=temp%100%10;write_co
21、m(0x80+0x40+add);write_data(bai|0x30);write_data(shi|0x30);write_data(0x2e);write_data(ge|0x30);write_data(0x43);display2=(bai<<4)|(shi);display1=ge; display0=0x22;void sound_temp() /温度播报函数send_oneline(bai);delay(500);send_oneline(10);delay(500);if(shi!=0)send_oneline(shi);delay(500);if(ge!=0)
22、send_oneline(11);delay(500);send_oneline(ge);delay(500);send_oneline(12);delay(1200); void main() /主函数init();diszifu(0x40+4,"temp:");while(1)tmpchange();distemp(9,tmp();if(temp>=300) /当温度大于30度时,电动机工作,语音播报DC=0;send_oneline(13);delay(1500);sound_temp(); if(temp<300) /温度小于30度,电动机停转DC=1;
23、num+;if(num=100)/温度间隔播报num=0;sound_temp(); (2)温度采集模块温度采集使用DS18b20传感器,其具体端口设置如下:sbit DS=P00;uint temp; uint stemp=220;uint xtemp=180;/上下限温度值/延时函数void delay1(uint z) uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-); void dsreset(void) /send reset and initialization command uint i; DS=0; i=103; while(
24、i>0)i-; DS=1; i=4; while(i>0)i-;bit tmpreadbit(void) /read a bit uint i; bit dat; DS=0;i+; /i+ for delay DS=1;i+;i+; dat=DS; i=8;while(i>0)i-; return (dat);uchar tmpread(void) /read a byte date uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tmpreadbit(); dat=(j<<7)|(dat>>1); /读出的数据
25、最低位在最前面,这样刚好一个字节在DAT里 return(dat);void tmpwritebyte(uchar dat) /write a byte to ds18b20 uint i; uchar j; bit testb; for(j=1;j<=8;j+) testb=dat&0x01; dat=dat>>1; if(testb) /write 1 DS=0; i+;i+; DS=1; i=8;while(i>0)i-; else DS=0; /write 0 i=8;while(i>0)i-; DS=1; i+;i+; void tmpchang
26、e(void) /DS18B20 begin change dsreset(); delay1(1); tmpwritebyte(0xcc); / address all drivers on bus tmpwritebyte(0x44); / initiates a single temperature conversionuint tmp() /get the temperature float tt; uchar a,b; dsreset(); delay1(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); b=tmprea
27、d(); temp=b; temp<<=8; /two byte compose a int variable temp=temp|a; tt=temp*0.0625; temp=tt*10+0.5; return temp;(3) 语音播报模块sbit rst=P34;sbit sda=P35;sbit key=P20;void delaym(uint z) uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);void delayu(uint z) uint x,y; for(x=z;x>0;x-) for(y=10;y>
28、;0;y-);void send_oneline(uchar add) uchar i; rst=0; delaym(1); rst=1; delaym(17); /*复位延时 17MS*/ rst=1; delaym(6); /* delay 6ms */ sda=0; delaym(5); /* delay 5ms */ for(i=0;i<8;i+) sda=1; if(add & 1) delayu(4); /* 400us */ sda=0; delayu(2); /* 200us */ else delayu(2); /* 200us */ sda=0; delayu
29、(4); /* 400us */ add>>=1; sda=1; 五总结近年来,随着集成电路的飞速发展,单片语音集成电路领域出现重大变革,产生了许多新的技术和产品,开拓了更广泛的应用领域,并朝着更大容量、更优音质、更高智能、更具灵活性的发展。通信设备电话机、智能仪器仪表、治安报警系统、语音报站/报数/报价器、语音讲解系统、便携式语音记录装置、语音复读机、教学仪器、智能玩具和高档电子礼品等语音产品飞进了我们的生活里。语音技术的发展使得许多系统更加友好,更方便我们对他们的控制。几乎在各个方面都可以充分发挥它的优势,比如本文中的具有语音播报功能的水温控制系统,当然在其他方面也可以有很好的
30、应用,比如说具有语音功能的键盘、有语音功能的计算机控制系统、语音功能的家电、玩具等等。语音功能的实现,可以减少事故的发生,更可以节省资源的利用。所以说,语音功能的实现有助于生活的改善。有着良好的市场前景。然而,此设计毕竟有它的局限性。它并不能随时修改语音芯片中的存储信息,根据个人的喜好来放音。因为其语音地址对于普通人来说是不可知的和不可操作的。在手机应用中,已经可以用自己的或者是下载的铃声来作为来电声。因此,语音系统必将朝着有操作系统的嵌入式方向发展,来满足人们日益增长的需求。新的时代已经来临,嵌入式系统同语音系统的有机结合将越来越方便人类的利用,个人个性的需求也将得到很好的满足!附录一:Bill of MaterialsBill o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分析土壤形成的原因课件高中地理鲁教版必修一()
- 夫妻购买房屋合同范本
- Module8UnitWhydoyouhavecupsonyourheads(课件)-六年级英语下册(外研版(0))
- 建筑工程结算合同范本
- UnitCulturalheritageVocabulary单词听力课阅读课课件-高中英语人教版
- 托管中心租赁合同范本
- 建安施工合同增补协议
- 夫妻销售汽车合同范本
- 天兴粮油购销合同范本
- 技术服务合同转让协议
- 感染患者终末消毒操作规范
- 学生公寓物业管理服务服务方案投标文件(技术方案)
- 空压机精益设备管理制度
- 脑供血不足病人的护理查房-课件
- 文控文员工作总结
- 团体团建跳舞活动方案
- 食品加工企业主要管理人员及工程技术人员的配备计划
- 儿童语言发育迟缓课件
- 2025至2030年中国汽车用碳纤维行业竞争格局分析及市场需求前景报告
- 正循环成孔钻孔灌注桩施工方案
- 焊接作业指导书完整版
评论
0/150
提交评论