簡易溫度採集與控制裝置
簡易溫度採集與控制裝置
**********/
#include #include #define uint unsigned int
#define uchar unsigned char
sbit a1 = p3^0;
sbit a2 = p3^1;
sbit a3 = p3^2;
sbit a4 = p3^3;
sbit b1 = p4^4;
sbit b2 = p4^2;
sbit b3 = p3^5;
sbit b4 = p3^4;
uint wendu,count;
uchar yi,er,san,si,wu,liu,qi,ba;
uchar model,set,flag,qujian,num,max,min,max1,max2,min1,min2;
uchar shuma = ;
void display();
void set_wendu();
//void allinit()
//void delay_ms(uint z)
//void keyscan()
if(b2==0)
if(b3==0)
// if(b4==0)
// ///
a2=0;a1=a3=a4=1;
b1=b2=b3=b4=1;
if(b1==0)
if(b2==0)
if(b3==0)
// if(b4==0)
// ///
a3=0;a1=a2=a4=1;
b1=b2=b3=b4=1;
if(b1==0)
if(b2==0)
if(b3==0)
// if(b4==0)
// ///
a4=0;a1=a2=a3=1;
b1=b2=b3=b4=1;
if(b1==0)
if(b2==0)
if(b3==0)
// if(b4==0)
// }
//void timer0init(void)
//void main()}//
void exter0() interrupt 1
//void set_wendu()
wendu = get_wendu();
if(wendu>max) //溫度區間2
}else
p2=0xa0;p0=0x10;
yi=10;er=2;san=10;
si=11;wu=11;liu=11;
qi=wendu/10;ba=wendu%10;
} else if(wendu=160) //160 * 5 = 800;
}else
p2=0xa0;p0=0x00;
yi=10;er=0;san=10;
si=11;wu=11;liu=11;
qi=wendu/10;ba=wendu%10;
} else //溫度區間1
}else
yi=10;er=1;san=10;
si=11;wu=11;liu=11;
qi=wendu/10;ba=wendu%10;
} }// else if(model==1)
else if(set==101)
if(num==5)
else if(num==1)
else if(num==2)
else if(num==3)
else if(num==4)
if(num==0)
else if(num==1)
else if(num==2)
else if(num==3)
else if(num==4)
max = max1*10+max2;
min = min1*10+min2;
if(min>max)
else }}
//void display()
onewire.h
#ifndef _onewire_h
#define _onewire_h
#include "stc15f2k60s2.h"
#include "intrins.h"
#define ow_skip_rom 0xcc
#define ds18b20_convert 0x44
#define ds18b20_read 0xbe
//ic引腳定義
sbit dq = p1^4;
//函式宣告
void delay_onewire(unsigned int t);
void write_ds18b20(unsigned char dat);
bit init_ds18b20(void);
unsigned char read_ds18b20(void);
unsigned int get_wendu();
#endif
onewire.c
/*
程式說明: 單匯流排驅動程式
軟體環境: keil uvision 4.10
硬體環境: ct107微控制器綜合實訓平台
日 期: 2011-8-9
*/#include "onewire.h"
//單匯流排延時函式
void delay_onewire(unsigned int t)
//ds18b20晶元初始化
bit init_ds18b20(void)
//通過單匯流排向ds18b20寫乙個位元組
void write_ds18b20(unsigned char dat)
delay_onewire(5);
}//從ds18b20讀取乙個位元組
unsigned char read_ds18b20(void)
delay_onewire(5);
} return dat;}//
unsigned int get_wendu()
個人見解,感謝閱讀。 基於15微控制器簡易溫度採集 藍橋杯
在乙個寒假的準備中,15微控制器各個模組應經有了乙個充分的認識,對其內部原理以及程式控制已經熟練掌握,在距離省賽藍橋杯不到10天的時間裡,每天練習一套省賽模擬題,來提高各個模組的綜合應用。此次省賽試題中主要使用了ds1302和ds18b20兩個模組,整套題難度算中上吧。本題難度在於溫度採集時間設定和...
簡易溫度採集系統(藍橋杯微控制器)十分穩定
閱讀完全文後,我首先會有乙個大概的框架,分別為三個方面 1.要用的模組 2.介面的顯示 3.細節部分 按鍵 led之類 首先我貼上stcisp 的範例程式的定時器和smg,自己再稍加修改,完成smg管模組的初始化 顯示1234567 保證smg模組不出錯。然後我會開始寫按鍵程式,無論是三行 還是狀態...
藍橋杯 讀溫度
讀溫度使用的是ds18b20晶元,該晶元通過單匯流排one wire協議和微控制器進行通訊,在比賽的時候會提供onewire.c和onewire.h兩個檔案。完整 會放在最後,下面講解如何編寫讀取溫度的程式。跳過rom操作指令 啟動溫度轉化 開始讀取暫存器的資料 新增到onewire.c中 unsi...