基于单片机课程设计

上传人:1888****888 文档编号:39367360 上传时间:2021-11-10 格式:DOC 页数:22 大小:4.66MB
收藏 版权申诉 举报 下载
基于单片机课程设计_第1页
第1页 / 共22页
基于单片机课程设计_第2页
第2页 / 共22页
基于单片机课程设计_第3页
第3页 / 共22页
资源描述:

《基于单片机课程设计》由会员分享,可在线阅读,更多相关《基于单片机课程设计(22页珍藏版)》请在装配图网上搜索。

1、摘要 本文的主要内容是将红外遥控装置与51系列单片机相结合,设计成的一种带有语音播报功能的简易电子计算器。系统主要由STC12C5A60S2单片机、OLED12864显示屏、语音播报芯片以及红外无线遥控器构成。数据的输入方式使用红外遥控器,实现了近距离的无线数据输入。系统在进行运算时也同时控制OLED12864显示屏和语音播报芯片WT-588D进行实时的运算式与运算结果的显示与播报。关键字:51,OLED12864,WT-588D ,红外无线遥控器Abstract Thisdesignistheinfraredwirelesscontrollerunitcombinedwith51series

2、single-chip,designedtobeasimpleelectroniccalculatorwithavoicebroadcastcapability.SystemismainlycomposedofSTC12C5A60S2,OLED12864screen,WT-588Dsingle-chipvoicebroadcastICandIRwirelessremotecontrolform.Dataisenteredusinganinfraredremotecontrol,forshortdistancewirelessdatainput.Whileyoursystemisbeingeva

3、luatedatthesametimeWT-588DcontrolOLED12864displayandvoicebroadcastchipforreal-timecalculationandcalculationresultsaredisplayedandbroadcast.DesignbysimplearithmeticbasedonMCU.Keywords: STC12C5A60S2 single-chip,OLED12864,WT588D,Theinfraredwirelesscontroller 目录第一章 整体设计方案11.1 系统概述1 1.2 系统流程图1第二章 硬件设计22.

4、1 单片机系统22.2 所用外设电路4 2.2.1 WT588D语音芯片4 2.2.2红外通信5 2.2.3OLED显示屏5 2.2.电源模块6第三章 软件设计 73.1 开发环境与调试工具73.2 各模块软件设计83.2.1 语音电路的软件设计83.2.2 红外接收电路的软件设计103.2.3 OLED显示模块的软件设计123.2.4 计算器软件的设计143.3 程序总体结构16参考文献18第一章 整体设计方案1.1 系统概述本设计是基于51系列单片机的简易计算器的设计,设计内容包括软件设计及硬件设计。硬件电路设计包括单片机最小系统、红外接收电路、语音模块电路和显示电路。软件设计部分涉及计算

5、器算法的实现、单片机外部中断、定时器中断、人机交互模块通信等。系统单片机采用STC12C5A60S2,在系统正常工作时单片机通过串行通信方式控制OLED12864显示屏和语音模块WT-588D进行数据的实时显示与播报。输入的红外信号通过红外一体接收头HX1838进行红外数据的接收与处理,处理后的信号送入单片机的外部中断口后,单片机进行信号识别与数据处理,并通过算法实现简易计算器的功能。1.2 系统流程图系统流程图见图1.1开始红外接收数据语音播报根据接收数据进行四位十进制运算结束图1.1 流程图第二章 硬件设计2.1 单片机系统图2.1.1为51单片机系统的原理图:(1)单片机I/O口: 所用

6、的开发版把所有I/O口引出方便连接其他外设。STC89C52单片机的最小系统由电源、地、时钟电路、复位电路组成,如图2-2所示。图中引脚RST所接电路是复位电路,复位电路可以在程序运行出错或操作错误使系统处于死锁状态时手动复位单片机。在复位后,单片机内存以及各寄存器的值变为初始值。按键手动电平复位是通过RESET端经电阻与电源VCC接通来实现。单片机使用内部时钟时,时钟引脚XTAL1和XTAL2,外接石英晶体和微调电容,构成了一个稳定的自激振荡电路,电路中的电容C1和C2的典型值通常选择为1533pF,该电容的大小会影响振荡器频率的高低。晶体震荡频率的范围通常是在1.240MHz。晶体的频率越

