碧波液压网 欢迎你,游客。 登录 注册

高精度简易数字温度计的设计

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

    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;

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论