




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選文檔洛 陽 理 工 學 院課 程 設 計 報 告 課程名稱 單片機原理與應用 設計題目 基于STC89C51萬年歷的設計與實現 專 業 物聯網工程 班 級 學 號 姓 名 完成日期 大約在冬季 課 程 設 計 任 務 書設計題目: 基于STC89C51萬年歷的設計與實現設計內容與要求:一、 設計內容利用STC89C51單片機、專用時鐘芯片DS1302、DS18B20數字溫度采集器及1602顯示器件設計一個萬年歷,要求實現:(1)正確顯示年月日,時分秒,星期等信息;(2)顯示環境溫度;(3)具有鬧鐘功能,可以整點報時;(4)能夠通過按鍵調整時間和設置鬧鐘。二、設計要求1.分析系統功能,確定系
2、統設計方案,掌握總體設計的方法與思路。2.系統硬件設計,確定外設與單片機的硬件接口。掌握單片機系統外部接口的擴展設計方法。3.系統軟件設計,結合硬件設計,編寫相應控制程序,并進行Protuse仿真執行。4.熟練掌握程序燒錄及調試過程。5.按照要求撰寫課程設計論文。 指導教師: 2019年 11 月 26 日課 程 設 計 評 語 成績: 指導教師:_ 年 月 日 精選文檔目錄摘 要2一、設計目標與內容31.1設計目標31.2 設計內容31.3設計要求31.4 本章小結3二、系統設計32.1 電路設計框圖32.2 系統硬件概述42.3 主要單元電路的設計42.3.1 時鐘電路模塊的設計42.3.
3、2溫度傳感器電路設計62.3.3顯示模塊的設計82.4本章小結8三、系統的軟件設計93.1程序流程圖93.1.1 系統總流程圖93.1.2 溫度程序流程圖93.1.3 DS1302時鐘程序流程圖103.1.4 LCD顯示程序流程圖113.2程序的設計113.2.1 DS18B20測溫程序113.2.2 DS1302讀寫程序133.2.3液晶顯示程序143.3本章小結15四、仿真與調試154.1 Keil軟件調試流程154.2 Proteus軟件運行流程174.3本章小結18總結18基于STC89C51萬年歷的設計與實現摘 要古人依靠日冕、漏刻記錄時間,而隨著科技的發展,電子萬年歷已經成為日漸流
4、行的日常計時工具。本文研究的萬年歷系統擬用STC89C52單片機控制,以DS1302時鐘芯片計時、DS18B20采集溫度、1602液晶屏顯示。系統主要由溫度傳感器電路,單片機控制電路,顯示電路以及校正電路四個模塊組成。本文闡述了系統的硬件工作原理,所應用的各個接口模塊的功能以及其工作過程,論證了設計方案理論的可行性。系統程序采用C語言編寫,經Keil軟件進行調試后在Proteus軟件中進行仿真,可以顯示年、月、日、星期、時、分、秒和溫度并具有校準功能和與即時時間同步的功能。實驗結果表明此萬年歷實現后具有讀取方便、顯示直觀、功能多樣、電路簡潔等諸多優點,符合電子儀器儀表的發展趨勢,具有廣闊的市場
5、前景。關鍵詞:萬年歷 單片機 仿真 一、設計目標與內容1.1設計目標 制作出可以檢測溫度并報警的的電子萬年歷。1.2 設計內容用keilC51編譯程序。用proteus仿真電路圖。將電路圖使用萬用板或其他電路板焊接實物圖。1.3設計要求具備在液晶上顯示年、月、日、星期、時、分、秒的功能。具備年、月、日、星期、時、分、秒校準功能。具有與即時時間同步的功能。1.4 本章小結通過設計程序,制作仿真,焊接實物三個步驟,以小組合作的方式來設計滿足設計要求的萬年歷并簡單描述可以實現的功能,制作結束后,進行課程設計答辯并編寫一份課程設計報告。二、系統設計122.1 電路設計框圖根據上章確定的方案給出了系統整
6、體的設計框圖:圖1.1系統結構框圖為使時鐘走時與標準時間一致,校時電路是必不可少的,鍵盤模塊用來校正液晶上顯示的時間;溫度傳感器則用來檢測當前的環境溫度;STC89C52單片機通過輸出各種電脈沖信號來驅動控制各部分正常工作;而系統的時間、溫度等數據則最終通過液晶模塊顯示出來。2.2 系統硬件概述本電路是以STC89C52單片機為控制核心,該芯片具有在線編程功能,功耗低,能在3.3V的超低壓下工作;時鐘芯片采用DS1302,它是一款高性能、低功耗、自帶RAM的實時時鐘芯片,具有使用壽命長,精度高和功耗低等特點,同時具有掉電自動保存功能,可以對年、月、日、星期、時、分、秒進行計時,具有閏年補償功能
7、,其工作電壓為2.5V5.5V;溫度檢測模塊由DS18B20構成,它采用獨特的單線接口僅需一個端口引腳進行通訊, 具有測量精度高、測量范圍廣等優點,其測溫范圍在-55+125,工作電壓為3v5.5v;顯示部份使用1602液晶顯示屏來實現,該顯示屏具有低功耗、壽命長、可靠性高的特點,其工作電壓為5v。2.3 主要單元電路的設計2.3.1 時鐘電路模塊的設計DS1302是DALLAS公司推出的涓流充電時鐘芯片,內含有一個實時時鐘/日歷和31字節靜態RAM,通過簡單的串行接口與單片機進行通信。圖4.5所示為DS1302的引腳排列,其中VCC1為后備電源,VCC2為主電源。DS1302由VCC1或VC
8、C2兩者中的較大者供電。所以在主電源關閉的情況下,也能保持時鐘的連續運行。X1和X2是振蕩源,外接32.768KHz晶振用來為芯片提供計時脈沖。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數據傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節或多字節數據的傳送手段。當RST為高電平時,所有的數據傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數據傳送,I/O引腳變為高阻態。上電行動時,在VCC大于等于2.5V之前,RST必須保持低電平。在SCLK為低電平時,才能將RST置為
9、高電平,I/O為串行數據輸入端(雙向)。SCLK始終是輸入端。如圖2.1圖2.1 DS1302的硬件接線圖時鐘芯片DS1302的工作原理:(1) DS1302的控制字節DS1302控制字節的高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入DS1302中,位6如果0,則表示存取日歷時鐘數據,為1表示存取RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節總是從最低位開始輸出(2) 數據輸入輸出(I/O)在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數據被寫入DS1302,數據輸入從低位即位0開始。同樣,在緊跟8位的控制指令
10、字后的下一個SCLK脈沖的下降沿讀出DS1302的數據,讀出數據時從低位0位到高位7。(3) DS1302的寄存器DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數據位為BCD碼形式。“CH”是時鐘暫停標志位,當該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態;當該位為0時,時鐘開始運行。“WP”是寫保護位,在任何的對時鐘和RAM的寫操作之前,“WP”必須為0。當“WP”為1時,寫保護位防止對任一寄存器的寫操作。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發寄存器及與RAM相關的寄存器等。時鐘突發寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內
11、容。DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態為一個8位的字節,其命令控制字為C0HFDH,其中奇數為讀操作,偶數為寫操作;另一類為突發方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節,命令控制字為FEH(寫)、FFH(讀)。2.3.2溫度傳感器電路設計數字溫度傳感器DS18B20是由Dalles半導體公司生產的,它具有耐磨耐碰,體積小,使用方便,封裝形式多樣(如圖4.6),適用于各種狹小空間設備數字測溫和控制領域。如圖2.2圖2.2 DS18B20的兩種封裝1、DS18B20的主要特性 (1)適應電壓范圍更寬,電壓范圍:3.05.
12、5V,在寄生電源方式下可由數 據線供電。 (2)獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。 (3)DS18B20支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,實現組網多點測溫。 (4)DS18B20在使用中不需要任何外圍元件,全部 傳感元件及轉換電路集成在形如一只三極管的集成電路內。 (5)溫范圍55125,在-10+85時精度為±0.5。 (6)可編程 的分辨率為912位,對應的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現高精度測溫。 (7)在9位分辨率時最多在 93.75ms內
13、把溫度轉換為數字,12位分辨率時最多在750ms內把溫度值轉換為數字,速度更快。 (8)測量結果直接輸出數字溫度信號,以"一 線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。 (9)負壓特性:電源極性接反時,芯片不會因發熱而燒毀, 但不能正常工作。2、DS18B20的內部結構DS18B20內部結構主要由四部分組成:64位光刻ROM 、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器(如圖2.3)。圖2.3 DS18B20的內部結構組成DS18B20的供電方式有兩種:寄生電源供電方式和外部電源供電方式。本設計采用外部電源供電方式(如圖2.4
14、),DS18B20工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證轉換精度。外部電源供電方式是DS18B20最佳的工作方式,工作穩定可靠,抗干擾能力強,而且電路也比較簡單,可以開發出穩定可靠的多點溫度監控系統。 圖2.4 DS18B20引腳接線引腳說明:GND為接地引腳;DQ為數據輸入輸出腳。用于單線操作,漏極開路;VCC接電源正;2.3.3顯示模塊的設計本設計中由于要對時間、溫度進行顯示,所以選擇液晶顯示屏1602模塊作為輸出。1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線。它可以顯示兩行,每行16個字符,采用單
15、+5V電源供電,外圍電路配置簡單,價格便宜,具有很高的性價比。1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。將L1602的RS端和P2.0,R/W端和P2.1, E 端和P2.2相連,當RS=0時,對LCD1602寫入指令;當RS=1時,對LCD1602寫入數據。當R/W端接高電平時芯片處于讀數據狀態,反之處于寫數據狀態,E
16、端為使能信號端。當R/W為高電平,E端也為高電平,RS為低電平時,液晶顯示屏顯示需要顯示的示數。2.4本章小結本章主要介紹了系統硬件設計,其中對時鐘芯片DS1302、1602液晶顯示屏、DS18B20溫度傳感器和STC89C52最小系統的設計做了詳細闡述。此外還介紹了各模塊和單片機的連接方法、其特性及電路原理,最后確定系統的整體硬件設計方案。三、系統的軟件設計3.1程序流程圖3.1.1 系統總流程圖系統總流程圖如圖3.1所示。流程圖分析:首先系統初始化,系統開始運行,當有設置鍵按下時進入修改時間模式,無按鍵按下時讀取時間、溫度等數據送入液晶屏顯示;在修改時間模式下設置時間完成后再送數據到液晶屏
17、顯示。圖3.1系統總流程圖3.1.2 溫度程序流程圖溫度讀取流程圖如圖3.2所示。流程圖分析:開始進入初始化DS18B20,就是通過主機拉低單線產生復位脈沖然后釋放該線,如果有應答脈沖,即發起ROM命令當成功的執行操作命令后,就使用Convert T命令即開始溫度轉換,當轉換完后,又初始化DS18B20是否有應答脈沖,若有,就發起Read Scratchpad(讀取暫存器和CRC字節)命令,既同時讀出第1,2個字節,即為溫度的數據。圖3.2 溫度顯示流程圖3.1.3 DS1302時鐘程序流程圖時鐘流程圖如圖5.3所示。流程圖分析:DS1302開始計時時,首先進行初始化,當有中斷信號時,讀取時鐘
18、芯片的數據送入液晶屏顯示。這時若有設置鍵按下時,進行時間修改,完成后將數據送入時鐘芯片;若沒有按鍵按下,則直接存入EPROM,送入液晶屏顯示。圖3.3 時鐘流程圖3.1.4 LCD顯示程序流程圖顯示程序流程圖如圖5.4。流程圖分析:首先對1602顯示屏進行初始化(初始化大約持續10ms左右),然后檢查忙信號,若BF=0,則獲得顯示RAM的地址,寫入相應的數據顯示;若BF=1,則代表模塊正在進行內部操作,不接受任何外部指令和數據,直到BF=0為止。圖3.4 LCD顯示程序流程圖3.2程序的設計3.2.1 DS18B20測溫程序DS18B20是一種單總線數字式溫度傳感器,它與單片機之間采用的是串行
19、數據傳送,所以在對DS18B20進行讀寫操作時必須按照它的時序進行。一般訪問DS18B20時按如下步驟進行:初始化;ROM操作命令;存儲器操作命令;執行/數據。部分源程序如下:ReadOneChar(void) unsigned char i=0; unsigned char dat=0; for (i=8;i>0;i-) DQ=1; DS18_delay(1); DQ=0; dat>>=1; /復合賦值運算,等效dat=dat>>1 DQ=1; if(DQ) dat|=0x80; DS18_delay(4); return(dat);WriteOneChar(u
20、nsigned char dat) /有參函數,功能是"寫",而寫的內容就是括號內的參數 unsigned char i=0; for(i=8;i>0;i-) DQ=0; DQ=dat&0x01;DS18_delay(5);DQ=1;dat>>=1; /復合賦值運算,等效dat=dat>>1(dat=dat右移一位后的值)DS18_delay(4);unsigned int ReadTemperature(void) Init_DS18B20(); /初始化,調用初始化函數WriteOneChar(0xcc); /跳過讀序列號的操作,調
21、用寫函數,寫0xcc指令碼WriteOneChar(0x44); /啟動溫度轉換,調用寫函數,寫0x44指令碼DS18_delay(125); /轉換需要一點時間,延時Init_DS18B20(); /初始化,調用初始化函數WriteOneChar(0xcc); /跳過讀序列號的操作,調用寫函數,寫0xcc指令碼WriteOneChar(0xbe); /調用寫函數,寫0xbe指令碼,讀溫度寄存器tempL=ReadOneChar(); /讀出溫度的低位LSBtempH=ReadOneChar(); /讀出溫度的高位MSB tempa=(tempH*256)+tempL)*0.0625; /溫度
22、轉換DS18_delay(20);return(tempa); /運算結果返回到函數 :ReadTemperature()3.2.2 DS1302讀寫程序DS1302是SPI總線驅動方式。它不僅要向寄存器寫入控制字,還需要讀取相應寄存器的數據。要想與DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如圖3.5所示。圖3.5 DS1302的控制字控制字總是從最低位開始輸出。在控制字指令輸入后的下一個SCLK時鐘的上升沿時,數據被寫入DS1302,數據輸入從最低位(0位)開始。同樣,在緊跟8位的控制字指令后的下一個SCLK脈沖的下降沿,讀出DS1302的數據,讀出的數據也是從
23、最低位到最高位。數據讀寫時序如圖3.6、3.7所示。圖3.6 單字節讀圖3.7 單字節寫在進行任何數據傳輸時,RST必須被置高電平,每個SCLK為上升沿時數據被輸入,下降沿時數據被輸出。先把RST置低,禁止數據傳輸,SCLK置低,清零時鐘總線,RST再置高,允許數據傳輸。傳送完成后,RST置低,禁止字節的傳送。部分源程序如下:void write_byte(uchar dat) /寫一個字節ACC=dat;RST=1;for(a=8;a>0;a-)IO=ACC0;SCLK=0;SCLK=1;ACC=ACC>>1;uchar read_byte() /讀一個字節RST=1;fo
24、r(a=8;a>0;a-)ACC7=IO;SCLK=1;SCLK=0;ACC=ACC>>1;return (ACC);void write_1302(uchar add,uchar dat) /向1302芯片寫函數,指定寫入地址,數據RST=0;SCLK=0;RST=1;write_byte(add);write_byte(dat);SCLK=1;RST=0;uchar read_1302(uchar add) /從1302讀數據函數,指定讀取數據來源地址uchar temp;RST=0;SCLK=0;RST=1;write_byte(add);temp=read_byte(
25、);SCLK=1;RST=0;return(temp);3.2.3液晶顯示程序1602通過D0D7的8位數據端傳輸數據和指令,其模塊內的控制器有11條控制指令。當液晶顯示屏的接口電路與單片機系統I/O按照并行數據傳輸方式連接完成以后,即可以對STC89C52單片機進行編程。在液晶屏完成顯示之前首先要對液晶進行初始化。源程序如下:lcd_init() /*液晶初始化函數*write_1602com(0x38); /設置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數據write_1602com(0x0c); /開顯示不顯示光標write_1602com(0x06); /整屏不移動,光標自動
26、右移write_1602com(0x01); /清顯示write_1602com(yh+1); /日歷顯示固定符號從第一行第1個位置之后開始顯示for(a=0;a<14;a+)write_1602dat(tab1a); /向液晶屏寫日歷顯示的固定符號部分/delay(3);write_1602com(er+2); /時間顯示固定符號寫入位置,從第2個位置后開始顯示for(a=0;a<8;a+)write_1602dat(tab2a); /寫顯示時間固定符號,兩個冒號/delay(3); 3.3本章小結本章對基于單片機的萬年歷系統軟件模塊進行設計,先對該系統進行了整體流程的設計,給出
27、了設計的流程圖,隨后介紹了各模塊的子程序。對一些模塊常用的函數進行了解釋,這一切都構成了這個系統的軟件基礎。四、仿真與調試4.1 Keil軟件調試流程首先選擇菜單File-New,在源程序編輯器中輸入匯編語言或C語言源程序(或選擇File-Open,直接打開已用其它編輯器編輯好的源程序文檔)并保存,注意保存時必須在文件名后加上擴展名.asm(.a51)或.c。然后選擇菜單Project-New Project,建立新工程并保存(保存時無需加擴展名,也可加上擴展名.uv2),工程保存后會立即彈出一個設備選擇對話框,選擇CPU后點確定返回主界面。這時工程管理窗口的文件頁(Files)會出現“Tar
28、get1”,將其前面+號展開,接著選擇Source Group1,右擊鼠標彈出快捷菜單,選擇“Add File to Group Source Group1”,出現一個對話框,要求尋找并加入源文件(在加入一個源文件后,該對話框不會消失,而是等待繼續加入其它文件)。加入文件后點close返回主界面,展開“Source Group1”前面+號,就會看到所加入的文件,雙擊文件名,即可打開該源程序文件。緊接著對工程進行設置,選擇工程管理窗口的Target1,再選擇Project-Option for Target Target1(或點右鍵彈出快捷菜單再選擇該選項),打開工程屬性設置對話框,共有8個選項
29、卡,主要設置工作包括在Target選項卡中設置晶振頻率、在Debug選項卡中設置實驗仿真板等,如果要寫片,還必須在Output選項卡中選中“Creat Hex Fi”(如圖4.2);其它選項卡內容一般可取默認值。工程設置后按F7鍵(或點擊編譯工具欄上相應圖標)進行編譯/匯編、連接以及產生目標文件。圖4.2 生成HEX文件成功編譯/匯編、連接后,選擇菜單Debug-Start/Stop Debug Session(或按Ctrl+F5鍵)進入程序調試狀態,Keil提供對程序的模擬調試功能,內建一個功能強大的仿真CPU以模擬執行程序。Keil能以單步執行(按F11或選擇Debug-Step)、過程單步執行(按F10或選擇Debug-Step Over)、全速執行等多種運行方式進行程序調試。如果發現程序有錯,可采用在線匯編功能對程序進行在線修改(Debug-Inline Assambly),不必執行先退出調試環
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州科技貿易職業學院《醫學論文寫作》2023-2024學年第二學期期末試卷
- 武漢華夏理工學院《形式語言(2)(設計學)》2023-2024學年第二學期期末試卷
- 2024年度河南省護師類之社區護理主管護師強化訓練試卷A卷附答案
- 長沙電力職業技術學院《文化遺產保護技術》2023-2024學年第二學期期末試卷
- 內蒙古美術職業學院《幼兒舞蹈與創編》2023-2024學年第二學期期末試卷
- 昆明幼兒師范高等專科學校《古生物學與地史學》2023-2024學年第二學期期末試卷
- 杭州師范大學錢江學院《漢字源流》2023-2024學年第二學期期末試卷
- 廣東農工商職業技術學院《土木工程施工技術A》2023-2024學年第二學期期末試卷
- 齊齊哈爾理工職業學院《河流動力學與航道整治》2023-2024學年第二學期期末試卷
- 山西應用科技學院《工程地質與土力學(建工)》2023-2024學年第二學期期末試卷
- 護理查房(宮外孕)課件
- 國開期末考試《基礎會計》機考試題(第3套)
- 外貿形式發票模板
- 壓力管道焊接工藝卡
- 會議服務中心經營管理服務方案
- 糖尿病病人的業務學習課件
- 安裝調試報告
- 河南省南陽市高中畢業生登記表普通高中學生學籍冊
- 雷曼破產前的德國國家發展銀行十分鐘的悲劇
- 國際政治經濟學的主要流派課件
- PE管材采購合同
評論
0/150
提交評論