(關於dac輸出,可用電壓表測量開發板j3排針的 「d/a」 和 「gnd」 兩個引腳)
主函式
#include "stc15f2k60s2.h"
#include "key.h"
#include "hardware.h"
#include "onewire.h"
#include "iic.h"
typedef unsigned char uchar;
typedef unsigned int uint;
unsigned char set_display[8]
;unsigned char temp_display[8]
;unsigned char code smg_duan=
;unsigned char smg_wei=
;int temperature;
uchar display_mode;
//顯示介面模式
uchar switch_mode;
//上下限切換模式
uchar key_value;
//按鍵值
uchar temp_h=
30,temp_l=20;
//溫度上下限
uchar temp1=
30, temp2=20;
//上下限快取值
uchar te***,temp4;
//快取值
uchar led_state=
0xff
;//led狀態
bit flag400ms;
bit blink_flag;
void timer0init
(void)
;//1毫秒@12.000mhz
void key_process()
;//按鍵處理函式
void display1()
;//顯示介面1
void display2()
;//顯示介面2
void judge_wendu()
;void main()
}void key_process()
else}if
(display_mode==1)
break
; case 5
: switch_mode++;if
(switch_mode==2)
switch_mode=0;
break
; case 6
://"加"
if(display_mode==1)
if(switch_mode==1)
}break
; case 7
://"減"
if(display_mode==1)
if(switch_mode==1)
}break;}
}void judge_wendu()
if((temperature>=temp_l)
&&(temperature<=temp_h))if
(temperatureledlight
(led_state);}
void display2()
if(switch_mode==1)
}else
else
if(switch_mode==1)
else}}
}void display1()
temp_display[0]
=0x39
; temp_display[1]
=0x00
; temp_display[2]
=0x00
; temp_display[3]
=0x00
; temp_display[4]
=0x00
; temp_display[5]
=0x00
; temp_display[6]
=smg_duan[temperature/10]
; temp_display[7]
=smg_duan[temperature%10]
;}void timer0init
(void)
//1毫秒@12.000mhz
void timer0
() interrupt 1
if(display_mode==1)
i++;if
(i==8)
i=0;}
if(wendu_count==
400)
}
按鍵模組
#include "key.h"
unsigned char key_init()
else
key_state =0;
break
; case 2:if
(key_press==
0x0f
) key_state =0;
break;}
return key_val;
}
初始化及led
#include "hardware.h"
void all_init()
void ledlight
(unsigned char dat)
iic模組
/*
程式說明: iic匯流排驅動程式
軟體環境: keil uvision 4.10
硬體環境: ct107微控制器綜合實訓平台(12mhz)
日 期: 2011-8-9
*/#include "iic.h"
//匯流排啟動條件
void iic_start
(void)
//匯流排停止條件
void iic_stop
(void)
/*iic匯流排協議規定,每傳送乙個位元組資料後,都要有乙個應答訊號,以確定資料傳送是否被對方收到,
應答訊號由接收裝置產生,在scl為高電平期間,接收裝置將sda拉為低電平表示資料傳輸正確,即產生了應答。*/
//應答位控制
/*void iic_ack(unsigned char ackbit) //當ackbit為1時,表示微控制器對從裝置傳送來資料的應答
//當ackbit為0時,表示主機接收了最後乙個位元組,因此不再應答,結束通訊
else
somenop;
scl = 1;
somenop;
scl = 0;
sda = 1;
somenop;
} */
//等待應答
bit iic_waitack
(void)
else
//接收到應答,返回1,繼續下乙個資料位元組的傳輸
}//通過i2c匯流排傳送資料
void iic_sendbyte
(unsigned char byt)
else
somenop;
scl =1;
byt <
<=1;
somenop;
scl =0;
}}//從i2c匯流排上接收資料
/*unsigned char iic_recbyte(void)
return da;
} */
void dac_out
(unsigned char dat)
以上就是**全部內容,喜歡就留個關注吧~ 第十一屆藍橋杯python組第二場省賽 排序
1.問題描述 小藍最近學習了一些排序演算法,其中氣泡排序讓他印象深刻。在氣泡排序中,每次只能交換相鄰的兩個元素。小藍發現,如果對乙個字串中的字元排序,只允許交換相鄰的兩個字元,則在所有可能的排序方案中,氣泡排序的總交換次數是最少的。例如,對於字串 lan 排序,只需要 1 次交換。對於字串 qiao...
第十一屆藍橋杯python組第二場省賽 單詞分析
1.問題描述 小藍正在學習一門神奇的語言,這門語言中的單詞都是由小寫英文本母組成,有些單詞很長,遠遠超過正常英文單詞的長度。小藍學了很長時間也記不住一些單詞,他準備不再完全記憶這些單詞,而是根據單詞中哪個字母出現得最多來分辨單詞。現在,請你幫助小藍,給了乙個單詞後,幫助他找到出現最多的字母和這個字母...
第十一屆藍橋杯python組第二場省賽 數字三角形
1.問題描述 上圖給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,你的任務就是找到最大的和。路徑上的每一步只能從乙個數走到下一層和它最近的左邊的那個數或者右邊的那個數。此外,向左下走的次數與向右下走的次數相差不能超過1。輸入格式 輸入的...