51mcu做的DS18B20测温源码带lcd12864液晶显示,,,,,,,,,
单片机源程序如下:
- /*******************************************************************************
- *
- * 普中科技
- --------------------------------------------------------------------------------
- * 实 验 名 : 18B20温度显示试验
- * 实验说明 : LCD1602显示温度值。
- * 连接方式 : 见连接图
- * 注 意 :
- *******************************************************************************/
- #include <reg52.h>
- #include "lcd.h"
- #include "temp.h"
- #include "juzhenkeys.h"
- #include <caidan.h>
- void LcdDisplay(int);
- /*******************************************************************************
- * 函数名 : main
- * 函数功能 : 主函数
- * 输入 : 无
- * 输出 : 无
- *******************************************************************************/
- void main()
- {
- // lcd_init();
- init(); //初始化LCD12864
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
-
- keys();
- caidanfuzhi();
-
-
- Lcd_Num1(3,0,Ds18b20ReadTemp());
- Lcd_Display(3,5,"度");
- // Delay1ms(1000);
-
-
- }
-
-
- }
- /*******************************************************************************
- * 函数名 : LcdDisplay()
- * 函数功能 : LCD显示读取到的温度
- * 输入 : v
- * 输出 : 无
- *******************************************************************************/
- //void LcdDisplay(int temp) //lcd显示
- //{
- //
- // unsigned char datas[] = {0,0,0,0,0}; //定义数组
- // float tp;
- // if(temp< 0) //当温度值为负数
- // {
- // weizhi(3,0); //写地址 80表示初始地址
- // LcdWriteData('-'); //显示负
- // //因为读取的温度是实际温度的补码,所以减1,再取反求出原码
- // temp=temp-1;
- // temp=~temp;
- // tp=temp;
- // temp=tp*0.0625*100+0.5;
- // //留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
- // //后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
- // //算由?.5,还是在小数点后面。
- //
- // }
- // else
- // {
- // weizhi(3,0); //写地址 80表示初始地址
- // LcdWriteData('+'); //显示正
- // tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量
- // //如果温度是正的那么,那么正数的原码就是补码它本身
- // temp=tp*0.0625*100+0.5;
- // //留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
- // //后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
- // //算加上0.5,还是在小数点后面。
- // }
- // datas[0] = temp / 10000;
- // datas[1] = temp % 10000 / 1000;
- // datas[2] = temp % 1000 / 100;
- // datas[3] = temp % 100 / 10;
- // datas[4] = temp % 10;
- //
- // weizhi(3,1); //写地址 80表示初始地址
- // LcdWriteData(0x30+datas[0]); //百位
- //
- // weizhi(3,2); //写地址 80表示初始地址
- // LcdWriteData(datas[1]+0x30); //十位
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
DS18B20-LCD.zip
(101.47 KB, 下载次数: 50)
|