簡易溫度採集系統(藍橋杯微控制器)十分穩定

2021-10-25 21:40:48 字數 3161 閱讀 1337

閱讀完全文後,我首先會有乙個大概的框架,分別為三個方面

1.要用的模組

2.介面的顯示

3.細節部分(按鍵&led之類)

首先我貼上stcisp 的範例程式的定時器和smg,自己再稍加修改,完成smg管模組的初始化{顯示1234567)保證smg模組不出錯。

然後我會開始寫按鍵程式,無論是三行**還是狀態機程式,我都會再每個按鍵後面寫乙個led(0x0i),來檢驗按鍵程式是否正確。到這一步我已經確保兩個模組的正確性啦。

再然後,開始寫任務要求的其他模組(讀溫度,讀電壓,讀光敏)用數碼管顯示出來,檢測它的正確性。

隨後就是豐富其他細節邏輯之類。

最後我才完成任務對led,繼電器蜂鳴器之類的要求。(因為之前led做檢測真的是乙個非常好的用途)

#include "stc15f2k60s2.h"

#includetypedef unsigned char u8;

typedef unsigned int u16;

u8 code t_duan=; //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1

u8 code t_com=; //位碼

u8 smg_count, smg_i, table[8];

u8 key_count;

u8 key_val;

u8 state;

u8 temper;

u8 index;

u8 num;

u8 t[4]=, t_max,t_min;

u8 t_i;

bit baocun;

bit set;

bit key_flag;

bit flag1s;

sbit buzzer = p0^6;

sbit relay = p0^4;

sbit h1 = p3^0;

sbit h2 = p3^1;

sbit h3 = p3^2;

sbit h4 = p3^3;

sbit l1 = p4^4;

sbit l2 = p4^2;

sbit l3 = p3^5;

sbit l4 = p3^4;

u16 index_count;

u16 count;

bit flag_led2;

bit flag;//1000 times counter

u8 keyscan();

void key_cmd();

void timer0init(void); //1毫秒@12.000mhz

void allinit();

void led(u8 dat);

void smg_dis();

void t_cmd();

void led_cmd();

void delet() ;

void tm0_isr() interrupt 1 using 1

if (key_count-- == 0) //1ms * 1000 -> 1s

if (smg_count-- == 0) //1ms * 1000 -> 1s

if(index_count++ == 60000) index_count = 0;

if(index == 0 && index_count%800 == 0)

else if(index == 1 && index_count%400 == 0)

else if(index == 2 && index_count%200 == 0) }

void main()

if(flag1s)

else}}}

void timer0init(void) //1毫秒@12.000mhz

void allinit()

void led(u8 dat)

u8 keyscan()

break;

case 2: if(key == 88) state = 0; break;

} return keyreturn;}

void key_cmd() }

void smg_dis()

table[0] = 0x40;

table[1] = t_duan[index%10];

table[2] = 0x40;

table[3] = 0x00;

table[4] = 0x00;

table[5] = 0x00;

table[6] = t_duan[temper/10%10];

table[7] = t_duan[temper%10];

} else if(set)

}void led_cmd()

else if(flag && flag_led2 == 0)

else if(flag == 0 && flag_led2)

else

if(set)

else

} }

void t_cmd() }

void delet()

/*

程式說明: 單匯流排驅動程式

軟體環境: keil uvision 4.10

硬體環境: ct107微控制器綜合實訓平台(外部晶振12mhz) stc89c52rc微控制器

日 期: 2011-8-9

*/#include "reg52.h"

sbit dq = p1^4; //單匯流排介面

//單匯流排延時函式

void delay_onewire(unsigned int t) //stc89c52rc

}//通過單匯流排向ds18b20寫乙個位元組

void write_ds18b20(unsigned char dat)

delay_onewire(5);

}//從ds18b20讀取乙個位元組

unsigned char read_ds18b20(void)

delay_onewire(5);

} return dat;

}//ds18b20裝置初始化

bit init_ds18b20(void)

unsigned char r_t()

基於15微控制器簡易溫度採集 藍橋杯

在乙個寒假的準備中,15微控制器各個模組應經有了乙個充分的認識,對其內部原理以及程式控制已經熟練掌握,在距離省賽藍橋杯不到10天的時間裡,每天練習一套省賽模擬題,來提高各個模組的綜合應用。此次省賽試題中主要使用了ds1302和ds18b20兩個模組,整套題難度算中上吧。本題難度在於溫度採集時間設定和...

微控制器藍橋杯準備 溫度模組

51微控制器的溫度模組 main.c include reg52.h 標頭檔案 include ds18b20.h 溫度模組驅動 include intrins.h 移位操作標頭檔案 sfr auxr 0x8e unsigned char discode 數碼管顯示位元組碼 unsigned cha...

基於51微控制器的溫度採集系統

下面是一張原理圖 源 如下 include define uint unsigned int define uchar unsigned char include typedef bit bool sbit io p1 1 口線定義 sbit bee p1 0 sbit rs p2 5 sbit r...