欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STC89C52RC單片機LCD1602顯示,DS18B20采集
[打印本頁]
作者:
有心插花花木蘭
時間:
2019-11-20 12:17
標題:
STC89C52RC單片機LCD1602顯示,DS18B20采集
自制最小單片機系統
LCD1602顯示,DS18B20采集
DS18B20保存報警值到內部eeprom,掉電保存功能
四個按鍵調整上下預警值,還有掉電保存預警值的功能
5VDC電源 一個
四角開關 四個
DS18B20 一個
LED 兩個
10K電阻 兩個
12MHz無源晶振 一個
47pF電容 2個
10pF極性電容 一個
10K排阻 一個
LCD1602 一個
STC89C52RC 一個
20191117_162806.jpg
(3.26 MB, 下載次數: 52)
下載附件
實物圖
2019-11-20 12:15 上傳
單片機源程序如下:
/**************************************************************************************
* LCD1602液晶顯示實驗 *
實現現象:下載程序后插上LCD1602液晶在開發板上,即可顯示
注意事項:如果不想讓點陣模塊顯示,可以將74HC595模塊上的JP595短接片拔掉。
***************************************************************************************/
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
#include "lcd.h"
#include "temp.h"
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
u8 DisplayData[18]=" temp: ";
u8 DisplayData1[18]=" H: L: ";
sbit key_1=P3^3;
sbit key_2=P3^5;
sbit key_3=P3^4;
sbit key_4=P3^7;
sbit LED = P2^1;
char h,l;
void delay(u16 i)
{
while(i--);
}
void datapros_1(int temp)
{
DisplayData1[8] = temp % 1000 / 100 + 0x30;
DisplayData1[9] = temp % 100 / 10 + 0x30;
DisplayData1[10] = temp % 10 + 0x30;
}
void datapros_2(int temp)
{
DisplayData1[3] = temp % 1000 / 100 + 0x30;
DisplayData1[4] = temp % 100 / 10 + 0x30;
DisplayData1[5] = temp % 10 + 0x30;
}
void datapros(int temp)
{
float tp;
if(temp< 0) //當溫度值為負數
{
DisplayData[0] = 0x40; // -
//因為讀取的溫度是實際溫度的補碼,所以減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的就
//算加上0.5,還是在小數點后面。
}
else
{
DisplayData[0] = 0x00;
tp=temp;//因為數據處理有小數點所以將溫度賦給一個浮點型變量
//如果溫度是正的那么,那么正數的原碼就是補碼它本身
temp=tp*0.0625*100+0.5;
//留兩個小數點就*100,+0.5是四舍五入,因為C語言浮點數轉換為整型的時候把小數點
//后面的數自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
//算加上0.5,還是在小數點后面。
}
DisplayData[6] = temp % 10000 / 1000+0x30;
DisplayData[7] = temp % 1000 / 100+0x30;
DisplayData[8] = '.';
DisplayData[9] = temp % 100 / 10+0x30;
DisplayData[10] = temp % 10+0x30;
}
void display()
{
u8 i;
datapros_2(ds18b20_read_hl(1));
datapros_1(ds18b20_read_hl(0));
datapros(Ds18b20ReadTemp());
LcdWriteCom(0x80);
for(i=0;i<11;i++)
{
LcdWriteData(DisplayData[i]);
}
LcdWriteData(0xdf);
LcdWriteData('C');
LcdWriteCom(0x40+0x80);
for(i=0;i<11;i++)
{
LcdWriteData(DisplayData1[i]);
}
}
void keypros_1()
{
if(key_1==0)
{
delay(200);
if(key_1==0)
{
h++;
Ds18b20_Write_hl(h,l);
ds18b20_eeprom();
}
while(!key_1);
}
}
void keypros_2()
{
if(key_2==0)
{
delay(200);
if(key_2==0)
{
h--;
Ds18b20_Write_hl(h,l);
ds18b20_eeprom();
}
while(!key_2);
}
}
void keypros_3()
{
if(key_3==0)
{
delay(200);
if(key_3==0)
{
l--;
Ds18b20_Write_hl(h,l);
ds18b20_eeprom();
}
while(!key_3);
}
}
void keypros_4()
{
if(key_4==0)
{
delay(200);
if(key_4==0)
{
l++;
Ds18b20_Write_hl(h,l);
ds18b20_eeprom();
}
while(!key_4);
}
}
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main(void)
{
LED = 0;
LcdInit();
h=ds18b20_read_hl(1);
l=ds18b20_read_hl(0);
while(1)
{
if(((DisplayData1[4]-0x30)*10+(DisplayData1[5]-0x30))<=((DisplayData[6]-0x30)*10+(DisplayData[7]-0x30))||((DisplayData1[9]-0x30)*10+DisplayData1[10]-0x30)>=((DisplayData[6]-0x30)*10+DisplayData[7]-0x30)){ LED = 1;}
else LED = 0;
keypros_3();
keypros_4();
keypros_1();
keypros_2();
display();
}
}
復制代碼
所有資料51hei提供下載:
STC89C52RC.7z
(583.06 KB, 下載次數: 60)
2019-11-20 14:26 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
lcl1260519806
時間:
2021-7-28 09:24
正好需要,下載來試一下,希望好用
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1