計算機科學與技術專業(yè)專升本論文.doc
《計算機科學與技術專業(yè)專升本論文.doc》由會員分享,可在線閱讀,更多相關《計算機科學與技術專業(yè)專升本論文.doc(68頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1 畢 業(yè) 論 文 題題 目目 基于基于 AVR 的可調(diào)電子鐘設計的可調(diào)電子鐘設計 院系名稱:院系名稱:計算機科學與技術計算機科學與技術 專業(yè)班級:專業(yè)班級:1111 專升本專升本 學生姓名:學生姓名: 學學 號:號: 指導教師:指導教師: 2 目錄目錄 摘摘 要要4 4 第一章第一章 引言引言5 5 1.11.1 設計任務設計任務5 1.21.2 設計要求設計要求5 第二章第二章 總體方案論證與設計總體方案論證與設計總體方案論證與設計總體方案論證與設計6 6 第三章第三章 系統(tǒng)硬件設置系統(tǒng)硬件設置7 7 3.13.1 ATmega16ATmega16 單片機簡介單片機簡介.7 3.23.2
2、ATmega16ATmega16 單片機的工作原理單片機的工作原理.7 3.2.13.2.1 I/OI/O 端口的工作原理端口的工作原理 7 3.2.23.2.2 定時定時/ /計數(shù)器計數(shù)器 .8 3.2.33.2.3 中斷系統(tǒng)中斷系統(tǒng)8 3.2.43.2.4 振蕩器振蕩器9 3.33.3 時鐘模塊設計時鐘模塊設計.10 3.3.13.3.1 DS1302DS1302 特性介紹特性介紹 10 3.3.23.3.2 DS1302DS1302 引腳介紹引腳介紹 11 3.3.33.3.3 DS1302DS1302 有關日歷,時間的寄存器有關日歷,時間的寄存器 12 3.3.43.3.4 DS130
3、2DS1302 與單片機接口電路與單片機接口電路 12 3.43.4 顯示模塊設計顯示模塊設計.13 3.4.13.4.1 LCD1602LCD1602 的特性介紹的特性介紹 .14 3.4.23.4.2 LCD1602LCD1602 引腳介紹引腳介紹 .15 3.4.33.4.3 16021602 內(nèi)部功能器件及相關功能內(nèi)部功能器件及相關功能 16 3.4.43.4.4 16021602 液晶與單片機接口電路液晶與單片機接口電路 18 3.53.5 設置模塊設置模塊 20 3.63.6 振蕩電路振蕩電路 21 3.73.7 復位電路復位電路 22 第四章第四章 系統(tǒng)軟件設計系統(tǒng)軟件設計232
4、3 4.14.1 時鐘函數(shù)模塊時鐘函數(shù)模塊 25 4.1.14.1.1 實現(xiàn)功能實現(xiàn)功能 .25 3 4.1.24.1.2 函數(shù)設計函數(shù)設計.25 4.24.2 顯示函數(shù)模塊顯示函數(shù)模塊 30 4.2.14.2.1 實現(xiàn)功能實現(xiàn)功能 .30 4.2.24.2.2 函數(shù)設計函數(shù)設計.30 4.2.34.2.3 小結小結.31 4.34.3 按鍵函數(shù)模塊按鍵函數(shù)模塊 32 4.3.14.3.1 實現(xiàn)功能實現(xiàn)功能.32 4.3.24.3.2 函數(shù)設計函數(shù)設計.32 4.3.34.3.3 小結小結.32 4.44.4 主函數(shù)模塊主函數(shù)模塊 32 第五章第五章 心得體會心得體會3333 第六章第六章 致
5、謝致謝3333 附錄附錄 1 1 元器件表元器件表 3434 附錄附錄 2 2 仿真圖仿真圖 3535 附錄附錄 3 3 源碼源碼 3636 附錄附錄 4 4 參考文獻參考文獻 6868 4 摘摘 要要 單片機就是微控制器,是面向應用對象設計、突出控制功能的芯片。單片機 接上晶振、復位電路和相應的接口電路,裝載軟件后就可以構成單片機應用系統(tǒng)。 本設計就是應用單片機強大的控制功能制作而成的指針式電子鐘,該指針式電子 鐘實現(xiàn)如下功能:液晶屏模擬表盤與時分秒指針顯示當前時鐘,K1 鍵用于選擇 調(diào)節(jié)對象,K2 鍵用于調(diào)整時分秒,在按下 K4 鍵時確定調(diào)節(jié)值,時鐘繼續(xù)運行。 本設計采用的是 AVR 單片
6、機,AVR 系列的單片機不僅具有良好的集成性能, 而且都具備在線編程接口,其中的 Mega 系列還具備 JTAG 仿真和下載功能;含有 片內(nèi)看門狗電路、片內(nèi)程序 Flash、同步串行接口 SPI;多數(shù) AVR 單片機還內(nèi)嵌 了 AD 轉(zhuǎn)換器、EEPROM、模擬比較器、PWM 定時計數(shù)器等多種功能;AVR 單片機 的 IO 接口具有很強的驅(qū)動能力,灌入電流可直接驅(qū)動繼電器、LCD 等元件。 芯片采用 DALLAS 公司的涓細充電時鐘芯片 DS1302,該芯片通過簡單的串行通 信與單片機進行通信,時鐘/日歷電路能夠?qū)崟r提供年、月、日、時分、秒信息, 采用雙電源供電,當外部電源掉電時能夠利用后備電池
7、準確計時。 顯示器件采用 LCD1602 液晶,通過相應的按鍵調(diào)整相應的值。通過此次設 計能夠更加牢固的掌握單片機的應用技術,增強動手能力、硬件設計能力以及軟 件設計能力。 關鍵詞關鍵詞 AVR 單片機 時鐘芯片 DS1302 LCD1602 液晶 5 第一章第一章 引言引言 本例采用 LCD1602 液晶作為顯示元件,液晶屏顯示當前時鐘。該電子鐘實 現(xiàn)如下功能:液晶屏模擬表盤與時分秒指針顯示當前時鐘,K1 鍵用于選擇調(diào)節(jié) 對象,K2 鍵用于調(diào)整時分秒,在按下 K3 鍵時確定調(diào)節(jié)值,時鐘繼續(xù)運行。本例 程序包含控制模塊、顯示模塊、實時時間計算模塊、設置模塊(時間設置模塊) 。 1.11.1 設
8、計任務設計任務 利用 AVR 單片機等實現(xiàn)一個簡單的基于 AVR 的可調(diào)電子鐘。 1.21.2 設計要求設計要求 a實現(xiàn)年月日時分秒指針式顯示功能 b用三個按鍵來實現(xiàn)調(diào)整時分秒的功能 6 第二章第二章 總體方案論證與設計總體方案論證與設計總體方案論證與設計總體方案論證與設計 組成框圖中包含顯示模塊,控制器,時間模塊,設置模塊。顯示模塊有 LCD1602 來控制顯示,整個代碼實現(xiàn)主要由控制器來實現(xiàn),時間模塊有 DS1302 來實現(xiàn),可以顯示系統(tǒng)時間,也可自行調(diào)整,設置模塊為按鍵處理。具體模塊分 析在相關的軟硬件設計中詳細介紹。 本設計中的可調(diào)電子鐘擬采用 AVR 系列單片機 ATMEGA16 作
9、為主控制器, 以 DS1302 時鐘芯片和 16M 的外置晶振提供準確時間標準,以期實現(xiàn)對“時、分、 秒”的數(shù)字顯示和校準時間的計時裝置;可調(diào)電子鐘不但可以顯示當前時間,而 且可以顯示年、月、日等,給人們的生活帶來方便。另外可調(diào)電子鐘還具備日期 時間的調(diào)節(jié)與寫入功能。本設計將以 AVR 單片機為控制核心,通過與 DS1302 信獲取實時時間,并將得到的數(shù)據(jù)通過 LCD1602 液晶顯示出來,同時通過相應 的按鍵調(diào)整相應的值。因此本設計可分為以下模塊:控制模塊、顯示模塊、實時 時間計算模塊、設置模塊(時間設置模塊) 。 7 第三章第三章 系統(tǒng)硬件設置系統(tǒng)硬件設置 3.13.1 ATmega16
10、單片機簡介單片機簡介 ATmega16 單片機是 ATmega 系列 AVR 單片機中內(nèi)容接口豐富,功能齊全,性 能價格比較高的產(chǎn)品。它具有高性能、低功耗的 8 位 AVR 微處理器,先進的 RISC 結構,非易失性程序和數(shù)據(jù)存儲器等。ATmega16 單片機的中央處理器由 32 個 8 位通用寄存器,1 個算術運算單元及狀態(tài)和控制邏輯單元組成。AVR 采用了 哈弗結構,具有獨立的程序總線和數(shù)據(jù)總線,程序存儲器里的指令通過一級流水 線運行。它的存儲器分為獨立尋址的 flash 程序存儲器,片內(nèi) SRAM 數(shù)據(jù)存儲器 和 EEPROM 3 部分,均采用線性編址。 圖 3-1 3.23.2 ATm
11、ega16ATmega16 單片機的工作原理單片機的工作原理 3.2.13.2.1 I/OI/O 端口的工作原理端口的工作原理 8 ATmeage16 單片機具有 32 個通用 I/O 口,分為 PA,PB,PC,PD,每組都是八位。 這些 I/O 都是可以通過各自的端口寄存器設置為輸入或置成輸出,有些 I/O 口還 具有第二功能。 所有的端口引腳都具有內(nèi)部上拉電阻,可以通過寄存器獨立選擇是否連接, 復位時所有的引腳都為高阻態(tài)。ATmega16 單片機的每個端口都有三個 I/O 寄存 器地址:數(shù)據(jù)寄存器 PORTx(x=ABCD,下同)、方向寄存器 DDRx 和輸入引腳 PINx。 3.2.2
12、3.2.2 定時定時/ /計數(shù)器計數(shù)器 ATmega16 單片機有三個定時/計數(shù)器:T/C0,T/C1,T/C2。其中 T/C0,T/C2 是兩個八位的定時/計數(shù)器,而 T/C1 是 16 位的定時/計數(shù)器。 T/Cx(0,1,2)是一個通用的帶有輸出比較匹配和 PWM 波形發(fā)生器的單通道 8 位定時/計數(shù)器模塊。T/Cx 可以選擇通過預分頻器由系統(tǒng)時鐘驅(qū)動,或通過 T0 引腳的外部時鐘驅(qū)動,時鐘邏輯模塊控制使用哪個時鐘源及哪個邊沿來進行加或 者減計數(shù)。 T/Cx(0,1,2)的時鐘分頻器對系統(tǒng)分頻后作為 T/Cx(0,1,2)的驅(qū)動時 鐘。T/Cx(0,1,2)的時鐘可以是系統(tǒng)時鐘或者系統(tǒng)時
13、鐘的 8 分頻、64 分頻、 256 分頻及 1024 分頻,通過控制寄存器 TCCRx(0,1,2)。 T/Cx 雙緩沖結構的八位輸出比較寄存器 OCRx(0,1,2)一直與 T/Cx(0,1,2)的計數(shù)值 TCNTx(0,1,2)進行比較。一旦 TCNTx(0,1,2)等于 OCRx(0,1,2),比較器就給出匹配信號。有 4 種工作模式:普通模式,CTC 模式, 快速 PWM 模式,相位修正 PWM 模式。 3.2.33.2.3 中斷系統(tǒng)中斷系統(tǒng) ATmega16 單片機有 21 個中斷源,每一個中斷源都有一個獨立的中斷向量作 為中斷服務程序的入口地址,而且所有的中斷源都有自己的獨立的使
14、能位。如果 全局中斷 I 和相應使能位都置位,則在中斷標志位置位時將執(zhí)行中斷服務程序。 9 一個中斷產(chǎn)生后,全局中斷使能位 I 將被清零,后續(xù)中斷被屏蔽。 中斷相關的寄存器:MCU 控制寄存器 MCUCR,MCU 控制和狀態(tài)寄存器 MCUCSR,通用中斷控制寄存器 GICR,通用中斷狀態(tài)寄存器 GIFR. 3.2.43.2.4 振蕩器振蕩器 XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 振蕩器特性:XTAL1 和 XTAL2 分別為反向放大器的輸入和輸出。該反向放大 器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū) 動器件
15、,XTAL2 應不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因 此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。 10 3.33.3 時鐘模塊設計時鐘模塊設計 實時時間計算模塊 方案(1):AVR 單片機內(nèi)部帶有定時/計數(shù)功能,此定時功能是通過對外部 晶振的脈沖進行計數(shù),從而達到計時功能,只要使用 11.0592 的晶振就能實現(xiàn)零 誤差的計時,因此可以利用此功能實現(xiàn)計時,但因為只有單一的計時功能要實現(xiàn) “萬年歷”的功能需要較復雜的程序,而且如果單片機掉電無法繼續(xù)進行計時, 所以使用不便。 方案(2):DS1302 是美國 DALLAS 公司推出的一種高性能、低功耗
16、的實 時時鐘芯片,附加 31 字節(jié)靜態(tài) RAM,采用 SPI 三線接口與 CPU 進行通信,并 可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和 RAM 數(shù)據(jù)。實時時鐘可提供秒、 分、時、日、星期、月和年,一個月小與 31 天時可以自動調(diào)整,且具有閏年補 償功能。工作電壓寬達 2.55.5V。采用雙電源供電(主電源和備用電源) ,可設 置備用電源充電方式,提供了對后備電源進行涓細電流充電的能力。利用單片機 強大的控制功能就可實現(xiàn)實時計時的功能,而且消耗的系統(tǒng)資源少,程序簡單。 綜合上述兩種方案,宜采用方案(2)實現(xiàn)實時計時功能。 3.3.13.3.1 DS1302DS1302 特性介紹特性介紹 DS
17、1302 是美國 DALLAS 公司推出的一種高性能、低功耗的實時時鐘芯片, 附加 31 字節(jié)靜態(tài) RAM,采用 SPI 三線接口與 CPU 進行通信,并可采用突發(fā)方 式一次傳送多個字節(jié)的時鐘信號和 RAM 數(shù)據(jù)。實時時鐘可提供秒、分、時、日、 星期、月和年,一個月小與 31 天時可以自動調(diào)整,且具有閏年補償功能。工作 電壓寬達 2.55.5V。采用雙電源供電(主電源和備用電源) ,可設置備用電源充 電方式,提供了對后備電源進行涓細電流充電的能力。利用單片機強大的控制功 能就可實現(xiàn)實時計時的功能,而且消耗的系統(tǒng)資源少,程序簡單。 11 DS1302 可以對年、月、日、星期、時、分、秒進行計時,
18、且具有閏年補償 等多種功能 DS1302 有 12 個寄存器,其中有 7 個寄存器與日歷、時鐘相關,存 放的數(shù)據(jù)位為 BCD 碼形式;采用單片機計時,一方面需要采用計數(shù)器,占用硬 件資源,另一方面需要設置中斷、查詢等,同樣耗費單片機的資源,而采用時鐘 芯片 DS1302。 3.3.23.3.2 DS1302DS1302 引腳介紹引腳介紹 圖 3-2 8 、Vcc1:備用電池端; 1、Vcc2:5V 電源。當 Vcc2Vcc1+0.2V 時,由 Vcc2 向 DS1302 供電, 當 Vcc2/單片機寄存器的頭文件 #include #include #include /a 為要操作的寄存器,b
19、 為要操作的位數(shù) #define SET_1(a,b) a|=(10; i-) if(_data else DIO_CLE_0; SCLK_SET_1;/時鐘信號 _delay_us(2); SCLK_CLE_0; _data=1;/移位,準備好下次要寫的數(shù)據(jù) 43 /向 DS1302 讀取一個字節(jié) uchar DS1302OreadByte(void) uchar i; uchar d_data=0; CLE_0(DDRD,PD5); for(i=8; i0; i-) d_data=1;/移位,以便下次存放讀出的數(shù)據(jù) if(PIND SCLK_SET_1; _delay_us(2); SCL
20、K_CLE_0; SET_1(DDRD,PD5); return (d_data);/返回讀到的數(shù)據(jù) 44 /*寫 ds1302 寄存器*/ void Write1302(uchar ucAddr,uchar ucDa) RST_CLE_0; SCLK_CLE_0; RST_SET_1; DS1302writeByte(ucAddr);/地址 DS1302writeByte(ucDa);/寫 1byte 數(shù)據(jù) SCLK_SET_1; RST_CLE_0; /*讀 ds1302 的寄存器*/ uchar Read1302(uchar ucAddr) uchar ucData; RST_CLE_0
21、; SCLK_CLE_0; RST_SET_1; 45 DS1302writeByte(ucAddr|0X01);/地址,命令 ucData = DS1302OreadByte(); SCLK_SET_1; RST_CLE_0; return (ucData); void get_time(uchar *time) *(time+5) = Read1302(READ_SECOND); *(time+4) = Read1302(READ_MINUTE); *(time+3) = Read1302(READ_HOUR); *(time+2) = Read1302(READ_DAY); *(time
22、+1) = Read1302(READ_MONTH); *(time+0) = Read1302(READ_YEAR); /*void Initial(void) Write1302(WRITE_PROTECT,0 x00); Write1302(WRITE_SECOND,0 x45); 46 Write1302(WRITE_MINUTE,0 x24); Write1302(WRITE_HOUR,0 x09); Write1302(WRITE_DAY,0 x13); Write1302(WRITE_MONTH,0 x04); Write1302(WRITE_PROTECT,0 x80); vo
23、id adopt_data(uchar n,uchar *show_data) *show_data = n4; *(show_data +1) = n */ void T1_int(void) TCCR1B = 0 x00;/控制寄存器,停止定時 TIMSK |= 0 x04;/中斷屏蔽寄存器,中斷允許 TCNT1 = 0 xcf2c;/100ms 溢出一次 TCCR1B = 0 x02; sei();/使能全局中斷 47 void init_1302(void) Write1302(WRITE_PROTECT,0 x00);/禁止寫保護 Write1302(WRITE_SECOND,tim
24、e4);/秒位初始化 Write1302(WRITE_MINUTE,time3);/分鐘 Write1302(WRITE_HOUR,time2);/小時 Write1302(WRITE_DAY,time1);/日 Write1302(WRITE_MONTH,time0);/月 Write1302(WRITE_PROTECT,0 x80);/允許寫保護 /*按鍵函數(shù)*/ uchar get_key(void) uchar i=0; PORTD |= 0 x0f; DDRD = 0 xf0;/設置為輸出 NOP(); NOP(); if(PIND/消除抖動 switch(PINDbreak;/選擇
25、鍵 case 0 x0d:i = 3;break;/減值鍵 case 0 x0b:i = 2;break;/增值鍵 case 0 x07:i = 1;break;/確定鍵 while(PIND/等待按鍵松開 else i = 0;/沒有按鍵被按下 DDRD = 0 xff;/設置為輸出 return i;/返回按鍵值 /*轉(zhuǎn)換為 lcd 要顯示的數(shù)據(jù)*/ 49 void adopt_data() uchar i,j=0; for (i=0;i4; lcd_showj+1 = timei j += 2; /*轉(zhuǎn)換為 ds1302 的時間*/ void affirm_data(void) ucha
26、r i ,j = 0 ; for (i=0;i0) lcd_shown-; else if(lcd_shown=max) lcd_shown=0; 51 else lcd_shown=max; value=lcd_shown; /*功能顯示函數(shù)*/ void show_function(void) uchar i; uchar function25=0 x43,0 x4c,0 x4f,0 x43,0 x4b, 0 x41,0 x4c,0 x41,0 x52,0 x4d, ; wr_dictate(0 x01); display_lcd(0 x84,0 x7e); for (i=0;i6;i+)
27、 display_lcd(0 x85+i,function0i);/顯示時間 display_lcd(0 xc5+i,function1i); /*設置時間*/ 52 void set_clock(void) uchar cursor = 0;/光標 uchar i,j; wr_dictate(0 x01);/清屏 Write1302(WRITE_PROTECT,0 x00); Write1302(WRITE_SECOND,time4|0 x80);/暫時停止時鐘的 運行 Write1302(WRITE_PROTECT,0 x80); display_lcd(0 x82,0 x00);/顯示年
28、 display_lcd(0 x85,0 x01);/月 display_lcd(0 x88,0 x02);/日 display_lcd(0 xc2,0 x03);/時 display_lcd(0 xc5,0 x03);/分 display_lcd(0 xc8,0 x03);/秒 for (i=0,j=0;i10;i+=2) display_lcd(0 x80+j,numberlcd_showi); display_lcd(0 x80+j+1,numberlcd_showi+1); 53 j = j+3; wr_dictate(0 x02); wr_dictate(0 x0e); j = 0;
29、 while(1) NOP(); switch(get_key() case 1:/確認 cursor+; j+; if (cursor%2=0) j+; wr_dictate(0 x14); wr_dictate(0 x14); 54 else wr_dictate(0 x14); if (cursor=10) j = 0; cursor = 0; wr_dictate(0 x02);/光標歸位 place = 0 x80+j; break; case 2:/加 switch(cursor) /*一下的 case 成功選擇項為光標對應的調(diào) 55 整位數(shù)*/ case 0:add_d(curs
30、or,1);break; case 1: if(lcd_show0=1) add_d(cursor,2); else add_d(cursor,9); break; case 2:add_d(cursor,3);break; case 3: if(lcd_show2=3) add_d(cursor,0); else add_d(cursor,9); break; 56 case 4:add_d(cursor,2);break; case 5: if(lcd_show4=2) add_d(cursor,3); else add_d(cursor,9); break; case 6:add_d(c
31、ursor,5);break; case 7:add_d(cursor,9);break; case 8:add_d(cursor,5);break; case 9:add_d(cursor,9);break; display_lcd(place,numbervalue);/顯示在 液晶屏的相應的位置 wr_dictate(0 x10); break; 57 case 3:/減 switch(cursor) /*一下的 case 成功選擇項為光標對應的調(diào) 整位數(shù)*/ case 0:dec_d(cursor,1);break; case 1: if(lcd_show0=1) dec_d(curs
32、or,2); else dec_d(cursor,9); break; case 2:dec_d(cursor,3);break; case 3: if(lcd_show2=3) 58 dec_d(cursor,0); else dec_d(cursor,9); break; case 4:add_d(cursor,2);break; case 5: if(lcd_show4=2) dec_d(cursor,3); else dec_d(cursor,9); break; case 6:dec_d(cursor,5);break; case 7:dec_d(cursor,9);break; c
33、ase 8:dec_d(cursor,5);break; case 9:dec_d(cursor,9);break; 59 display_lcd(place,numbervalue);/顯示在 液晶屏的相應的位置 wr_dictate(0 x10); break; case 4:/退格 affirm_data(); init_1302(); T1_OPEN; goto OUT; default: break; OUT:NOP(); /*補充顯示*/ void allowance(void) 60 uchar i,j; display_lcd(0 x82,0 x00);/顯示月 display
34、_lcd(0 x85,0 x01);/日 display_lcd(0 x88,0 x02);/時 display_lcd(0 x8b,0 x03);/分 get_time(time); adopt_data(); for (i=0,j=0;i10;i+=2) display_lcd(0 x80+j,numberlcd_showi); display_lcd(0 x80+j+1,numberlcd_showi+1); j = j+3; int main(void) uchar chinese58 = 61 0 x08,0 x0f,0 x12,0 x0f,0 x0a,0 x1f,0 x02,0 x
35、02, 0 x0f,0 x09,0 x0f,0 x0,0 x0f,0 x09,0 x13,0 x00, 0 x1f,0 x11,0 x11,0 x1f,0 x11,0 x11,0 x11,0 x1f,0 x00, 0 x01,0 x1d,0 x17,0 x1d,0 x17,0 x1d,0 x03,0 x01, 0 x04,0 x0a,0 x11,0 x0e,0 x02,0 x0a,0 x16,0 x00,; uchar i,j; uchar key_Enter = 0;/確認鍵被按下的次數(shù) /控制線 DDRC = 0 xff;/方向寄存器 PORTC = 0 xff;/數(shù)據(jù)寄存器 /數(shù)據(jù)端 D
36、DRB = 0 xff;/端口 B 設置為輸出 PORTB = 0 xff; DDRD = 0 xff;/按鍵設為輸入 PORTD = 0 xff; 62 init_1302(); init_lcd(); T1_int(); wr_dictate(0 x40); for (j=0;j5;j+) for (i=0;i8;i+) wr_data(chineseji);/利用循環(huán)語句把點陣字 符寫進 CGRAM 中 allowance();/補充顯示 while(1) NOP(); i=get_key(); if (i=1)/所有的功能以確認鍵按下才開始操作 63 while (1) NOP();
37、switch(i) case 1:/確認鍵 T1_CLOSE;/確認鍵按下,停止顯示數(shù)字 key_Enter+; switch(key_Enter) case 1: show_function();/顯示功能 break; case 2: set_clock();/設置時間 64 goto OUT; break; case 2:/加值鍵 display_lcd(0 x84,0 x20);/清除上行的 箭頭 display_lcd(0 xc4,0 x7e);/顯示一個箭 頭 break; case 3:/減值鍵 display_lcd(0 xc4,0 x20);/消除下行的 箭頭 display
38、_lcd(0 x84,0 x7e);/顯示一個箭 頭 break; 65 case 4:/確定鍵 OUT: wr_dictate(0 x01); key_Enter =0; allowance(); wr_dictate(0 x0c); T1_OPEN;/繼續(xù)顯示 break; default:break; i = get_key(); if(key_Enter=0)/操作完成,退出 break; 66 return 0; /*利用中斷程序來訪問 ds1302*/ SIGNAL(TIMER1_OVF_vect)/T1 中斷程序,執(zhí)行中斷程序時將關 閉全局中斷使能位,不能響應其他中斷 uchar
39、 i,j; TCNT1 = 0 xcf2c;/16 位計數(shù)寄存器 T1_INIT_CLOSE; count-; if (count=0) count=10; T1_CLOSE; get_time(time); adopt_data();/轉(zhuǎn)化為 lcd 顯示的數(shù)據(jù) for (i=0,j=0;i10;i +=2) display_lcd(0 x80+j,numberlcd_showi); 67 display_lcd(0 x80+j+1,numberlcd_showi+1); T1_INIT_OPEN;/再次開定時中斷 68 附錄附錄 4 4 參考文獻參考文獻 1 沈文,Eagle lee,詹衛(wèi)
40、前. AVR 單片機 C 語言開發(fā)入門指 導M.北京:清華大學出版社, 2003. 2 Richard Barnett 等.嵌入式 C 編程與 Atmel AVRM.北京: 清華大學出版社,2003. 3 Ying HuangSanthosh KumaranJen-Yao Chung.A model- driven framework for enterprise service managementJ.IseB,2005,3:201-217 4 耿德根等.AVR 高速嵌入式單片機原理與應用M.北京: 航空航天大學出版社,2001. 5 Mohamadi, T. Real Time Opera
41、ting System for AVR microcontrollers. Design & Test Symposium (EWDTS),2011 9th East- West,9-12 Sept. 2011:376-380 6金春林等.AVR 系列單片機 C 語言編程與應用實例M.北 京:清華大學出版社,2003. 7 張軍,宋濤.AVR 單片機 C 語言程序設計實例精粹M.北 京:電子工業(yè)出版社,2009 8 Von Dhananjay V. Gadre .Programming And Customizing the AVR MicrocontrollerM. McGraw-Hill Companies,2008 9 丁化成等.AVR 單片機應用設計M.北京:航空航天大學出 版社,2002. 10 丁正林等.AVR 單片機原理及應用M.北京:國防工業(yè)出 版社,2009.
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術比武題庫含解析
- 1 礦山應急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復習題含答案
- 1 各種煤礦安全考試試題含答案