沈阳工业大学本科生毕业设计(论文)
有BCD 译码、闪烁、移位等功能;同时还可以进行64 键的键盘扫描;CH451 通过1 线或者可以级联的4 线串行接口与单片机等交换数据;并且提供上电复位和看门狗等监控功能。本系统的设计主要应用CH451芯片来实现LED显示和键盘扫描功能,同时采用4线与单片机进行通讯连接,因此下面对这两项功能进行简单说明。
3.4.1显示驱动功能:
CH451对LED采用动态扫描驱动,从DIG0到DIG5,如果有一个引脚吸入电流其它引脚则不再吸入电流。因其有强大的电流驱动级,故可以直接驱动共阴极LED。段引脚SEG6~SEG0分别对应着LED的段G到段A,小数点由段驱动引脚SEG7控制,字驱动引脚DIG5~DIG0分别连接6个LED的阴极。实际上,在系统板上的LED并不是同时显示的,而是从左到右依次被点亮和显示的,由于LED之间显示的时间差特别小,人的肉眼是无法分辨出来的,故在LED显示的时候我们看到的是连续的LED数字显示。这样一来我们就可以方便的编写程序,来实现所要达到的功能。
CH451默认工作在不译码方式,这时候多数应用于发光二极管阵列的显示驱动。当然我们可以通过设定使其工作在BCD译码方式,这种方式主要应用于LED驱动,单片机只要给出二进制数BCD码,CH451将对其译码后直接驱动LED显示相应的字符,使得单片机自身不再需要进行译码操作,简化了单片机的运算和处理。本系统的设计中就是采用这样的方法,使用CH451的BCD译码方式来驱动LED显示功能[14]。如图3-8所示。
16
沈阳工业大学本科生毕业设计(论文)
图3-8 显示驱动CH451
3.4.2键盘扫描功能:
CH451的键盘扫描功能支持8×8的矩阵键盘扫描。其在矩阵扫描期间,SEG7~SEG0引脚均带有内部带有下拉电阻,这些引脚用于行扫描输;DIG5~DIG0引脚用于列扫描输出。需要注意的是当启动键盘扫描功能后,DOUT引脚的功能将会由串行接口的数据变为键盘中断以及数据输出。
键盘扫描是定期在显示驱动过程中插入的。在键盘扫描期间,DIG5~DIG0 引脚按照DIG0 至DIG5 的顺序依次输出高电平,其余5 个引脚依次输出低电平;此时SEG7~SEG0 引脚的输出被禁止,当没有键被按下时,SEG7~SEG0 都被下拉为低电平;当有键被按下时,例如连接DIG5 与SEG6 的键被按下,则当DIG5 输出高电平时SEG6 检测到高电平;CH451实行两次扫描,只有两次扫描结果相同时,按键才会被确认,这样做的目的就是为了防止键盘因抖动而误判断。一旦CH451检测到有效按键,则其会记录下按键,并会通过DOUT产生中断,这个时候单片机可以读取按键的代码,确定那个按键被按下。在没有检测到新的有效按键之前,CH451不会再产生任何有效中断。简言之,CH451不支持组合键,同一时刻只能有一个有效按键被按下。
CH451 所提供的按键代码为7 位,位2~位0 是列扫描码,位5~位3 是行扫描码,位6 是状态码(键按下为1,键释放为0)。事实上单片机可以在任何时候读取按键代码,但是通常情况下单片机都会在CH451产生有效中断时读取按键代码。此外,假如想知道按键何时被释放,单片机可以用查询的方式来实现。键盘模块如图3-9所示。
17
沈阳工业大学本科生毕业设计(论文)
图3-9 键盘模块
3.5 报警电路设计
本系统的设计中要求对满足相应条件时提供蜂鸣器发生报警,要求条件为:测定温度大于80℃。压力大于70kPa.在这种情况下即认为车辆散热系统不符合安全要求,此时系统必须发声提示用户当前状态,使得用户在知晓当前情况后进行相应的调整,保证设备的正常运行。蜂鸣器电路的揭发特别简单,只要将其接到单片机的I/O口上,通过内部软件程序的编写即可完成规定的要求。外部电路清晰简单,内部发声的程序也不难,只要将相应的程序加到准确的位置,在正确的时候进行调用即可。蜂鸣器与单片机的连接如图3-10所示。
图3-10 蜂鸣器与单片机的连接
3.6 本章小结
本章主要论述了系统整体的设计,分为压力采集模块、温度采集模块、单片机系统以及使用CH451芯片实现的数码显示和键盘扫描。在每一部分的设计中涉及到各个部分的内部基本结构,基本功能,和基本的实现要求等内容,使得用户对系统的每一个部分都有清晰鲜明的认识和理解,对功能的实现有深入的认识,做到原理功能都了然于心。
18
沈阳工业大学本科生毕业设计(论文)
第4章 系统的软件设计
单片机系统的设计可以说是层出不穷,但是单片机的程序设计却比较有其自身的特点。单片机系统的设计上必须兼顾软件和硬件各自的特点,硬件电路设计一般都是视具体需要而设计的,通用性不强,既定的硬件电路决定了软件的编写难易程度和一系列的编写要求,所以软件的编写受制于硬件,基于这一点考虑,硬件电路的设计要合理,从而方便软件的编写和运行。当然在一些时候相应软件的编写可以代替硬件实现一些功能,但是这样的话一般会以牺牲单片机的运行速度问代价的。总的来说如果可以讲硬件设计与软件设计有机结合起来,不但可以保证运行速度还可以使得软件的编写清晰简单。
在软件设计中,用户通常要根据硬件电路的实际情况来编写软件,受制于相应的电路和连接方式。在这样的情况下,软件的设计一般会将程序分成若干功能模块,然后写相应模块的程序,最后在主程序中进行调用,这样的软件设计清晰易懂,良好的软件设计就应该是这样一个流程。
4.1 系统主程序流程图
本设计中系统的主控制器是C8051F020单片机,系统的工作的过程基本上可描述为:系统上电后,完成各部分的初始化工作。初始化主要包括DS18B20模块初始化,MPX2100压阻式传感器测压模块初始化,单片机相应设置初始化,CH451数码显示驱动芯片初始化等。初始化结束后,系统进入正常工作状态,测压、测温开始进行,温度,压力的上下限初始值由程序设定好,单片机控制各个部分做出相应操作,并将数据在LED上予以显示和控制蜂鸣器是否发出报警信号。系统上电复位后,不再需要人工干预,系统会自己正常工作。系统内部软件会对当前温度和压力做出相应判断,完成设计之初的各项功能。整个系统完全自动化,整个系统程序调试完成后,装入系统运行调试,通过后系统就会像人的大脑一样工作,使用者只需要查看显示数据就可以知道被控对象的当前状态,系统使用方便简单。主程序的流程图如图4-1所示。
19
沈阳工业大学本科生毕业设计(论文)
开始 系统初始化
温度采集 压力采集 温度键是否按下 是 执行温度子程序 否 温度是否超出范围 否 压力键是否按下 是 执行压力子程序 是 蜂鸣器报警 否 压力是否超出范围 否 是 蜂鸣器报警 20