找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5745|回复: 6
收起左侧

单片机实验程序:LCD1602显示18b20温度且蜂鸣器报警

[复制链接]
ID:205010 发表于 2017-6-4 13:11 | 显示全部楼层 |阅读模式
单片机实验5:LCD1602显示ds18b20测出来的温度,超温蜂鸣器就发出声音报警.
0.png
单片机源程序如下:
  1. /**************************************************************************************
  2. *                                                      温度警报                                                                                                  *
  3. 实现现象:下载程序后插上LCD1602液晶在开发板上,上面显示温度限值,下边显示实时温度
  4.                   当温度达到限值时,蜂鸣器发声
  5. ***************************************************************************************/

  6. #include<reg52.h>
  7. #include "main.h"
  8. #include "lcd1.h"
  9. #include "delay.h"
  10. #include "ds18b20.h"
  11. #include "color.h"

  12. uchar CNCHAR[6] = "0";
  13. char i, buf[] = {0, 0, 0}; //定义数组

  14. /***********************************************
  15. 函数名:        mydisplay(uint x)
  16. 函数功能:        LCD显示温度
  17. **********************************************/
  18. void LcdDisplay(uint temp)         /*LCD显示温度*/
  19. {       
  20.         buf[0] = temp/100;
  21.         buf[1] = temp%100/10;
  22.         buf[2] = temp%100%10;

  23.         write_com(0x80+0x42);
  24.         write_date('0'+buf[0]);                        //十位
  25.         SBUF = '0'+buf[0];//将接收到的数据放入到发送寄存器
  26.         while (!TI);                                 //等待发送数据完成
  27. //        TI = 0;
  28.        
  29.         write_com(0x80+0x43);
  30.         write_date('0'+buf[1]);                        //个位
  31.         SBUF = '0'+buf[1];//将接收到的数据放入到发送寄存器
  32.         while (!TI);                                 //等待发送数据完成
  33. //        TI = 0;

  34.         write_com(0x80+0x45);
  35.         write_date('0'+buf[2]);                        //小数点后一位
  36.         SBUF = '0'+buf[2];//将接收到的数据放入到发送寄存器
  37.         while (!TI);                                 //等待发送数据完成
  38. //        TI = 0;
  39.        
  40.         for(i=0; i<6; i++)
  41.         {
  42.                  SBUF = CNCHAR[i];//将接收到的数据放入到发送寄存器
  43.                 while (!TI);                                 //等待发送数据完成
  44. //                TI = 0;
  45.         }
  46. }
  47. void guding()                                //固定显示
  48. {
  49.         //显示  T:
  50.         write_com(0x80+0x40);        //写地址 80表示初始地址
  51.         write_date('T');
  52.         write_com(0x80+0x41);        //写地址 80表示初始地址
  53.         write_date(':');
  54.         //显示 ‘.’
  55.         write_com(0x80+0x44);                //写地址 80表示初始地址
  56.         write_date('.');                 //显示 ‘.’
  57.         //显示摄氏度
  58.         write_com(0x80+0x46);                //写地址 80表示初始地址
  59.         write_date(0xdf);                 //显示 ‘.’
  60.         write_com(0x80+0x47);                //写地址 80表示初始地址
  61.         write_date('C');                 //显示 ‘.’


  62. //        write_charstr( 1,1," TEMPmax=30'C");          //第   行,第   列  
  63.        
  64. }
  65. void main(void)                                                                                                                          //0xdf
  66.     initlcd();                    //lcd初始化
  67.     guding();                  //固定显示
  68.     while(1)
  69.     {
  70.         read1();
  71.         warn(tempwarn);
  72.          LcdDisplay(get());
  73. ……………………

  74. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
实验5:LCD1602显示18b20温度.rar (42.29 KB, 下载次数: 137)
回复

使用道具 举报

ID:166322 发表于 2017-6-10 12:03 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:215238 发表于 2017-10-24 20:24 | 显示全部楼层
谢谢 资料很好
回复

使用道具 举报

ID:257992 发表于 2018-1-4 22:27 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:464476 发表于 2019-1-11 14:36 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:435575 发表于 2019-9-12 22:54 | 显示全部楼层
没看到显示温度限制
回复

使用道具 举报

ID:605963 发表于 2019-10-1 07:30 | 显示全部楼层
编译后主程序第79行报错,把79行去除后能显示温度T:25.4*c。没报警功能,程序不是很完整,能做个参考吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表