資源簡介
單片機實驗板ds18b20控制,數碼管顯示溫度

代碼片段和文件信息
#include
#include“temp.h“
sbit?baiweix=P2^4;
sbit?shiweix=P2^5;
sbit?geweix=P2^6;
sbit?xiaoweix=P2^7;
unsigned?char?code?table[]={0xc00xf90xa40xb00x990x920x820xf80x800x90}?;
unsigned?char?DisplayData[4];
//用來存放要顯示的4位數的值
void?LcdDisplay(int);
void?DigDisplay();
void?main()
{
while(1)
{
LcdDisplay(Ds18b20ReadTemp());
}
}
//?LCD顯示讀取到的溫度
void?LcdDisplay(int?temp)? ?//lcd顯示
{
??? float?tp;??
if(temp0) //當溫度值為負數
?? {
DisplayData[0]?=?0xbf;?//顯示負號
//因為讀取的溫度是實際溫度的補碼,所以減1,再取反求出原碼
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*10+0.5;
//留yi個小數點就*10,+0.5是四舍五入,因為C語言浮點數轉換為整型的時候把小數點
//后面的數自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
//算由?.5,還是在小數點后面。
?
?? }
? else
?? {
tp=temp;//因為數據處理有小數點所以將溫度賦給一個浮點型變量
//如果溫度是正的那么,那么正數的原碼就是補碼它本身
temp=tp*0.0625*10+0.5;
//留兩個小數點就*100,+0.5是四舍五入,因為C語言浮點數轉換為整型的時候把小數點
//后面的數自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
//算加上0.5,還是在小數點后面。
}
DisplayData[1]?=?table[temp?/?1000];
DisplayData[2]?=?table[temp?%?1000?/?100];
DisplayData[3]?=?table[temp?%?100?/?10]?&?0x7f;
DisplayData[4]?=?table[temp?%?10?];
// DisplayData[5]?=?DIG_CODE[temp?%?10];
? DigDisplay(); ???//掃描顯示
}
//??使用數碼管顯示
void?DigDisplay()
{
unsigned?char?i;
unsigned?int?j;
for(i=1;i<5;i++)
{
switch(i) ?//位選,選擇點亮的數碼管,
{
case(1):
?baiweix=0;
?P0=DisplayData[i];
? j=50; ?//掃描間隔時間設定
while(j--);
P0=0xff;//消隱
baiweix=1;
?break;//顯示第1位
case(2):
shiweix=0;
?P0=DisplayData[i];
? j=50; ?//掃描間隔時間設定
while(j--);
P0=0xff;//消隱
shiweix=1;
?break;//顯示第2位
case(3):
geweix=0;
?P0=DisplayData[i];
? j=50; ?//掃描間隔時間設定
while(j--);
P0=0xff;//消隱
geweix=1;
?break;//顯示第3位
case(4):
?xiaoweix=0;
?P0=DisplayData[i];
? j=50; ?//掃描間隔時間設定
while(j--);
P0=0xff;//消隱
xiaoweix=1;
?break;//顯示第4位
???}
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2354??2016-12-29?12:12??數碼管顯示\main.c
?????文件???????6367??2016-12-29?12:09??數碼管顯示\main.LST
?????文件???????4522??2016-12-29?12:09??數碼管顯示\main.OBJ
?????文件??????10428??2016-12-29?12:09??數碼管顯示\pro
?????文件???????4380??2016-12-29?12:09??數碼管顯示\pro.hex
?????文件?????????53??2016-12-29?12:09??數碼管顯示\pro.lnp
?????文件??????15106??2016-12-29?12:09??數碼管顯示\pro.M51
?????文件???????1035??2016-12-29?12:12??數碼管顯示\pro.plg
????.......?????57394??2016-12-29?12:12??數碼管顯示\pro.uvopt
?????文件??????13556??2013-09-02?13:54??數碼管顯示\pro.uvproj
????.......?????57433??2016-12-28?20:33??數碼管顯示\pro_uvopt.bak
?????文件???????6376??2009-05-07?14:37??數碼管顯示\STARTUP.A51
?????文件??????14048??2016-12-29?12:09??數碼管顯示\STARTUP.LST
?????文件????????749??2016-12-29?12:09??數碼管顯示\STARTUP.OBJ
?????文件???????3974??2016-12-28?20:14??數碼管顯示\temp.c
?????文件????????448??2016-12-29?12:05??數碼管顯示\temp.h
?????文件???????7925??2016-12-29?12:09??數碼管顯示\temp.LST
?????文件???????5652??2016-12-29?12:09??數碼管顯示\temp.OBJ
?????目錄??????????0??2016-12-29?12:12??數碼管顯示
-----------?---------??----------?-----??----
???????????????211800????????????????????19
評論
共有 條評論