久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
LCD1602顯示+單片機串口接收溫度程序
[打印本頁]
作者:
erick-2017
時間:
2017-6-18 15:36
標題:
LCD1602顯示+單片機串口接收溫度程序
想學習單片機的朋友,記得來看哦
0.png
(129.5 KB, 下載次數: 133)
下載附件
2017-6-18 18:59 上傳
0.png
(811.88 KB, 下載次數: 130)
下載附件
2017-6-18 19:00 上傳
單片機源程序如下:
/*******************************************************************************
*
* 普中科技
--------------------------------------------------------------------------------
* 實 驗 名 : 18B20溫度顯示試驗
* 實驗說明 : 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;
}
}
/*******************************************************************************
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
LCD1602顯示+串口接收溫度.rar
(1.28 MB, 下載次數: 168)
2017-6-18 15:35 上傳
點擊文件名下載附件
單片機歷程
下載積分: 黑幣 -5
作者:
JamesGordan
時間:
2019-3-2 19:50
厲害,點贊
作者:
bg4rfb
時間:
2019-3-2 20:23
頂帖,學習了!
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
黄色片在线免费观看
|
亚洲成人天堂
|
成人a视频
|
超碰av在线播放
|
www.精品国产
|
美女福利视频
|
免费三级网站
|
天天综合精品
|
色综合久
|
伊人久久精品视频
|
黄色大片av
|
综合激情网
|
久久免费精品视频
|
午夜视频免费在线观看
|
国产一区二区福利
|
国产精品成人一区二区
|
夜夜贪欢〈高h〉
|
日韩精品久久久久久久酒店
|
欧美成人精品一区二区三区在线看
|
精品免费在线观看
|
中文字幕自拍偷拍
|
日韩一区二区三免费高清在线观看
|
日本中文字幕在线视频
|
一级黄色片在线观看
|
成人一区二区三区四区
|
中文字幕在线观看一区二区三区
|
日本国产视频
|
亚洲午夜剧场
|
日韩成人免费
|
解开岳的丰满奶罩bd
|
99热最新
|
欧美一区二区三区在线观看
|
欧美做受喷浆在线观看
|
中文字幕在线观看免费
|
亚洲福利网站
|
国产永久在线
|
国产黄色在线播放
|
成人永久免费视频
|
亚洲一区欧美一区
|
日韩精品视频在线播放
|
少妇一级淫片aaaaaa
|