内容发布更新时间 : 2024/12/24 11:36:46星期一 下面是文章的全部内容请认真阅读。
在本次设计中我们所控的对象为水温。其电路原理框图如下:
GNDVCCDS18B20
图3.9 温度检测电路
98VDDVCC
AT89S51R5.7KDQP3.3DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,支持3V~5.5V的电压范围,使系统设计更灵活、方便;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20使电压、特性有更多的选择,让我们可以构建适合自己的经济的测温系统。如图2所示DS18B20的2脚DQ
15
7 为数字信号输入/输出端;1脚GND为电源地;3脚VDD为外接供电电源输入端。
当传感器工作时,如果水温超过60℃,将温度传给单片机,蜂鸣器报警,并断电;如果水温低于30℃,热水器开始工作,加热指示灯亮。 3.2.6水位检测
水位检测为三个并联的不同阻值的电阻,电路的电极电流较小(几个微安),电腐蚀小,适用水电阻变化范围大(几K一100K欧)。某电阻所在水位未到达,电阻截止;水位到达,电阻导通,组成并联电路。将不同阻值所分得的电压经PTB1转换后,可判断出水位信息(高、中、低、干烧)。 3.2.7时钟电路
单片机内部有一个高增益反向放大器,输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片外部XTAL1和 XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。晶体震荡频率高,则系统的时钟频率也高,单片机运行速度也就快,但反过来运行速度快对存储器的速度要求就高,对印制电路板的工艺要求也高,所以,这里使用震荡频率为12MHz的石英晶体。震荡电路产生的震荡脉冲并不直接是使用,而是经分频后再为系统所用,震荡脉冲经过二分频后才作为系统的时钟信号。在设计电路板时,振荡器和电容应尽量靠近单片机,以避免干扰。需要注意的是:电路板时,振荡器和电容应尽量安装得与单片机靠近,以减小寄生电容的存在更好的保障振荡器稳定、可靠的工作电路图如图2.27所示
图 3.10 时钟电路
16
3.2.8 显示模块
现在驱动LED数码管流行采用单片机设计电路,但发现一些显示(LED数码管)电路设计复杂,没有充分利用单片机的电器特点、没有采用“硬件软化”的方法。直接用单片机的8位数据口作为数码管的8段显示驱动口。这种显示方式虽然简便,电路也最简单,但显示的位数很少(只用四位)。但已经满足了此次设计要求,所以选用此种方式。
LED数码管的结构及工作原理
LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等....,LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2.2.8.2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
17
颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图片
图3.12 这是一个7段两位带小数点 10引脚的LED数码管
图3.12 引脚定义
每一笔划都是对应一个字母表示 DP是小数点.
LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。
A、静态显示驱动:
静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O埠进行驱动,或者使用如BCD码二-十进位*器*进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O埠多,如驱动5个数码管静态显示则需要5×8=40根I/O埠来驱动,要知道一个89S51单片机可用的I/O埠才32个呢。故实际应用时必须增加*驱动器进行驱动,增加了硬体电路的复杂性。 B、动态显示驱动:
数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\\的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。
18
透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O埠,而且功耗更低。
本次设计是使用了8段4位共阴数码管的动态显示方式。然而,设计中发现如果严格按照一般的数码管用法,即a~dp段对应单片机数据位的高到低位一一对应,但是数码管的封装不是按顺序一一对应的,布线和做板就比较麻烦。因此设计时既然用单片机译码就在硬件连接的基础上做软件译码,这样就方便了电路的布线,也体现了单片机编程的灵活性。
数码管的数据位由单片机的P0口控制,数码管的段选由P2.4~P2.7控制。本次系统设计中的数码管与单片机的连接如下图3.13所示。
SEG1P0_0P0_1P0_2P0_3P0_4P2_7123456edhcg41af23b121110987P2_4P0_6P0_7P2_5P2_6P0_5图3.13 数码管与单片机的连接图
基于以上数码管的硬件连接,在单片机编程时要对数码管进行软件译码,各数字所对应的码字如下表所示:
表3.2 八段共阴数码管段码
SEG8_4显示字符 0 1 2 3 4 5 6 7 共阴段码 0xEB 0x28 0x73 0x7A 0xB8 0xDA 0xDB 0x68 19
显示字符 8 9 A B C d E F 共阴段码 0xFB 0xFA 0xF9 0x9B 0xC3 0x3B 0xD3 0xD1