欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機數字溫度計Proteus仿真程序設計
[打印本頁]
作者:
l730
時間:
2019-12-8 14:07
標題:
單片機數字溫度計Proteus仿真程序設計
基于51單片機的數字溫度計設計附件里有仿真電路和程序。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png
(16.85 KB, 下載次數: 64)
下載附件
2019-12-10 00:45 上傳
單片機源程序如下:
//數字溫度計設計
//實時讀取并且顯示溫度
#include<reg51.h>
#include<ds18b20.c>
sbit P3_0 = P3^0;
code uchar seven_seg[] = {0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};//共陽極數碼管數顯編碼
uchar cp1,cp2;
uint aa;
uint temp_num,temp_num1,temp_dot,temp; //temp_num、temp_num1為溫度整數部分,temp_dot小數部分,中間變量temp
void timer0_init(void) //中斷服務函數
{
TMOD = 0x01;
TH0 = (65536 - 2000) / 256;
TL0 = (65536 - 2000) % 256;
TR0 = 1;
EA = 1;
ET0 = 1;
}
void timer0_isr(void) interrupt 1 //中斷服務函數
{
TH0 = (65536 - 2000) / 256;
TL0 = (65536 - 2000) % 256;
cp1++;
if(cp1 >= 250) //1秒
{
cp1 = 0;
temp_num = Read_Temperature(); //得到溫度整數
temp_dot = c * 0.625; //得到溫度小數
if((temp_num & 0x80) == 0x80) //如果溫度為負值
{
temp_dot = (0x0f - c) * 0.625; //補碼轉換原碼,小數處理
temp_num1 = 0xff - temp_num; //補碼轉換原碼,整數處理
}
else temp_num1 = temp_num; //小數轉換為十進制
}
P0 = 0xff;
switch(cp2)
{
case 0: P0 = 0xff; //消隱
P3_0 = 0;P0 = 0x01;P3_0 = 1;P3_0 = 0;
P0 = seven_seg[temp_dot]; break; //小數部分顯示
case 1: P0 = 0xff;
P3_0 = 0;P0 = 0x02;P3_0 = 1;P3_0 = 0;
P0 = 0x7f & seven_seg[temp_num1 % 10%10]; break;//整數部分各位顯示
case 2:
{
if(temp_num < 10)
{
P0 = 0xff;
P3_0 = 0;P0 = 0x04;P3_0 = 1;P3_0 = 0;
P0 = 0xff; break;
} //如果溫度小于10度,且為正值,十位0不顯示
if((temp_num > 0x80) && ( temp_num1 < 10))
{
P0 = 0xff;
P3_0 = 0;P0 = 0x04;P3_0 = 1;P3_0 = 0;
P0 = 0xbf; break;
} //如果溫度小于10度,且為負值,十位0不顯示,只顯示"-"
P0 = 0xff;
P3_0 = 0;P0 = 0x04;P3_0 = 1;P3_0 = 0;
P0 = seven_seg[temp_num1 / 10%10]; break;//如果溫度大于10度,10位正常顯示
}
case 3:
{
if((temp_num < 0x80) && (temp_num1 >= 100))
{
P0 = 0xff;
P3_0 = 0;P0 = 0x08;P3_0 = 1;P3_0 = 0;
P0 = seven_seg[temp_num1 / 100]; break; //如果溫度為負值,且十位不為0,百位顯示"-"
}
}
case 4:
{
if((temp_num > 0x80) && ((temp_num1 / 10) > 0))
{
P0 = 0xff;
P3_0 = 0;P0 = 0x08;P3_0 = 1;P3_0 = 0;
P0 = 0xbf; break; //如果溫度為負值,且十位不為0,百位顯示"-"
}
}
}
cp2++;
if(cp2 >= 5)
cp2=0;
}
void main(void)
{
timer0_init();
write_temprom(50,40); //向18B20的暫存器存入溫度上下限
Write_OneChar(0x48); //向18B20的EEROM中寫數據
temp = read_temprom;
while(1);
}
復制代碼
所有資料51hei提供下載:
數字溫度計設計.rar
(56.05 KB, 下載次數: 60)
2019-12-8 14:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
YZH9527
時間:
2019-12-18 22:07
樓主,可不可以說一下左邊的數碼管有什么用的
作者:
ddfffasff
時間:
2020-5-25 10:07
樓主,可不可以說一下左邊的數碼管有什么用的
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1