7、高,单片机的处理速度也就越快。在硬件电路的设计时,晶体和电容尽可能与单片机芯片靠近,以减少寄生电容,可以保证振荡器更稳定、可靠的工作。图2.1.1 单片机引脚(2)晶振电路: 图2.1.2为晶振电路。本系统对工作频率要求不高,故选用频率为11.0592MHZ的晶振。图2.1.2 晶振电路(3) 复位电路:图2.1.3 为复位电路图2.1.3 复位电路 按键瞬间电容放电,所以RST脚为高电平。随着时间的飞逝(电容充电),稳定后VCC的电压实际上是加在电容上的。电容下极板也就是RST脚最终为0V。这样RST持续一段时间高电平后最终稳定在低电平,高电平持续时间由RC时间常数决定。这就是上电高电平复位

8、2.2 所用外设电路2.2.1 语音模块图2.2.1 语音模块所使用的管脚,除了电源和地,还包括一个复位引脚,以及一个3线信号传输的IO口,分别为芯片片选端(CS),时钟线(CLK),和数据线(DATA),它通过特殊的时序实现寻址读取信息,实现语音播放。WT588D软件操作方式简洁易懂,高度集成了语音拟合技术,大大减少了语音模块的开发时间。并且完全支持在线下载,即WT588D在通电的情况下,一样可以通过下载器给关联的SPI-Flash下载信息,下载完成后只要给WT588D单片机语音芯片电路复位一下,就能更新到新下载的控制模式。这一优点给操作人员带来极大的方便。2.2.2 红外发送接收模块图2.

9、2.2 这是一个比较麻烦的模块,因为他没有实际的信号传输导线,只依靠红外线传输信号。它利用调制解调的原理,实现信息的获取。但红外传输模块的最大好处就是大大节约了51单片机本就不充裕的IO口资源。按照传统理念,一个计算器10个数字,运算符5个,小数点1个,就要占用8个IO口。现在只需要1个。但软件处理相对复杂,会在之后进行解释。HX1838的三个管脚分别是GND端、5V电源端、解调信号输出端,本设计将其电源端与GND端分别和单片机的电源与GND端相连,解调信号输出端接到单片机的P3.2端口,由此红外接收头输出信号时将通过P3.2端口触发单片机外部中断,引导单片机进行数据接收、解码。红外接收电路如

10、图2.2.2所示。2.2.3 12864oledOLED,集分辨率高,体积小,占用资源少于一身,应用十分广泛,用它作为计算器的显示部分,再合适不过。自身SPI通信使用4个引脚即可实现包括数字,图像,字母,汉字等各式图形,功能十分强大。本设计选用的OLED分辨率为12864,即有12864个像素点。就显示内容而言,OLED和普通的LCD12864并没有区别,且由于屏幕尺寸较小,显示效果显得极其细腻。本设计使用的OLED采用的驱动器为SSD1306。SSD1306是一个12864矩阵像素的OLED/PLED段式驱动器,其拥有5种接口方式,本设计中对于显示的实时性与操作频率均比较低,所以选用的是4线

11、SPI串行通信方式,使用的是OLED的SCL(SCLK)、SDA(MOSI)、RST、D/C四个端口,分别接至单片机的P2.0、P2.1、P2.2、P2.3端口。图2.2.3 OLED显示屏与单片机的接口原理图2.2.4 电源模块本文所设计的硬件电路除了OLED使用3.3v供电,其余供电电压均为5V,因此本设计使用的是5V的串口供电来给整个系统供电,将5V输入电压通过由AMS1117三端稳压器构成的稳压电路将输入电压转换为3.3V供给整个系统使用。电源电路设计如图2.2.4所示:图2.2.4第三章 软件设计3.1 开发环境与调试工具软件设计所用的开发环境是Keil uVision4下的keil

12、 C51 V9.52. 它的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。开发环境界面如下图。图3.1.1 开发环境界面代码烧写工具选用STC-ISP V4.88. STC-ISP 是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。 3.1.2 烧录软件3.2 各模块软件设计 3.2.1 语音模块 语音模块作为计算器的辅助功能,在软件过程中相对独立。本设计采用的语音芯片WT588D,通信方式在其上为端已设置为三线串口模式,该模式由三

