久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
電子溫度計LCD1602顯示
[打印本頁]
作者:
天才2333333
時間:
2018-6-20 18:12
標題:
電子溫度計LCD1602顯示
#include<reg51.h>
#include"lcd.h"
#include"temp.h"
uchar CNCHAR[6] = "攝氏度";
void LcdDisplay(int);
void UsartConfiguration();
/*******************************************************************************
* 函數名 : main
* 函數功能 : 主函數
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void main()
{
UsartConfiguration();
LcdInit(); //初始化LCD1602
LcdWriteCom(0x88); //寫地址 80表示初始地址
LcdWriteData('C');
while(1)
{
LcdDisplay(Ds18b20ReadTemp());
}
}
/*******************************************************************************
* 函數名 : LcdDisplay()
* 函數功能 : LCD顯示讀取到的溫度
* 輸入 : v
* 輸出 : 無
*******************************************************************************/
void LcdDisplay(int temp) //lcd顯示
{
unsigned char i, datas[] = {0, 0, 0, 0, 0}; //定義數組
float tp;
if(temp< 0) //當溫度值為負數
{
LcdWriteCom(0x80); //寫地址 80表示初始地址
SBUF='-'; //將接收到的數據放入到發送寄存器
while(!TI); //等待發送數據完成
TI=0; //清除發送完成標志位
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
{
LcdWriteCom(0x80); //寫地址 80表示初始地址
LcdWriteData('+'); //顯示正
SBUF='+';//將接收到的數據放入到發送寄存器
while(!TI); //等待發送數據完成
TI=0; //清除發送完成標志位
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;
LcdWriteCom(0x82); //寫地址 80表示初始地址
LcdWriteData('0'+datas[0]); //百位
SBUF = '0'+datas[0]; //將接收到的數據放入到發送寄存器
while (!TI); //等待發送數據完成
TI = 0;
LcdWriteCom(0x83); //寫地址 80表示初始地址
LcdWriteData('0'+datas[1]); //十位
SBUF = '0'+datas[1]; //將接收到的數據放入到發送寄存器
while (!TI); //等待發送數據完成
TI = 0;
LcdWriteCom(0x84); //寫地址 80表示初始地址
LcdWriteData('0'+datas[2]); //個位
SBUF = '0'+datas[2]; //將接收到的數據放入到發送寄存器
while (!TI); //等待發送數據完成
TI = 0;
LcdWriteCom(0x85); //寫地址 80表示初始地址
LcdWriteData('.'); //顯示 ‘.’
SBUF = '.'; //將接收到的數據放入到發送寄存器
while (!TI); //等待發送數據完成
TI = 0;
LcdWriteCom(0x86); //寫地址 80表示初始地址
LcdWriteData('0'+datas[3]); //顯示小數點
SBUF = '0'+datas[3]; //將接收到的數據放入到發送寄存器
while (!TI); //等待發送數據完成
TI = 0;
LcdWriteCom(0x87); //寫地址 80表示初始地址
LcdWriteData('0'+datas[4]); //顯示小數點
SBUF = '0'+datas[4]; //將接收到的數據放入到發送寄存器
while (!TI); //等待發送數據完成
TI = 0;
for(i=0; i<6; i++)
{
SBUF = CNCHAR[i]; //將接收到的數據放入到發送寄存器
while (!TI); //等待發送數據完成
TI = 0;
}
}
/*******************************************************************************
* 函 數 名 : UsartConfiguration()
* 函數功能 : 設置串口
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void UsartConfiguration()
{
SCON=0X50; //設置為工作方式1
TMOD=0X20; //設置計數器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //計數器初始值設置,注意波特率是4800的
TL1=0XF3;
// ES=1; //打開接收中斷
// EA=1; //打開總中斷
TR1=1; //打開計數器
}
LCD1602顯示 串口接收溫度.zip
2018-6-20 18:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
71.9 KB, 下載次數: 11, 下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
夜夜爽99久久国产综合精品女不卡
|
欧美久久精品一级黑人c片 91免费在线视频
|
国产精品视频一二三区
|
免费在线观看成年人视频
|
午夜免费看
|
久久福利电影
|
久久乐国产精品
|
国产黄色大片在线观看
|
日韩在线成人
|
久久青青
|
免费久久网
|
日韩一区二区三区四区五区
|
99久久亚洲
|
精品国产乱码久久久久久牛牛
|
美女亚洲一区
|
国产日韩欧美中文
|
日本一级淫片免费啪啪3
|
亚洲色图综合
|
久久国产区
|
日韩欧美在线不卡
|
欧美一级特黄aaa大片在线观看
|
超碰av人人
|
www.久草.com
|
91精品国产综合久久久久久
|
97精品超碰一区二区三区
|
日本不卡视频
|
亚洲精品字幕
|
夜夜骑av
|
在线看亚洲
|
殴美成人在线视频
|
色视频在线播放
|
精品久久伊人
|
欧美一区二区三区久久精品
|
久久大全
|
视频一区 国产精品
|
日本免费视频
|
在线观看毛片网站
|
国产人成精品一区二区三
|
成人小视频在线观看
|
在线成人一区
|
97人人超碰
|