电路图如下:
图3-10 晶振与复位电路
3.4 LED显示电路
LED显示有静态显示和动态显示两种显示方式。本设计使用并行输入硬件译码静态显示电路,静态显示电路中,各位可独立显示,只要在该位的段码线上保持段码电平,该位就能保持相应的显示字符。电路中采用了锁存译码器MC14495将P1口低4位输出的BCD码译成七段字型码,利用P1口高四位做为各锁存译码器的所存信号,实现稳定显示。LED使用的是共阴极7段数码管。
数码管显示电路如下
11
图3-11 数码管显示电路
3.5键盘电路
键盘有两种工作方式:编码式键盘和非编码式键盘。处理方式有扫描法和线反转法。本设计采用的是非编码键盘,并利用扫描法处理按键,消抖由软件实现。 键盘扫描电路图3-12:
图3-12 按键电路
3.6报警电路 报警电路图3-13:
图3-13 报警电路
四、软件设计
12
4.1 主程序框图
主程序流程图如下图4-1所示。
LCD显示子程序 初始化 开始
Y 大于阈值? 数据处理子程序 N 键盘扫描子程序 A/D转换子程序
声光报警 图4-1 主程序框图
4.2 数据采集子程序程序框图
A/D转换子程序流程图如下图3-2所示。ADC0809初始化后,把0通道输入的0-5V的模拟信号转换为对应的数字量OOH-FFH,然后将对应数值存储到内存单元。程序框图如图4-2
启动ADC0809通道,并延时100μs 开始
N 转换完? Y 读出A/D转换结果 结果存入内存单元 13
返回
图4-2 数据采集子程序框图
4.3报警子程序程序框图
系统设定阈值并保存在以50H开始的3个单元,为了便于比较和显示,阈值的千位放入50H中,百位和十位放入5lH,个位放人52H中。报警电路分为蜂鸣器报警电路和LED发光报警电路组成。当输入端P3.5为低电平时,有电流通过蜂鸣器,蜂鸣器发出声音报警。而当输入端为高电平时不报警。
报警子程序执行之前,将报警阈值转换为压缩的BCD码并存放在两个存储单元中。传感器输入值A/D转换后,调用比较程序,经过数据处理后显示的测量值与阈值比较,小于阈值则继续执行显示程序。若大于阈值则将单片机的P3.5口清零进行声光报警。40H、4lH、42H单元存放A/D转换后,并进行十进制转换后的结果。40H和50H分别存放的是处理后的测量值与阈值的千位的压缩BCD码,41H和51H分别存放的是处理后的测量值与阈值的百位、十位压缩的BCD码,42H和52H分别存放的是处理后的测量值与阈值的个位的压缩BCD码。程序首先对40H、50H中的值进行比较大小,如果40H中的值大于50H中的值,则进行报警。依此类推,比较41H和51H,42H和52H。程序框图如图4-3:
开始 Y 40H中的BCD码大? N与阈值相等? Y 41H中的BCD码大? N与阈值相等? Y 42H中的BCD码大? N报警 NY N Y 14
图4-3 报警子程序流程框图
五、课程设计系的心得体会
经过一周的努力,终于完成了智能仪器的课程设计。这是我第一次基于单片机独立设计一个东西,并且老师只给出了大致要求。这对于我来说是很有挑战性的。
首先这是一个基于单片机的课程设计,单片机是这学期学习的课程,虽然不陌生,但是用起来还发现很多的问题。硬件方面还好解决,弄明白就可以了,但软件方面就非常困难了,虽然以前还做过这方面的实验,但那都是是些简单应用。这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。
其次,就是使用到的各种元器件。这次我使用的基本上都是已经学过的元件,但真正用起来才发现自己还差的很多,所以我又重新对所用到的器件仔仔细细,认认真真的研究了一遍从引脚,到时序,再到最后的电路整体构成,下了非常大的功夫才最后弄出来。
回顾起此次单片机课程设计,我仍感慨颇多。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和
15