【冉冰的成長日記001】
#include
#include
"onewire.h"
unsigned
char led=
;//定義數碼管
unsigned
char ledbuff=
;//數碼管緩衝區
sbit s7=p3^0;
sbit s6=p3^1;
sbit s5=p3^2;
sbit s4=p3^3;
unsigned
int num=0;
//用於定時器0計數,每一秒獲取一次溫度和工作剩餘時間倒計時
unsigned
char temp,cnt=0;
//temp用於獲取ds18b20的溫度。cnt用於風扇pwm輸出占空比的計算
unsigned
char s4_flag=
1,s5_time=0;
//s4_flag用於切換模式,s5_time用於s6按鍵計時和按鍵定時
bit motor=
0,check_s4 =
0,check_s5 =
0,check_s6 =
0,check_s7 =
0,s7_flag=0;
//motor用於外設輸出,check_sx用於檢測按鍵按下,s7_flag用於切換模式四
void
initial()
;//初始化函式
void
key();
//按鍵
void
display()
;//數碼管顯示
void
timer0init()
;//定時器0
void
timer1init()
;//定時器1
void
main()
num=0;
ds18b20_start()
;//每一秒獲取一次溫度
temp=
ds18b20_get()
;}}}
void
initial()
//初始化函式
void
timer0init
(void
)//100微秒@11.0592mhz
void
timer1init
(void
)//1毫秒@11.0592mhz
void
delay
(int ms)
//某up debug測的1s我借用了,也可以用定時器來寫delay函式
}void
display1()
//控制高四位數碼管
void
display2()
//控制低四位數碼管
void
display3()
void
display()
void
key_s4()
//s4切換工作模式if(
(s4==1)
&&(check_s4==1)
)}//設定計時
void
key_s5()
if((s5==1)
&&(check_s5==1)
)}void
key_s6()
//清零if(
(s6==1)
&&(check_s6==1)
)}void
key_s7()
//顯示溫度if(
(s7==1)
&&(check_s7==1)
)}void
key(
)void
show1()
//led小燈隨工作模式變化
if(s4_flag==2)
if(s4_flag==3)
}void
show2()
//模式四關閉led
void
interrupttimer0
() interrupt 1
//各工作模式占空比
if(s4_flag==1)
if(s4_flag==2)
if(s4_flag==3)
num++;}
void
interrupttimer1
() interrupt 3
if(s7_flag==1)
switch
(i)//數碼管動態重新整理
}
以上是main,身邊的人喜歡把main.c中的key和displsy部分拆出來寫成新的c檔案,方便他人閱讀。各有各的好處吧,我更喜歡放一起,方便呼叫和查閱。各位看官多多擔待吧。
/*
程式說明: 單匯流排驅動程式
軟體環境: keil uvision 4.10
硬體環境: ct107微控制器綜合實訓平台(外部晶振12mhz) stc89c52rc微控制器
日 期: 2011-8-9
*/#include
#include
"onewire.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
)void
ds18b20_start()
unsigned
char
ds18b20_get()
以上是iic通訊的c檔案
#include
#ifndef __onewire_h
#define __onewire_h
unsigned char rd_temperature(void)
; void delay_onewire(unsigned int t)
;void write_ds18b20(unsigned char dat)
;unsigned char read_ds18b20(void)
;bit init_ds18b20(void)
;void ds18b20_start();
unsigned char ds18b20_get();
#endif
以上是.**件
結束
藍橋杯 第七屆省賽 模擬風扇控制系統
實驗平台 ct107d 實驗晶元 stc15f2k60s2 實驗現象 完成題目要求 如下 include stc15f2k60s2.h sbit dq p1 4 單匯流排介面 單匯流排延時函式 void delay onewire unsigned int t stc89c52rc 通過單匯流排向d...
藍橋杯第七屆省賽試題 「模擬風扇控制系統」
功能簡述 模擬風扇控制系統 能夠模擬電風扇工作,通過按鍵控制風扇的轉動速度和定時時間,數碼管實時顯示風扇的工作模式,動態倒計時顯示剩餘的定時時間,系統主要由數碼管顯示 微控制器最小系統 按鍵輸入和電機控制保護電路組成,系統框圖如圖 1 所示 單匯流排驅動程式 ct107d 微控制器考試平台電路原理圖...
藍橋杯第七屆省賽 模擬風扇控制系統 by YYC
onewire.c 程式說明 單匯流排驅動程式 軟體環境 keil uvision 4.10 硬體環境 ct107微控制器綜合實訓平台 外部晶振12mhz stc89c52rc微控制器 日 期 2011 8 9 include reg52.h sbit dq p1 4 單匯流排介面 單匯流排延時函式...