单片机实验5:LCD1602显示ds18b20测出来的温度,超温蜂鸣器就发出声音报警.
单片机源程序如下:
- /**************************************************************************************
- * 温度警报 *
- 实现现象:下载程序后插上LCD1602液晶在开发板上,上面显示温度限值,下边显示实时温度
- 当温度达到限值时,蜂鸣器发声
- ***************************************************************************************/
- #include<reg52.h>
- #include "main.h"
- #include "lcd1.h"
- #include "delay.h"
- #include "ds18b20.h"
- #include "color.h"
- uchar CNCHAR[6] = "0";
- char i, buf[] = {0, 0, 0}; //定义数组
- /***********************************************
- 函数名: mydisplay(uint x)
- 函数功能: LCD显示温度
- **********************************************/
- void LcdDisplay(uint temp) /*LCD显示温度*/
- {
- buf[0] = temp/100;
- buf[1] = temp%100/10;
- buf[2] = temp%100%10;
- write_com(0x80+0x42);
- write_date('0'+buf[0]); //十位
- SBUF = '0'+buf[0];//将接收到的数据放入到发送寄存器
- while (!TI); //等待发送数据完成
- // TI = 0;
-
- write_com(0x80+0x43);
- write_date('0'+buf[1]); //个位
- SBUF = '0'+buf[1];//将接收到的数据放入到发送寄存器
- while (!TI); //等待发送数据完成
- // TI = 0;
- write_com(0x80+0x45);
- write_date('0'+buf[2]); //小数点后一位
- SBUF = '0'+buf[2];//将接收到的数据放入到发送寄存器
- while (!TI); //等待发送数据完成
- // TI = 0;
-
- for(i=0; i<6; i++)
- {
- SBUF = CNCHAR[i];//将接收到的数据放入到发送寄存器
- while (!TI); //等待发送数据完成
- // TI = 0;
- }
- }
- void guding() //固定显示
- {
- //显示 T:
- write_com(0x80+0x40); //写地址 80表示初始地址
- write_date('T');
- write_com(0x80+0x41); //写地址 80表示初始地址
- write_date(':');
- //显示 ‘.’
- write_com(0x80+0x44); //写地址 80表示初始地址
- write_date('.'); //显示 ‘.’
- //显示摄氏度
- write_com(0x80+0x46); //写地址 80表示初始地址
- write_date(0xdf); //显示 ‘.’
- write_com(0x80+0x47); //写地址 80表示初始地址
- write_date('C'); //显示 ‘.’
-
- // write_charstr( 1,1," TEMPmax=30'C"); //第 行,第 列
-
- }
- void main(void) //0xdf
- initlcd(); //lcd初始化
- guding(); //固定显示
- while(1)
- {
- read1();
- warn(tempwarn);
- LcdDisplay(get());
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
实验5:LCD1602显示18b20温度.rar
(42.29 KB, 下载次数: 138)
|