当前位置:文档之家› 嵌入式微控制器课程设计报告

嵌入式微控制器课程设计报告

嵌入式系统设计与综合实验设计报告设计题目:简易数字电压计专业:班级:设计者:学号:指导教师:时间:目录一系统设计要求 (3)1.1设计目的 (3)1.2设计内容 (3)1.3设计要求 (3)二、系统总体设计方案 (4)2.1设计思想 (4)2.2系统组成 (4)2.3工作原理说明 (4)2.4方案设计 (4)三、系统硬件设计 (6)3.1系统硬件设计方案 (6)3.2系统硬件连线图 (6)四、系统软件设计 (8)4.1 ADC0808转换模块 (8)4.2 LCD显示模块 (9)4.3 主程序 (9)4.4 程序算法分析 (9)4.5关键程序段说明 (10)五、系统调试及结论 (11)5.1.调试方法 (11)5.2.设计、调试过程中重点问题及解决方法 (11)5.3.运行结果及结论 (12)5.3.1运行结果 (12)5.3.2结论 (15)六、设计体会 (16)七、参考文献 (17)八、源程序 (17)8.1 main主程序 (18)8.2 LCD显示程序 (25)8.3 字模程序 (31)一、系统设计要求1.1、设计目的通过数字电压表的设计,使同学们进一步掌握:(1)AT89C51汇编语言程序的设计和调试;(2)信号电压的数字测量方法;(3)AD0808转换器的基本工作原理和应用;(4)微机基本应用系统的设计方法;1.2、设计内容设计一个基于单片机控制的简易数字电压表,利用A/D实现多通道采样模拟电压值,该数字电压表可以测量0~5V的3路输入电压值,并在LCD显示器上3路同时显示四位数的电压值或单路选择显示四位数的电压值(或在四位LED数码管上轮流显示或单路选择显示电压值)。

测量最小分辨率为0.019V,测量误差约为士0.02V。

通过按键任意设置电压上下限值,当电压超过上下限值时,LED或者蜂鸣器报警。

设计相应的A/D、键盘、显示接口电路,可在线键盘参数设置、定时检测、显示、报警。

1.3设计要求(1)针对实验装置已有条件,设计电压测量原理线路;(2)编制相应的测试软件,实现电压测量;(3)实际上机调试,完成综合试验;(4)编写设计说明书(含原理图,程序及说明,实验方法,过程及结果)。

二、系统总体设计方案2.1设计思想⑴根据设计要求,选择AT89C51单片机为核心控制器件。

⑵A/D转换采用ADC0808实现,与单片机的接口为P0口和P1口的引脚。

⑶电压显示采用LCD显示器。

⑷LCD显示器的输入,由并行端口P2产生2.2系统组成整个系统由AT89C51、LCD显示器、ADC0808、晶振组成2.3工作原理说明3路数字电压表主要利用A/D转换器,其过程为如下:先用A/D转换器对各路电压值进行采样,得到相应的数字量,再按数字量与模拟量成比例关系运算得到相应的模拟电压值,然后把模拟值通过LCD显示出来。

设计时假设待测的输入电压为3路,电压值的范围为0—5v,要求能在4位LCD显示器上同时显示或单路显示。

测量的最小分辨率为0.019v。

根据系统的功能要求,控制系统采用AT89C51单片机,A/D转换器。

当输入电压为5V时,输出的数据值为255(0FFH),因此最大分辨率为0.0196V(5/255)。

ADC0809具有8路模拟量输入端口,通过3位地址输入端能从8路中选择3路进行转换。

如每隔一段时间依次轮流改变3位地址输入端的地址,就能依次对3路输入电压进行测量。

LCD显示器显示采用软件译码动态显示。

通过按键选择可以修改显示数据的上下限2.4 设计方案硬件电路设计由5个部分组成; A/D转换电路,AT89C51单片机系统,LCD 显示系统、时钟电路以及测量电压输入电路。

硬件电路设计框图如图2-1所示图2-1 数字电压表系统硬件设计框图三、系统硬件设计3.1系统硬件设计方案系统硬件连线图如图3.2所示,本系统设计比较简单,数据处理量较小,选用AT89C51作为系统核心部分,显示部分用LCD显示器显示相应的电压数据,用虚拟仪器里的电压表可以观察显示对应LCD显示器的显示电压值,通过计算可以观察显示的电压和实际电压是否一致,并可以计算绝对误差的大小单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。

CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。

MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路[1]。

本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和 2个电容即可,如图3-1所示。

电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是30±10pF,在这个系统中选择了30pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。

3.2硬件连线图硬件连线图如图3-2,整个系统由A/D转换电路,AT89C51单片机系统,LCD 显示系统、时钟电路以及测量电压输入电路图3-2 硬件连线图四、系统软件设计4.1 ADC0808转换模块A/D转换子程序用于对ADC0808中的3路输入模拟电压进行A/D转换,并将转换的数值存入3个相应的存储单元中,如图4-1所示。

A/D转换子程序每隔一定时间调用一次,即隔一段时间对输入电压采样一次。