13、条通信线组成,分别是片选CS,数据DATA,时钟CLK,时序符合标准SPI通信方式。通过三线串口可以实现对WT588D语音模块的命令控制和语音播放。语音模块控制时序如图3.2.1(a)所示。当系统需要进行语音播报时,单片机直接发送地址数据即可触发语音模块进行播放语音。图中D0-D7表示一个地址或一个命令数据。 图3.2.1(a) 当需要语音模块播报时,软件操作流程先将芯片片选端拉低(低电平有效)。并且语音模块在时钟的上升沿到来时接收数据,时钟周期介于100us2ms之间。数据成功接收后,语音播放BUSY输出在20ms之后做出响应。程序如图:图3.2.1(b)注:CLK_3A为时钟端,CS_3A

14、为芯片片选端,sda为数据端,rst为复位端3.2.2 红外发射接收模块遥控器调制信号接收器解调信号单片机记录数据时间(解码)得到最终信号图3.2.2(a)接收端采用HX1838一体化红外接收头接收红外信号,接收头将接收到的红外信号进行解码后输出给单片机的外部中断0,并触发外部中断0服务子程序,在外部中断0服务子程序内,程序对连续的外部中断触发信号的间隔时间进行记录。时间统计的方法是利用定时器0进行基础时间设定,并在定时器0的服务子程序中对定时器0触发次数进行累加,当外部中断0被起始码触发后,外部中断0服务子程序打开定时器0并将定时器0内的累加值清零,直到外部中断0再次被触发后,记录当前的累加

15、值并再次清零,当判断数据接收完成后,关闭定时器0并进行数据处理。红外解码流程图如图3.2.2(b)所示。图3.2.2(b)红外遥控器发送的红外信号分为四个部分,分别是:引导码,用户码,数据码及数据反码,如图3.2.2(c)所示。引导码的作用是用来进行数据引导,当单片机判断接收到引导码后才可使能后续的数据接收。用户码是用来判断数据发送的用户,当数据发送用户有多个时,用户码即变得有效而实用。数据码及数据反码是用户发送的数据指令,数据码与数据反码可相互校验,以验证数据传输的准确性。图3.2.2(c) 红外信号的数据结构 在实际通信时,当红外一体化接收头接收到红外信号后即触发单片机外部中断0,在外部中

16、断0服务子程序内,程序将对接收到的信号进行引导码判断及时间间隔记录,当判断到引导码时,程序将对存储数据的数组进行初始化操作,随着信号的到来,程序将控制各个信号依次存储在该数组内,在判断到信号接收完成后,系统将使能数据处理。由于是单用户操作,该单片机处理的只有数据码,也节约了单片机的处理时间。图3.2.2(c)注:irtime即是采样时间,irdata是包含32位数据的数组,数组元素为各位所占的单位时长,用来判断是0还是13.2.3 OLED显示模块的软件设计本设计采用的显示模块式OLED12864,根据系统特点,通信方式选择4线SPI串行通信方式,由四条通信线组成,分别是片选CS、数据/命令控

17、制引脚D/C、数据SDIN和时钟SCLK,除去数据/命令控制引脚外通信时序符合标准SPI通信方式。在实现通信时,程序通过控制数据/命令控制引脚的电平来选择发送的内容为显示数据还是指令。剩下的三条数据线构成的三线串口可以实现对OLED12864的命令控制及数据传输。OLED12864控制时序如图3.2.3(a)所示。D7-D0表示一个地址或命令数据。通信时片选信号CS先拉低以唤醒OLED12864控制芯片,由于接收数据时高位在先,发送数据时先发高位,再发低位。在时钟的上升沿接收数据。图3.2.3(a)部分代码:3.2.4计算器实现模块计算器算法的设计是软件设计中的核心部分,亦是本设计的核心部分。

18、也是一个流程繁琐的系统。按照设计要求,本设计实现了XXXX . XX与XXXX两种格式的数任意搭配的简单“+”“-”“*”“/”运算,计算输出结果的范围应满足-9999.99+9999.99,超出计算范围后输出将自动归零。计算器算法根据设计要求分为了三个大的步骤来实现,分别是:1、输入被运算数1及运算符。2、输入被运算数2及等于号。3、计算结果处理与输出。计算器算法总流程图如图3.2.4所示。图3.2.41、输入被运算数1及运算符。顾名思义该步骤旨在输入第一个数及数算符,当红外接收到数据并处理完成,判断输入的按键并非清除键后,程序将检测输入的按键是否为负号。如果是负号则将负号记录,等待第一个数

