济南大学泉城学院毕业设计
值,因此电路中有较小的电流流过;受到光照时,其电阻急剧减小,电路中电流变大。
电压的大小通过CH0引脚输入给芯片,ADC0832是模数转换芯片将输入的电压量转换为数字量,同时STC89C52通过P1.5引脚向ADC0832的时钟信号输出端CLK输入脉冲信号,芯片接收到时钟信号,通过D0或D1口向单片机输出数字信号。由于D0、D1口在通信时不能同时有效,所以可以将其并联在一起使用。经过AD采集模块不断地采集不同光线下的电压值,从而找到符合教委规定学习环境的比较值。光线检测电路如图3.7所示。
图3.7 光线检测电路图
3.4 显示电路
显示电路主要通过LCD1602液晶显示,它可以显示两行,每行16个字符[14]。可以显示数字、字母等信息,显示内容丰富。LCD1602是一个16引脚的液晶显示屏,其中1、2引脚是液晶的电源引脚,15、16引脚是背光电源引脚,3引脚是通过电阻的改变来调节显示的对比度,6引脚是控制液晶读写命令和数据。
在本系统中LCD1602用来显示当前学习时间、头部与桌面之间的距离、光感度信息。LCD1602实物图如图3.8所示,其显示电路的电路图如图3.9所示。
图3.8 LCD1602实物图
- 11 -
济南大学泉城学院毕业设计
图3.9 LCD1602液晶接口电路图
3.5 声光报警提示电路
报警提示电路由一个9012型PNP三极管、两个2K限流电阻、一个蜂鸣器、一个LED灯组成。当光线检测、超声波距离检测发生异常、单片机的定时器达到设定时间时,当三极管的基极电压比发射极电压低0.7V时,三极管导通,蜂鸣器和LED有电流流过,发出警报,提示学生注意用眼习惯,其原理图如图3.10所示。
图3.10 声光报警提示电路图
- 12 -
济南大学泉城学院毕业设计
3.6 按键电路
按键电路是由三个独立按键组成的控制电路,用来实现对距离、学习时间、光感度等设定值的设置以及系统的开启与暂停。
独立式按键比较简单,它们各自与独立的输入线相连接,接到单片机的I/O口上,当按键按下时,+5V通过按键最终进入GND形成一条通路,单片机的引脚就是个低电平。当按键松开后,线路断开,就不会有电流通过,单片机引脚和+5V是等电位的,是高电平。这样就可以通过单片机I/O口的高低电平来判断是否有按键按下。
S3键按下,系统开始进行学习时间计时,当S3键再次按下系统暂停计时。系统工作时按下S2键,系统时间自动置零,S4键是设置设定值的,通过S2、S3键实现数值的加减完成设置,其电路图如图3.11所示。
图3.11 按键电路图
3.7 定时电路
定时电路在本设计中主要用来对学生已经学习时间和超声波的返回时间进行计时,由STC89C52自带的定时器/计数器实现上述功能。
51单片机内部有两个功能一样的可编程定时器/计数器T0、T1来满足外部脉冲计数和产生准确的定时时间,与定时器有关的寄存器有:
(1)用来存储定时器计数值的定时值存储器;
(2)用来启动、停止定时器,标志溢出的定时器控制寄存器TCON; (3)用来选择工作模式的定时器模式寄存器TMOD。
其控制字均在相应的特殊功能寄存器中,通过对它的特殊功能寄存器的编制,可以方便的选择适当的工作模式和工作方式。
定时器有4种工作模式,如表3.1所示,其中模式0是为了兼容老的8048系列单片机而设计的,现在的51单片机几乎不会用到这种模式,而模式3的功能用模式2完全可以替代[15]。
- 13 -
济南大学泉城学院毕业设计
表3.1 定时器模式寄存器M1/M0工作模式
M1 0 0 1 1
M0 0 1 0 1
工作模式
0 1 2 3
描述
兼容0840单片机的13位定时器,THn的8位和TLn的5位组成一个13位定时器
THn和TLn组成一个16位的定时器
8位自动重装模式,定时器溢出后THn重装到TLn中 禁用定时器1,定时器0变成两个8位定时器
模式1,是THn和TLn组成了一个16位的定时器,计数范围是0~65535,溢出后,只要不对THn和TLn重新赋值,则从0开始计数。模式2,是8位自动重装载模式,只有TLn做加1计数,计数范围0~255,THn的值不会变化,而会保持原来的值;TLn溢出后,TFn就直接置1,并且THn原先的值直接赋给TLn,然后TLn从新赋值的这个数字开始计数。
- 14 -
济南大学泉城学院毕业设计
4 系统软件设计
对单片机系统来说,通过程序编程和逻辑运算将单片机的I/O等资源进行重新分配,从而实现预期设定效果。软件设计主要是程序的编写,它是本次毕业设计中最为关键,也是任务量最重的一个,系统部分源程序详见附录E。
4.1 Keil μVision4软件平台
本设计编程使用的软件是Keil μVision4它是一个集成开发环境,将C编译器、库函数等部分组合在一起。
在μVision下的操作大致包括以下4个环节: (1)创建项目和打开项目,并向其中添加文件。 (2)编写编辑源程序文件。
(3)设置项目和文件的操作属性。被设置的项目操作属性包括:明确目标芯片和系统的硬件环境、对项目输出文件和清单文件提出要求、选择项目的调试方法等。有时需要对项目中的个别文件单独设置操作属性.
(4)项目制作,用工具链(编译器、汇编器、连接定位器等)处理项目,生成中间文件产物(可重新定位目标文件、列表文件等)和最终文件产物(绝对目标文件、烧写文件等)。
(5)项目调试,用软件模拟器或硬件仿真器进行调试。 Keil软件的编程通常有以下几个步骤
第1步:在Keil中新建一个工程并保存该工程;
第2步:根据使用的单片机型号选择Intel公司的51系列单片机;
第3步:新建一个文本文档保存为.C格式,并把该文件添加到工程中,程序编写;
第4步:程序编写完成后,在编译之前更改操作中的设置,使其能生成.HEX文件,为Proteus仿真做准备;
第5步:进行程序编译,查看程序有无错误。
4.2 主程序设计
本设计的编程思路是先确定主程序,然后根据各硬件电路实现的功能和特点编写子程序,最后将子程序嵌套进主程序,这样编程简单、明了、方便后期维护。系统主程序设计流程图如图4.1所示。
- 15 -