A/D转换流程图(图4-1)图4-1 A/D转换流程图4.2 lcd显示模块显示子程序采用动态扫描实现四位LCD显示器的数值显示,在采用动态扫描显示方式时,要使得LCD显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,为了能够产生比较好的显示效果,本系统显示模块LCD的采用300kHz 的频率。

在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现定时,通过软件延时程序来实现延时。

4.3主程序程序流程图(图4-2)图4-2 主程序程序流程图4.4 程序算法分析程序开始开辟相应空间用于存放lcd显示器字型码。

初始化显示设计者的专业、班级、学号姓名。

用A/D转换器对各路电压值进行采样,得到相应的数字量,再按数字量与模拟量成比例关系运算得到相应的模拟电压值,然后把模拟值通过LCD显示出来4.5.关键程序段说明显示程序:四位LCD显示器,先在左半边屏写入yy 列地址, lie 显示列数, xx 行地址,然后在右半边屏写入yy 列地址, lie 显示列数, xx 行地址,通过调用事先写好的要写入子的字模,在lcd显示屏上显示要显示的字。

五、课程设计及调试中遇到的问题及解决方法5.1调试方法利用proteus仿真,对程序反复进行编译,结合单步调试方法。

5.2设计、调试中遇到的重点问题及解决方法1)开始设计时,没有用到上拉电阻,直接用LCD显示器的DB引脚与AT89C51的P2口相连,后来通过翻网上查资料才知道使用上拉电阻与LCD显示器连接,是LCD显示器得到正确使用2)设计三个通道测电压时,在通道三上设计采集正弦的电压,由于正弦的幅值随周期一直在变化,不能静态显示,于是只能将对正弦电压的采集改成直流采集,若想对正弦电压进行测量,只能将仿真暂停,实现对正弦某个时间点的电压采集测量显示(正弦某个点测量如图5-1)3)LCD显示电压值时,当显示的电压值超过电压表的量程时,通道一的显示总会出现闪烁的问题,最开始以为是频率或者是延时的问题,后来通过检查程序,发现是在显示程序模块调用显示钱,出现清空程序而导致显示闪烁,将清空程序删除后,显示正常。

4)测量显示时,显示的量程不能达到5v,通过修改编译程序是问题得到解决5)调用显示子程序,还无法实现实时监测。

因为若在中断中调用了显示,显示的延时占用过长系统时间,会发生中断时序错乱,从而导致无法及时读取计数值。

5.3.运行结果及结论5.3.1运行结果1、通道三正弦某个点测量,实际值1.29v,测量值1.31v,绝对误差0.02v,如图5-1图5-1 正弦某个时间点的测量值2、LCD的初始化(显示设计者的专业班级、学号、姓名),如图5-2图5-2 LCD初始化3、通道一、二、三的电压值,实际值分别3.25v、2.20v、1.65v,测量值分别为3.25v、2.19v、1.64v,绝对误差分别为0v、0.01v,0.01v,如图5-3图5-3通道一、二、三的电压值4、通过按键改变量程上下限,按键改变下限为1v,按键改变上限为4v(初始化量程为0-5v),如图5-4图5-4 通过按键改变量程上下限5、通过按键改变量程上下限,而使显示的电压值超出上下限,通过显示“超上限”、“超下限”进行报警,量程为1-4v时,通道三为0.06v,超出下限1v;量程为1-3v时,通道一为3.45v,超出量程上限3V如图5-5图5-5 电压显示值超出量程范围内5.3.2结论程序调试完全正确后,利用proteus进行仿真,LCD显示相应的电压,基本符合设计要求六、设计体会从一开始的源代码编写我已经感觉到这次课程设计的重要与必要,所以我很认真的完成了这次的任务,设计过程中感觉到单片机知识的不足与欠缺,不过通过查资料和思考,最终还是成功完成了本次设计。

经过一段时间的努力,基于单片机的简易数字电压表基本完成。

但设计中的不足之处仍然存在。

这次设计是我第二次设计电路,并用Proteus实现了仿真。

在这过程中,我对电路设计,单片机的使用等都有了新的认识。

通过这次设计学会了Proteus和Keil软件的使用方法,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。

基于单片机的数字电压表使用性强、结构简单、成本低、外接元件少。

在实际应用工作应能好,测量电压准确,精度高。

系统功能、指标达到了课题的预期要求、系统在硬件设计上充分考虑了可扩展性,经过一定的改造,可以增加功能。

本文设计主要实现了简易数字电压表测量一路电压的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。

通过本次设计,我对单片机这门课有了进一步的了解。

无论是在硬件连接方面还是在软件编程方面。

本次设计采用了AT89C51单片机芯片,与以往的单片机相比增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。

设计中还用到了模/数转换芯片ADC0808,以前在学单片机课程时只是对其理论知识有了初步的理解。

通过这次设计,对它的工作原理有了更深的理解。

在调试过程中遇到很多问题,硬件上的理论知识学得不够扎实,对电路的仿真方面也不够熟练。

相关主题