版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p> 基于STC11F32XE單片機的電子時鐘設計</p><p><b> 摘要</b></p><p> 本次課程設計做的是一個基于STC11F32XE的電子鐘,其功能是在兩個8X8點陣屏上橫向流動顯示日期,時間,溫度,并且可以設置流動速度,屏幕亮度,和設置時間,日期。</p><p> 關鍵字:STC11F32XE,
2、8X8點陣屏,溫度傳感器,蜂鳴器</p><p><b> 1器件簡介:</b></p><p> 1.1核心器件STC11F32XE單片機介紹</p><p> STC11F32XE是采用宏晶第六代加密技術(shù)的STC11系列單片機,1T 8051帶總線,可直接取代傳統(tǒng)89C58系列單片機,可省復位電路,36-40個I/O,內(nèi)部R/C時鐘,
3、 可省外晶振?! TC11F32XE特性 ·高速:1個時鐘/機器周期,增強型8051內(nèi)核,速度比普通8051快6~12倍 ·寬電壓:5.5~4.1V/3.7V ·低功耗設計:空閑模式(可由任意一個中斷喚醒);掉電模式(可由任意一個外部中斷喚醒,可支持下降沿/低電平和遠程喚醒,STC11xx系列還可通過內(nèi)部專用掉電喚醒定時器喚醒) INT0/P3.2,INT1/P3.3,T0/P3.4,T
4、1/P3.5,RxD/P3.0(或RxD/P1.6) ·工作頻率:0~35MHz,相當于普通8051:0~420MHz ·時鐘:外部晶體或內(nèi)部RC振蕩器可選,在ISP下載編程用戶程序時設置 ·32K字節(jié)片內(nèi)Flash程序存儲器,擦寫次數(shù)10萬次以上 ·1280字節(jié)片內(nèi)RAM數(shù)據(jù)存儲器 ·芯片內(nèi)EEPROM功能,擦寫次數(shù)10萬次以上速度快 ·ISP / I
5、AP,在系統(tǒng)可編程/在應用可編程,</p><p> 增加了P4口,共有36個I/O口。</p><p><b> 引腳功能:</b></p><p> STC11F32XE單片機所有I/O口均可由軟件配置成4種工作類型之一,如下表所示。4種類型分別為:準雙向口,推挽輸出,僅為輸入或開漏輸出功能。每個口有2個控制寄存器中的相應位控制每個引
6、腳工作類型。</p><p> 1.2LED點陣屏介紹</p><p> LED點陣是由發(fā)光二極管排列組成的顯示器件,在我們?nèi)粘I畹碾娖髦须S處可見,被廣泛應用于汽車報站器,廣告屏等。。特別是它的發(fā)光類型屬于冷光源,效率及發(fā)熱量是普通發(fā)光器件難以比擬的,它采用低電壓掃描驅(qū)動,具有:耗電少、使用壽命長、成本低、亮度高、故障少、視角大、可視距離遠、規(guī)格品、可靠耐用、應用靈活、安全、響應時間
7、短、綠色環(huán)保、控制靈活種等特點。</p><p><b> LED 顯示原理</b></p><p> 以簡單的8X8點陣為例,它共由64個發(fā)光二極管組成,且每個發(fā)光二極管是放置在行線和列線的交叉點上,當對應的某一行置1電平,某一列置0電平,則相應的二極管就亮;</p><p> 一般我們使用點陣顯示漢字是用的16*16的點陣宋體字庫,所
8、謂16*16,是每一個漢字在縱、橫各16點的區(qū)域內(nèi)顯示的。也就是說用四個8*8點陣組合成一個16*16的點陣。</p><p> 1.3溫度傳感器DS18B20介紹</p><p> 美國Dallas 半導體公司的數(shù)字化溫度傳感器DS1820 是世界上第一片支持 "一線總線"接口的溫度傳感器,在其內(nèi)部使用了在板(ON-B0ARD)專利技術(shù)。全部傳感元件及轉(zhuǎn)換電路集成
9、在形如一只三極管的集成電路內(nèi)。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡,為測量系統(tǒng)的構(gòu)建引入全新概念。現(xiàn)在,新一代的DS18B20 體積更小、更經(jīng)濟、更靈活。使你可以充分發(fā)揮“一線總線”的優(yōu)點。目前DS18B20 批量采購價格僅10 元左右。</p><p> DS18B20的主要特征</p><p> ?。?)適應電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式
10、下可由數(shù)據(jù)線供電;</p><p> ?。?)獨特的單線接口方式,DS18B20 在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20 的雙向通訊;</p><p> ?。?)DS18B20 支持多點組網(wǎng)功能,多個DS18B20 可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫;</p><p> ?。?)DS18B20 在使用中不需要任何外圍元件,全部傳感元件
11、及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi);</p><p> (5)溫范圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃;</p><p> ?。?)可編程的分辨率為9~12 位,對應的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫;</p><p> ?。?)在9 位分辨率時最多在93.75ms 內(nèi)把
12、溫度轉(zhuǎn)換為數(shù)字,12 位分辨率時最多在750ms 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快;</p><p> (8)測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC 校驗碼,具有極強的抗干擾糾錯能力;</p><p> 9.負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。</p><p> DS18B2
13、0的內(nèi)部結(jié)構(gòu)與外形</p><p> DS18B20 內(nèi)部結(jié)構(gòu)主要由四部分組成:64 位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH 和TL、配置寄存器。DS18B20 的管腳排列如圖19所示:</p><p> 圖19 DS18B20 引腳排列圖</p><p> DS18B20 引腳定義:</p><p> (1) GND
14、為電源地;</p><p> (2) DQ為數(shù)字信號輸入/輸出端;</p><p> (3)VDD 為外接供電電源輸入端(在寄生電源接線方式時接地)。</p><p> DS18B20工作原理 </p><p> DS18B20 測溫原理如圖20所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。
15、高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2 的脈沖輸入。計數(shù)器1 和溫度寄存器被預置在-55℃所對應的一個基數(shù)值。計數(shù)器1 對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當計數(shù)器1 的預置值減到0 時,溫度寄存器的值將加1,計數(shù)器1 的預置將重新被裝入,計數(shù)器1 重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到計數(shù)器2 計數(shù)到0 時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖20 中
16、的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數(shù)器1 的預置值。</p><p><b> 2設計方案</b></p><p> 方案一,使用實時時鐘芯片DS1302作為時鐘,跟單片機通信,獲得實時時鐘數(shù)據(jù),再通過LED點陣顯示;優(yōu)點是時鐘精度高,DS1302可以用外部電池供電,使得時間可以連續(xù)下去。</p><p> 方
17、案二,使用單片機內(nèi)部的定時器作為時鐘,每次中斷50ms,夠20次后就秒加一,夠60秒后置零,分加一,如次類推,實現(xiàn)時鐘。為了方便,我們選用51單片機自帶的定時功能來作為時鐘,但精度不高;優(yōu)點就是簡單。</p><p><b> 3系統(tǒng)硬件電路設計</b></p><p><b> 3.1設計目的</b></p><p>
18、; 設計一個電子時鐘,通過2個8X8LED點陣屏橫向流動顯示時間,日期,溫度;有3個按鍵控制按鈕:M鍵,+鍵,-鍵,分別控制進入設置界面,加,減,退出。它有3個功能模塊:</p><p> ?。?). 橫向顯示信息的2個8X8LED點陣屏。</p><p> ?。?). 能發(fā)出聲音的蜂鳴器。</p><p> ?。?). 傳遞溫度信息的溫度傳感器。</p&g
19、t;<p><b> 3.2總設計電路</b></p><p> 3.2.1顯示電路設計</p><p> 顯示電路采用2個8X8LED點陣屏,用I/O口的推挽工作方式驅(qū)動LED,采用逐點掃描。</p><p> 推挽工作方式:就是具有強上拉能力的工作方式,可以實現(xiàn)高電平驅(qū)動LED。</p><p>
20、; 而I/O口的推挽工作方式所能輸出的最大電流時20mA,每個LED都會消耗10-20mA的電流,如果用逐列掃描,讓I/O口同時驅(qū)動8個LED,明顯是不行的,所以只能用逐點掃描方式。將LED點陣屏引腳分別接在P0,P1,P2,P3,P4口上來驅(qū)動LED點陣屏顯示。</p><p> 3.2.2鍵控電路的設計</p><p> 按鍵1(M鍵) : 連接在P1.3和P0.2,讀P0.2為
21、低時表示有按鍵動作。</p><p> 按鍵2(+鍵 ) : 連接在P4.6和P3.0,讀P3.0為低時表示有按鍵動作。</p><p> 按鍵3(-鍵 ) : 連接在P2.4和P3.6,讀P3.6為低時表示有按鍵動作。</p><p> 3.2.3 蜂鳴器電路的設計</p><p> 將蜂鳴器接在地和P2.2口,當按鍵按下時或需要聲
22、音時,置P2.2口為高電平一段時間即可。</p><p> 3.2.4溫度傳感器電路的設計</p><p> 將1腳接地,3腳接電源,2角接P2.1口。溫度傳感器DS18B20在檢測到環(huán)境溫度后,將溫度信息轉(zhuǎn)換為數(shù)字信號,從DQ腳輸出,然后用單片機讀取P2.1 口的信息,再從程序中取出相應的字符,送到LED點陣屏顯示出相應溫度。</p><p> 3.2.5晶
23、振電路部分</p><p> 晶振電路如圖所示,由2個30pF電容C1、C2和一個12MHz的晶振X1組成。它能產(chǎn)生一個高精度且穩(wěn)定的振蕩信號,即頻率為12MHz的方波信號,此信號為單片機提供一個時鐘信號,以供定時器定時用。</p><p><b> 4.系統(tǒng)軟件設計</b></p><p> 主程序?qū)崿F(xiàn)對單片機進行初始化后,顯示開機LO
24、GO畫面,然后進入時鐘顯示主畫面,并一直檢測各按鍵的電平狀態(tài),當按鍵M按下時,顯示相應的設置項目,并檢測各按鍵的電平狀態(tài),按鍵M按下,則進入相應的項目設置界面,顯示相應的數(shù)值,按+,-鍵,實現(xiàn)對數(shù)值的調(diào)整;按下+鍵,顯示下一項設置項目,按下-鍵,退出設置,顯示時鐘顯示主畫面。</p><p><b> 主程序流程圖</b></p><p><b> 中斷
25、程序的流程圖</b></p><p><b> 4.1時鐘定時程序</b></p><p> 用定時起T0產(chǎn)生50ms的信號,進行時間的計算 </p><p> void tiem0(void) interrupt 1{ // T0中斷服務程序(產(chǎn)生50ms信號) </p><p> cou+
26、+; // 軟計數(shù)器加1 </p><p> if(cou > 19){ // 計數(shù)值到100(1s) </p><p> cou = 0; // 軟計數(shù)器清零 </p><p> TIME_SS++; //
27、秒計數(shù)器加1(進位10ms*100=1s) </p><p> if(TIME_SS > 59){ // 秒計數(shù)值到60 </p><p> TIME_SS = 0; // 秒計數(shù)器清零 </p><p> TIME_MM++; // 分計數(shù)器加1(進位60s=1m) </
28、p><p> if(TIME_MM > 59){ // 分計數(shù)到60 </p><p> TIME_MM = 0; // 分計數(shù)器清零 </p><p> TIME_HH++; // 時計數(shù)器加1(進位60m=1h) </p><p> if(TIME_HH > 23){ /
29、/ 時計數(shù)到23 </p><p> TIME_HH = 0; // 時計數(shù)器清零</p><p> DAY_BIT = 1;//天增加標志位 </p><p><b> } </b></p><p><b> } </b></p><p><b
30、> } </b></p><p><b> } </b></p><p> TH0 = 0x3c; // 重置定時常數(shù) </p><p> TL0 = 0xb0; </p><p><b> }</b></p>
31、<p><b> 中斷程序的流程圖</b></p><p> 4.2時間顯示的實現(xiàn)</p><p> 由T0定時器得到相應的時間,日期的數(shù)據(jù),依據(jù)數(shù)據(jù)從程序中的數(shù)據(jù)表中取出相應的碼值,存進顯示緩沖區(qū)中。不斷調(diào)用時鐘顯示子程序,將顯示緩沖區(qū)中的碼值取出,用逐點掃描的方式,通過LED點陣屏來顯示,即可實現(xiàn)時間的顯示。</p><p>
32、; //-----------------------------------數(shù)字字符表 </p><p> {0x7E,0xFF,0x81,0x81,0xFF,0x7E,0},//0</p><p> {0x82,0xFF,0xFF,0x80,0}, //1</p><p> {0xC6,0xE7,0xB1,0x99,0x8F,0x86,0},//2<
33、;/p><p> {0x42,0xC3,0x89,0x89,0xFF,0x76,0},//3</p><p> {0x30,0x28,0xA6,0xFF,0xFF,0xA0,0},//4</p><p> {0x4F,0xCF,0x89,0x89,0xF9,0x71,0},//5</p><p> {0x7E,0xFF,0x89,0x8B
34、,0xFB,0x70,0},//6</p><p> {0x03,0x03,0xF9,0xFF,0x07,0},//7</p><p> {0x76,0xFF,0x89,0x89,0xFF,0x76,0},//8</p><p> {0x0E,0xDF,0xD1,0x91,0xFF,0x7E,0},//9</p><p> //---
35、--------------------------------星期字符表</p><p> {0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0},//一10</p><p> {0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0},//二</p><p> {0x82,0x92,0x92,0x
36、92,0x92,0x92,0x82,0x80,0},//三</p><p> {0xFE,0xA2,0x9E,0x82,0x9E,0xA2,0xFE,0},//四</p><p> {0x80,0x89,0xFF,0x89,0x89,0x89,0xF9,0x80,0},//五</p><p> {0x88,0x68,0x38,0x0E,0x38,0x68,0x
37、88,0},//六</p><p> {0xFE,0x92,0x92,0x92,0x92,0xFE,0},//日10+6</p><p> //-----------------------------------特殊字符表</p><p> {0x6C,0x6C,0},//“:”17</p><p> {0x1
38、8,0x18,0x18,0x18,0},//“-” 18</p><p> {0x01,0x0c,0x12,0x12,0},//“oC”19</p><p> {0x24,0x3b,0x2a,0xfe,0x2a,0x22,0},//“年”(在調(diào)時時表示年)20</p><p> {0x80,0x7E,0x15,0x15,0x95,0xFF,0}
39、,//“月”21</p><p> {0xFE,0x92,0x92,0x92,0xFE,0},//“日”22</p><p> {0x80,0x7f,0x75,0x5f,0x75,0xFF,0},//“周”23</p><p> {0x7c,0x54,0x7c,0x04,0x94,0xFF,0x04,0},//“時”24</p><p>
40、; {0x08,0x94,0x52,0x30,0x93,0xF4,0x08,0},//“分”25</p><p><b> };</b></p><p><b> 4.3閏年的判斷</b></p><p> (a%4==0 && a%100!=0)||(a%400==0)閏年的計算公式。</p
41、><p><b> 參考文獻</b></p><p> [1] 李全利 編著 :《單片機原理及接口技術(shù)》(第2版). 北京:高等教育出版社,2004 [2] 張志良 主編 :《單片機原理及控制技術(shù)》(第2版). 北京:機械工業(yè)出版社,2005 [3] 李 華 主編 :《MCS-51單片機實用接口技術(shù)》. 北京:北京航空航天出版社,1997
42、</p><p> [4] 杜 洋 主編 :《愛上單片機》</p><p><b> 附 錄:</b></p><p><b> 程序代碼如下:</b></p><p> #include <STC11Fxx.H> //STC頭文件</p><p>
43、 #define LOGOSPEED10 //設置開機LOGO部分的流動速度</p><p> #define DELAY12 //設置每一個點顯示的時間長度(1~20)</p><p> //#define B_SPEED7 //設置流動速度(與DY_DELAY配合實現(xiàn))</p><p> #define DIS_RAM80 //設置時間顯示緩
44、沖區(qū)大小</p><p> sbitLED1_H1=P4 ^ 7; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_H2=P1 ^ 3; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_H3=P0 ^ 7; //設置LED點陣屏連接的I/O口</p><p> sbitLE
45、D1_H4=P1 ^ 5; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_H5=P0 ^ 0; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_H6=P0 ^ 6; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_H7=P0 ^ 1; //設置LED點陣屏連接的I/O口&l
46、t;/p><p> sbitLED1_H8=P0 ^ 4; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_L1=P1 ^ 4; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_L2=P0 ^ 2; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_L3
47、=P0 ^ 3; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_L4=P1 ^ 7; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_L5=P0 ^ 5; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_L6=P1 ^ 6; //設置LED點陣屏連接的I/O口</p&g
48、t;<p> sbitLED1_L7=P1 ^ 2; //設置LED點陣屏連接的I/O口</p><p> sbitLED1_L8=P1 ^ 1; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_H1=P3 ^ 7; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_H2=P3 ^
49、2; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_H3=P2 ^ 3; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_H4=P3 ^ 4; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_H5=P4 ^ 6; //設置LED點陣屏連接的I/O口</p>&l
50、t;p> sbitLED2_H6=P2 ^ 4; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_H7=P4 ^ 5; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_H8=P2 ^ 6; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_L1=P3 ^ 3; //設
51、置LED點陣屏連接的I/O口</p><p> sbitLED2_L2=P4 ^ 4; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_L3=P2 ^ 7; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_L4=P3 ^ 6; //設置LED點陣屏連接的I/O口</p><p>
52、; sbitLED2_L5=P2 ^ 5; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_L6=P3 ^ 5; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_L7=P3 ^ 1; //設置LED點陣屏連接的I/O口</p><p> sbitLED2_L8=P3 ^ 0; //設置LED點陣
53、屏連接的I/O口</p><p> sbitLED_LOOK_A=P0 ^ 1;</p><p> sbitLED_LOOK_B=P0 ^ 0;</p><p> sbitBEEP=P2 ^ 2; //揚聲器</p><p> sbitKEY1=P0 ^ 2; //按鍵1(M鍵)(連接在P1.3和P0.2,讀P0.
54、2為低時表示有按鍵動作)</p><p> sbitKEY2=P3 ^ 0; //按鍵2(+鍵)(連接在P4.6和P3.0,讀P3.0為低時表示有按鍵動作)</p><p> sbitKEY3=P3 ^ 6; //按鍵3(-鍵)(連接在P2.4和P3.6,讀P3.6為低時表示有按鍵動作)</p><p> #define P0M1SET0x00
55、 //設置I/O口工作方式//00000000</p><p> #define P0M0SET0xd3 //設置I/O口工作方式//11010011(PxM0為1時設置為強推)</p><p> #define P1M1SET0x00 //設置I/O口工作方式//00000000(左到右,高到低位)</p><p> #define P1M0SET
56、0x28 //設置I/O口工作方式//00101000</p><p> #define P2M1SET0x00 //設置I/O口工作方式//00000000</p><p> #define P2M0SET0x5C //設置I/O口工作方式//01011100</p><p> #define P3M1SET0x00 //設置I/O口工作方式/
57、/00000000</p><p> #define P3M0SET0x94 //設置I/O口工作方式//10010100</p><p> #define P4M1SET0x00 //設置I/O口工作方式//00000000</p><p> #define P4M0SET0xe0 //設置I/O口工作方式//11100000</p>
58、<p> data unsigned char Ledplay [DIS_RAM];//定義顯示緩沖寄存器</p><p> data unsigned char TIME_DD,TIME_MO,TIME_YY,TIME_WW,TIME_HH,TIME_MM,TIME_SS,ty;//設置日、月、年、周、時、分、秒和溫度存放區(qū)</p><p> data bit DAY
59、_BIT = 0;//天數(shù)增加標志位(用于日期進位的啟動)</p><p> data unsigned char DIS_BIT = 0; //多種信息的切換顯示</p><p> data unsigned char cou = 0; // 軟計數(shù)器,對10ms時基信號累加到1s </p><p> data unsigned char bn;/
60、/掃描映射全局變量</p><p> idata unsigned char PWM;//顯示亮度</p><p> idata unsigned char PWM2;//顯示暫存</p><p> idata unsigned char B_SPEED;//流動速度</p><p> idata unsigned char MENU
61、;//菜單切換標志位</p><p> idata unsigned char KEY_BIT = 0;//按鍵值</p><p> idata unsigned char pp=1;//最終顯示程序調(diào)用的普通變量</p><p> idata unsigned char LEDLOOK_a=1;</p><p> unsigned
62、char DSS (void); //匯編語言讀18B20溫度程序聲明</p><p> /*********************************************************************************************/</p><p> unsigned char code Vx[] = { // A
63、SCII</p><p><b> 0,</b></p><p> 0x1,0x1,0x1,0x7F,0x8C,0x92,0x40, // -飛-</p><p><b> 0,</b></p><p> 0x1,0x1,0x1,0x7F,0x8C,0x92,0x40,// -飛-</
64、p><p><b> };</b></p><p> /**********************************************************************************************/</p><p> unsigned char code no[][10]={//-定義字符數(shù)據(jù)表
65、單(二維數(shù)組)</p><p> //-----------------------------------數(shù)字字符表 </p><p> {0x7E,0xFF,0x81,0x81,0xFF,0x7E,0},//0</p><p> {0x82,0xFF,0xFF,0x80,0}, //1</p><p> {0xC6,0xE7,0x
66、B1,0x99,0x8F,0x86,0},//2</p><p> {0x42,0xC3,0x89,0x89,0xFF,0x76,0},//3</p><p> {0x30,0x28,0xA6,0xFF,0xFF,0xA0,0},//4</p><p> {0x4F,0xCF,0x89,0x89,0xF9,0x71,0},//5</p><
67、p> {0x7E,0xFF,0x89,0x8B,0xFB,0x70,0},//6</p><p> {0x03,0x03,0xF9,0xFF,0x07,0},//7</p><p> {0x76,0xFF,0x89,0x89,0xFF,0x76,0},//8</p><p> {0x0E,0xDF,0xD1,0x91,0xFF,0x7E,0},//9&
68、lt;/p><p> //-----------------------------------星期字符表</p><p> {0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0},//一10</p><p> {0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0},//二</p>&l
69、t;p> {0x82,0x92,0x92,0x92,0x92,0x92,0x82,0x80,0},//三</p><p> {0xFE,0xA2,0x9E,0x82,0x9E,0xA2,0xFE,0},//四</p><p> {0x80,0x89,0xFF,0x89,0x89,0x89,0xF9,0x80,0},//五</p><p> {0x88,
70、0x68,0x38,0x0E,0x38,0x68,0x88,0},//六</p><p> {0xFE,0x92,0x92,0x92,0x92,0xFE,0},//日10+6</p><p> //-----------------------------------特殊字符表</p><p> {0x6C,0x6C,0},//“:”17
71、</p><p> {0x18,0x18,0x18,0x18,0},//“-” 18</p><p> {0x01,0x0c,0x12,0x12,0},//“oC”19</p><p> {0x24,0x3b,0x2a,0xfe,0x2a,0x22,0},//“年”(在調(diào)時時表示年)20</p><p> {0x80,
72、0x7E,0x15,0x15,0x95,0xFF,0},//“月”21</p><p> {0xFE,0x92,0x92,0x92,0xFE,0},//“日”22</p><p> {0x80,0x7f,0x75,0x5f,0x75,0xFF,0},//“周”23</p><p> {0x7c,0x54,0x7c,0x04,0x94,0xFF,0x04,0},
73、//“時”24</p><p> {0x08,0x94,0x52,0x30,0x93,0xF4,0x08,0},//“分”25</p><p> {0x49,0x3f,0x09,0x7f,0x09,0},//“開”26</p><p> {0x4a,0x2b,0x1e,0x2b,0x4a,0},//“關”27</p><p><b
74、> };</b></p><p> unsigned char code shezhishijian[] = // “設置時間”</p><p><b> {</b></p><p> 0x04,0x11,0x0C,0x3F,0x18,0x1B,0x08,0x1B,//</p><
75、p> 0x10,0xF9,0xBE,0x71,0xD8,0x20,0xB8,0x7F,</p><p> 0x18,0x31,0x18,0x32,0x18,0x1E,0x58,0x0C,</p><p> 0x38,0x1E,0x1C,0x33,0x88,0xE1,0x60,0x40,0,0,</p><p> 0xFC,0x7F,0xCC,0x66,
76、0xCC,0x66,0xFC,0x7F,//</p><p> 0x80,0x01,0xFE,0xFF,0x90,0x11,0xF0,0x3F,</p><p> 0x30,0x18,0xF0,0x1F,0x30,0x18,0xF0,0x1F,</p><p> 0x30,0x18,0xF0,0x1F,0x30,0x58,0xFE,0xFF,0,0,</
77、p><p> 0x00,0x10,0x42,0x30,0xFE,0x30,0x66,0x30,//</p><p> 0x66,0xFF,0x66,0x30,0x7E,0x31,0x66,0x33,</p><p> 0x66,0x36,0x66,0x36,0x66,0x32,0x7E,0x30,</p><p> 0x26,0x30,0
78、x02,0x30,0x00,0x3C,0x00,0x10,0,0,</p><p> 0x0C,0x40,0xB8,0xFF,0x12,0x60,0x06,0x60,//</p><p> 0x26,0x64,0xE6,0x6F,0x66,0x66,0x66,0x66,</p><p> 0xE6,0x67,0x66,0x66,0x66,0x66,0xE6,0
79、x67,</p><p> 0x26,0x62,0x06,0x60,0x06,0x78,0x02,0x20,0,0</p><p><b> };</b></p><p> unsigned char code liudongsudu[] = // “流動速度”</p><p><b>
80、 {</b></p><p> 0x02,0x03,0x04,0x26,0xEC,0x7F,0x0C,0x03,</p><p> 0x81,0x19,0xC2,0x30,0xE6,0x7F,0xD6,0x2A,</p><p> 0xC8,0x1A,0xC8,0x1A,0xCD,0x1A,0xC6,0x1A,</p><p&
81、gt; 0xC6,0x5A,0x6E,0x5A,0x2C,0x7A,0x14,0x32,0,0,</p><p> 0x00,0x02,0x20,0x06,0x7E,0x06,0x00,0x26,</p><p> 0x80,0x7F,0x40,0x36,0xFF,0x36,0x18,0x36,</p><p> 0x0C,0x36,0x2C,0x36,0x
82、66,0x33,0x7F,0x33,</p><p> 0xA6,0x31,0xC0,0x30,0x40,0x1C,0x20,0x08,0,0,</p><p> 0x00,0x03,0x02,0x13,0xF6,0x3F,0x2C,0x13,</p><p> 0xE4,0x3F,0x68,0x1B,0xFF,0x1F,0x2C,0x0B,</p>
83、;<p> 0x8C,0x07,0xCC,0x0F,0x4C,0x1B,0x2C,0x33,</p><p> 0x1C,0x13,0x36,0x01,0xE3,0x7F,0xC2,0x3F,0,0,</p><p> 0x00,0x01,0x04,0x23,0xFC,0x7F,0x4C,0x04,</p><p> 0xCC,0x2C,0xF
84、C,0x7F,0xCC,0x0C,0xCC,0x0F,</p><p> 0x4C,0x14,0xEC,0x3F,0xCC,0x18,0x86,0x0D,</p><p> 0x06,0x07,0x82,0x1D,0xC1,0x78,0x30,0x20,0,0</p><p><b> };</b></p><p>
85、; unsigned char code xianshiliangdu[] = // “顯示亮度”</p><p><b> {</b></p><p> 0x08,0x08,0xF8,0x1F,0x18,0x0C,0x18,0x0C,</p><p> 0xF8,0x0F,0x18,0x0C,0x18,0x0C,0x
86、F8,0x0F,</p><p> 0x68,0x0B,0x62,0x13,0x64,0x33,0x6C,0x1B,</p><p> 0x6C,0x0F,0x64,0x07,0x60,0x23,0xFF,0x7F,0,0,</p><p> 0x00,0x08,0xF8,0x1F,0x00,0x00,0x00,0x00,</p><p&g
87、t; 0x00,0x20,0xFE,0x7F,0x80,0x01,0x90,0x03,</p><p> 0xB0,0x05,0x98,0x0D,0x98,0x19,0x8C,0x39,</p><p> 0x8C,0x71,0x86,0x61,0xE1,0x21,0x80,0x00,0,0,</p><p> 0xC0,0x00,0x80,0x11,0xF
88、E,0x3F,0x08,0x08,</p><p> 0xF8,0x1F,0x18,0x0C,0xF8,0x0F,0x0A,0x24,</p><p> 0xFE,0x7F,0x13,0x34,0xF1,0x1F,0x30,0x06,</p><p> 0x38,0x26,0x18,0x26,0x0C,0x7E,0x02,0x3C,0,0,</p>
89、<p> 0x00,0x01,0x04,0x23,0xFC,0x7F,0x4C,0x04,</p><p> 0xCC,0x2C,0xFC,0x7F,0xCC,0x0C,0xCC,0x0F,</p><p> 0x4C,0x14,0xEC,0x3F,0xCC,0x18,0x86,0x0D,</p><p> 0x06,0x07,0x82,0x1
90、D,0xC1,0x78,0x30,0x20,0,0</p><p><b> };</b></p><p> unsigned char code wancheng[] = // “完成”</p><p><b> {</b></p><p> 0x80,0x01,0x08
91、,0x43,0xFC,0xFF,0x0E,0x60,</p><p> 0x04,0x28,0xF0,0x1F,0x00,0x00,0x00,0x20,</p><p> 0xFC,0x7F,0x60,0x06,0x60,0x06,0x60,0x46,</p><p> 0x30,0x46,0x30,0xC6,0x18,0xFE,0x06,0x7C,0,0,&
92、lt;/p><p> 0x00,0x05,0x00,0x3B,0x04,0x13,0xFC,0x7F,</p><p> 0x0C,0x03,0x0C,0x23,0x8C,0x66,0xFC,0x37,</p><p> 0xCC,0x36,0xCC,0x16,0xCC,0x1E,0xCC,0x0C,</p><p> 0x76,0x5C
93、,0x26,0x5E,0x02,0x73,0x81,0x60,0,0</p><p><b> };</b></p><p> /*********************************************************************************************/</p><p> v
94、oid delay (unsigned int a){ // 用于點掃描的延時</p><p> unsigned int i;</p><p> while( --a != 0){</p><p> for(i = 0; i < DELAY; i++); </p><p> } </p><
95、;p><b> }</b></p><p> /*********************************************************************************************/</p><p> void delay1ms (unsigned int a){ // 1ms延時程序(12MHz 10
96、倍于51單片機速度時)</p><p> unsigned int i;</p><p> while( --a != 0){</p><p> for(i = 0; i < 600; i++); </p><p> } </p><p><b> }</b>&l
97、t;/p><p> /*********************************************************************************************/</p><p> void P_BEEP (unsigned char p){</p><p><b> BEEP = 1;</b>
98、</p><p> delay1ms (p);//延時1.5秒</p><p><b> BEEP = 0;</b></p><p><b> }</b></p><p> /**********************************************************
99、***********************************/</p><p> void dis_off (void){</p><p> P0 = ~P0M0SET; //關所有顯示</p><p> P1 = ~P1M0SET;</p><p> P2 = ~P2M0SET;</p><p>
100、 P3 = ~P3M0SET;</p><p> P4 = ~P4M0SET;</p><p> if(KEY1 == 0 || KEY2 == 0 || KEY3 == 0){ //如果有鍵按下則開始處理</p><p> delay1ms (20);</p><p> if(KEY1 == 0){</p><p
101、> KEY_BIT = 1;</p><p> P_BEEP(500);</p><p> while(KEY1 == 0);//等待按鍵放開</p><p><b> }</b></p><p> if(KEY2 == 0){</p><p> KEY_BIT = 2;<
102、;/p><p> P_BEEP(100);</p><p> while(KEY2 == 0);//等待按鍵放開</p><p><b> }</b></p><p> if(KEY3 == 0){</p><p> KEY_BIT = 3;</p><p> P
103、_BEEP(100);</p><p> while(KEY3 == 0);//等待按鍵放開</p><p><b> }</b></p><p><b> }</b></p><p> delay(10-PWM); </p><p><b> }<
104、/b></p><p> /*********************************************************************************************/</p><p> void displayHH1 (unsigned char d){ </p><p> unsigned char i
105、;</p><p> i = d & 0x01;</p><p> if(i == 0x01){</p><p> LED1_H1 = 1;LED1_L1 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x02;</p><p> if(i == 0x
106、02){</p><p> LED1_H2 = 1;LED1_L1 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x04;</p><p> if(i == 0x04){</p><p> LED1_H3 = 1;LED1_L1 = 0;delay(PWM);dis_off();}&
107、lt;/p><p> i = d & 0x08;</p><p> if(i == 0x08){</p><p> LED1_H4 = 1;LED1_L1 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x10;</p><p> if(i == 0x10
108、){</p><p> LED1_H5 = 1;LED1_L1 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x20;</p><p> if(i == 0x20){</p><p> LED1_H6 = 1;LED1_L1 = 0;delay(PWM);dis_off();}<
109、;/p><p> i = d & 0x40;</p><p> if(i == 0x40){</p><p> LED1_H7 = 1;LED1_L1 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x80;</p><p> if(i == 0x80){
110、</p><p> LED1_H8 = 1;LED1_L1 = 0;delay(PWM);dis_off();}</p><p><b> } </b></p><p> /***********************************************************************************
111、**********/</p><p> void displayHH2 (unsigned char d){ </p><p> unsigned char i;</p><p> i = d & 0x01;</p><p> if(i == 0x01){</p><p> LED1_H1 = 1;
112、LED1_L2 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x02;</p><p> if(i == 0x02){</p><p> LED1_H2 = 1;LED1_L2 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x04;
113、</p><p> if(i == 0x04){</p><p> LED1_H3 = 1;LED1_L2 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x08;</p><p> if(i == 0x08){</p><p> LED1_H4 = 1;LE
114、D1_L2 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x10;</p><p> if(i == 0x10){</p><p> LED1_H5 = 1;LED1_L2 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x20;&l
115、t;/p><p> if(i == 0x20){</p><p> LED1_H6 = 1;LED1_L2 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x40;</p><p> if(i == 0x40){</p><p> LED1_H7 = 1;LED1
116、_L2 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x80;</p><p> if(i == 0x80){</p><p> LED1_H8 = 1;LED1_L2 = 0;delay(PWM);dis_off();}</p><p><b> } </b>
117、</p><p> /*********************************************************************************************/</p><p> void displayHH3 (unsigned char d){ </p><p> unsigned char i;</
118、p><p> i = d & 0x01;</p><p> if(i == 0x01){</p><p> LED1_H1 = 1;LED1_L3 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x02;</p><p> if(i == 0x02){&l
119、t;/p><p> LED1_H2 = 1;LED1_L3 = 0;delay(PWM);dis_off();}</p><p> i = d & 0x04;</p><p> if(i == 0x04){</p><p> LED1_H3 = 1;LED1_L3 = 0;delay(PWM);dis_off();}</p&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計報告—led顯示電子鐘
- 單片機課程設計--基于at89c52單片機的led點陣顯示電子鐘設計
- 單片機課程設計-基于at89c52單片機的led點陣顯示電子鐘設計
- 電子鐘課程設計--基于單片機的電子鐘設計
- 課程設計-led點陣電子鐘
- 單片機課程設計--點陣led電子顯示屏
- 單片機課程設計---點陣led電子顯示屏
- 基于單片機的電子鐘課程設計
- 單片機課程設計報告---單片機的電子鐘設計
- 基于單片機的led點陣顯示電子鐘畢業(yè)設計
- 單片機課程設計報告-電子鐘設計
- 單片機課程設計---led點陣屏滾動
- 電子鐘單片機課程設計
- 基于單片機的電子鐘課程設計
- 單片機課程設計--電子鐘
- 單片機課程設計(電子鐘)
- 《單片機原理》課程設計報告--電子鐘
- 《單片機技術(shù)》電子鐘課程設計---數(shù)字電子鐘
- 單片機課程設計---led點陣電子顯示屏的設計
- 單片機課程設計--基于單片機的電子鐘的設計
評論
0/150
提交評論