藍橋杯第七屆省賽 風扇模擬系統

2021-10-21 14:47:32 字數 3598 閱讀 7908

【冉冰的成長日記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 單匯流排介面 單匯流排延時函式...