高精度简易数字温度计的设计
0 引言
随着科学技术的进步,超大规模集成电路技术正在迅猛发展[1]。目前,我国单片机的开发应用正在兴起,在机电一体化、智能仪表、工业控制、家用电器等方面的应用成果尤为显著[2]。本设计所采用的单片机为STC10F04,利用C语言对其进行编程,实现对温度的准确测量、显示功能。测温传感器使用DS18B20[3],用4位共阳极LED数码管以串口传送数据,实现温度实时准确显示。
1 系统硬件设计
系统整体硬件电路包括:传感器数据采集电路、温度显示电路、单片机主板电路等。
主板电路如图1所示,图中的按健复位电路是上电复位加手动复位,使用方便,在程序跑飞时可以手动复位,这样,不用再重启单片机电源就可以实现复位[4]。传感器通过单线给单片机输入信号, LED数码管可以显示测量出的温度。复位电路采用上电复位方式,上电自动复位是通过外部复位电路的电容充电来实现的,其中电容C为10μF,电阻R为1k欧姆。显示电路使用的是串口显示,这种显示的最大优点就是使用口资源比较少,只用P3口的RXD和TXD串口的发送和接收, 4只数码管采用共阳极数码管, STC10F04的驱动电流可达20mA,可以直接驱动数码管显示。
2 程序设计
系统程序主要包括主程序、读出温度子程序、计算温度子程序、温度转换子程序、数码管显示子程序。
2. 1 主程序
系统工作模式为:各个功能工作完全依靠单片机作出的逻辑命令来完成。因此,主程序的主要功能是完成单片机在上电复位以后的初始化,对单片机各个I/O端口方向控制和中断的初始化,温度模块以及显示模块的工作[5]。流程图如图2所示。主程序函数代码:
voidmain() //主函数
{ unsigned char d0, d1, d2, d3;
unsigned intnum;
init_mcu();
while(1)
{
FLAG1=0;
do
{ init(); }
while(FLAG1==0);
led=0;
write(0xCC); //发跳过ROM命令
write(0x44); //发启动转换命令
init();
write(0xCC); //发跳过ROM命令
write(0xBE); //发读存储器命令
TEMPER_L=read(); //读入温度
TEMPER_H=read();
_nop_();
Zconvert(TEMPER_H,TEMPER_L);
//将16进制的温度数据转换成压缩BCD码
_nop_();
num = 10*TEMPER_NUM;
相关文章
- 2024-03-14浅议原油及成品油计量交接方式改革
- 2022-06-14方坯连铸二次冷却仿真通用软件的开发及应用
- 2024-11-20基于双单片机的信号处理系统设计
- 2023-11-27极大似然边缘检出技术的研究
- 2023-11-16精密多齿分度盘的研制
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。