19、输入完毕后进行数值取负号处理;如果不是负号则判断此按键是否为功能键。如果此按键非功能键则将此按键作数字键处理,当做第一个数的有效数字存储至数组中等待进行十进制加权。如果此按键是功能键则判断此按键是否为小数点;如果此按键代表小数点,则将已输入的有效数字进行十进制整数加权处理,作为第一个数的整数部分保存下来,并小数点记录,等待第一个数输入完毕后进行整数部分与小数部分结合处理。如果此按键不是小数点,则将此按键作为运算符处理,结束第一个数的输入,并将小数点输入后记录的数字进行十进制小数加权后,与整数部分相加,得到输入的第一个小数并记录;如果运算符输入之前不存在小数点输入,则将此前输入的所有数作十进制整

20、数加权处理,得到输入的第一个整数并记录。最后将得到的第一个数进行负号处理并保存运算符。2、输入被运算数2及等于号。该步骤数字处理方法与第一个数字输入的处理方法相同,只是将运算符检测替换成了等于号检测,当系统检测到等于号后,结束第二个数的输入,并将小数点输入后记录的数字进行十进制小数加权后,与整数部分相加,得到输入的第二个小数并记录;如果等于号输入之前不存在小数点输入,则将此前输入的所有数作十进制整数加权处理,得到输入的第二个整数并记录。最后将得到的第二个数也进行负号处理后读取步骤一保存的运算符来进行判断,以确定输入的两个实数的+”“-”“*”“/”运算,运算后保存运算结果。3、计算结果处理与输

21、出。当步骤一与步骤二运行结束后,系统将执行数据处理函数,程序首先判断计算结果是否超出显示范围,如果在显示范围内程序将对运算结果进行数据提取并显示与播报。进行数据提取时程序首先判断运算结果是否为负数,若运算结果为负数,则第一个输出负号后将运算结果进行取正处理。接着将运算结果进行取整处理,经过两次处理完的运算结果变成了一个0+9999999内的正整数,然后程序将运算结果进行整数部分显示,在显示的过程中为了输出的格式美观,程序特地加入了数据格式处理,以防止出现多余的无效数字“0”。在整数部分显示完毕后程序判断运算结果是否存在小数部分,若无小数部分则输出结束。若有小数部分则控制输出小数点后进行小数部分

22、的数据显示。同样为了输出格式的美观,小数输出部分也特地加入了数据格式处理程序。至此数据处理完毕。整个计算过程也完成,在进行清零键清零后可进行下一次运算。清零键在任意时刻按下均可以对运算过程进行清零处理。3.3 程序总体结构1、单片机最小系统的调试。用万用表仔细检查电路的连接是否正确,尤其是要注意电源极性是否正确,在确认硬件电路连接无误后,上电使用STC-ISP向单片机中烧入官方测试程序,如果能正常写入并运行,说明单片机最小系统可以正常工作。2、红外接收电路的调试。选择合适的红外接收头后,根据硬件设计图焊接红外接收电路,按照电路图将红外接收电路与单片机相连,通过红外遥控器发射信号,观察单片机P0

23、口接入的8位LED灯的亮灭情况,以判断数据接收是否正确。3、OLED显示模块的调试。根据硬件设计图,焊接好OLED接口电路后,按照电路图将OLED与单片机相连,上电后观察OLED的显示情况,并多次修改显示内容或是改变显示的位置,从而测试OLED显示屏是否可以正常可靠地工作。4、WT588D语音芯片的调试。根据硬件设计图,焊接好语音芯片接口电路,并根据系统要求将语音芯片在电脑上配置成系统所需的通信方式与播报内容。完成语音芯片的配置后按照电路图将语音模块与单片机相连,经确认无误后上电,给语音芯片发送语音播报信号,测试是否可以正确播报语言文件。至此,几个主要的模块已基本完成独立调试工作,接下来的主要任务是要把各个模块整合到一起,构成一个系统进行综合调试,使得系统能够正常稳定的工作。如图3.3.图3.3系统综合调试参考文献(1) 郭天祥,51单片机C语言教程.北京.电子工业出版社.2009.(2) 袁东,51单片机应用开发实战手册.电子工业出版社.2011(3) 谭浩强,C程序设计教程.北京.清华大学出版社.2003

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!