基于51單片機(jī)設(shè)計(jì)的多功能數(shù)字時(shí)鐘word格式_第1頁
基于51單片機(jī)設(shè)計(jì)的多功能數(shù)字時(shí)鐘word格式_第2頁
基于51單片機(jī)設(shè)計(jì)的多功能數(shù)字時(shí)鐘word格式_第3頁
基于51單片機(jī)設(shè)計(jì)的多功能數(shù)字時(shí)鐘word格式_第4頁
基于51單片機(jī)設(shè)計(jì)的多功能數(shù)字時(shí)鐘word格式_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、天津職業(yè)技術(shù)師范大學(xué)tianjin university of technology and education課 程 設(shè) 計(jì)專業(yè)班級(jí):應(yīng)電0811學(xué)生姓名:指導(dǎo)教師:系 別:電子工程學(xué)院目 錄題目1多功能數(shù)字鐘11系統(tǒng)設(shè)計(jì)11.1設(shè)計(jì)要求11.1.1主要性能指標(biāo)11.1.2創(chuàng)意部分11.2總體設(shè)計(jì)方案11.2.1概述及設(shè)計(jì)思路11.2.2方案論證22系統(tǒng)組成與工作原理32.1系統(tǒng)框圖及工作原理32.2單元電路設(shè)計(jì)42.2.1mc-51單片機(jī)42.2.2復(fù)位電路52.2.3時(shí)鐘電路62.2.4顯示電路62.2.5按鍵電路82.2.6溫度采集部分93軟件設(shè)計(jì)103.1程序流程圖103.2系統(tǒng)程序

2、104實(shí)驗(yàn)與調(diào)試164.1硬件測試164.2軟件測試174.3實(shí)物調(diào)試185附錄a 元件清單206附錄b 參考文獻(xiàn)207附錄c 電路原理圖21天津職業(yè)技術(shù)師范大學(xué)課程設(shè)計(jì)題目多功能數(shù)字鐘1 系統(tǒng)設(shè)計(jì)1.1 設(shè)計(jì)要求設(shè)計(jì)制作一個(gè)24小時(shí)制多功能數(shù)字鐘。1.1.1 主要性能指標(biāo)1、數(shù)字顯示年、月、周、日、時(shí)、分、秒。2、溫度顯示,精確到小數(shù)點(diǎn)后1位。3、時(shí)鐘誤差5s/24h。溫度誤差不超5。1.1.2 創(chuàng)意部分要求準(zhǔn)確的進(jìn)行年、月、周、日、時(shí)、分、秒的轉(zhuǎn)換,切換兩種顯示模式。1.2 總體設(shè)計(jì)方案1.2.1 概述及設(shè)計(jì)思路該設(shè)計(jì)方案是以mc51單片機(jī)為核心,采用lcd液晶屏幕顯示系統(tǒng),溫度采集模塊、

3、日期提醒、鍵盤時(shí)間調(diào)整預(yù)設(shè)置等模塊,所構(gòu)建的數(shù)字時(shí)鐘系統(tǒng),能動(dòng)態(tài)顯示實(shí)時(shí)時(shí)鐘的時(shí)、分、秒,數(shù)據(jù)顯示(誤差限制在30每天),溫度調(diào)節(jié)模塊進(jìn)行了重點(diǎn)設(shè)計(jì) 實(shí)現(xiàn)sb0、sb1、sb2、sb3、sb4五個(gè)鍵實(shí)現(xiàn)時(shí)鐘正常顯示,調(diào)時(shí)。本系統(tǒng)設(shè)計(jì)大部分功能有軟件來實(shí)現(xiàn),使電路簡單明了,系統(tǒng)穩(wěn)定性也得大大提高。1.2.2 方案論證(1)時(shí)鐘模塊【方案一】采用單片機(jī)內(nèi)置定時(shí)/計(jì)數(shù)器。它的處理過程主要是先設(shè)定單片機(jī)內(nèi)部定時(shí)/計(jì)數(shù)器的工作方式,對機(jī)器周期計(jì)數(shù)確定基準(zhǔn)時(shí)間,然后用另外一個(gè)定時(shí)器軟件計(jì)數(shù)的方法對基準(zhǔn)時(shí)間形成秒,秒計(jì)60次形成分,分計(jì)60次形成小時(shí)。依此類推,獲取日期也是采用相同的方法。該方案在具體實(shí)現(xiàn)過

4、程中,計(jì)時(shí)存在較大的誤差。如果晶振受到其他外界信號(hào)干擾,或者基準(zhǔn)時(shí)間計(jì)算不準(zhǔn)確,都會(huì)導(dǎo)致時(shí)間顯示錯(cuò)誤?!痉桨付坎捎?55多諧振蕩器。由555定時(shí)器組成一個(gè)多諧振蕩器,產(chǎn)生周期為100hz的脈沖,然后經(jīng)過兩個(gè)74ls160組成的分頻器得到1hz的秒脈沖。多諧振蕩器的穩(wěn)定度及頻率的準(zhǔn)確度決定了數(shù)字鐘計(jì)時(shí)的準(zhǔn)確程度,通常選用成品晶振構(gòu)成振蕩器電路。計(jì)時(shí)精度取決于振蕩器的頻率,振蕩器頻率越高計(jì)時(shí)精度越高?!痉桨溉坎捎胐s1302時(shí)鐘芯片。ds1302是一種高性能、超低功耗的實(shí)時(shí)時(shí)鐘芯片,附加31字節(jié)靜態(tài)ram,可以通過串行接口與單片機(jī)進(jìn)行通信。實(shí)時(shí)時(shí)鐘提供秒、分、時(shí)、日、星期、月、年的信息,每個(gè)月

5、的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整,時(shí)鐘操作可通過am/pm標(biāo)志位決定采用24或12小時(shí)時(shí)間格式。芯片內(nèi)部集成備用電源,當(dāng)外圍電路電路有電源供應(yīng)的時(shí)候,備用電源充電儲(chǔ)能。當(dāng)外圍電路掉電時(shí),ds1302芯片工作在休眠狀態(tài),以備用電源供電。當(dāng)外圍電路再次供電,即可喚醒休眠進(jìn)入正常工作狀態(tài),顯示時(shí)間無任何異常。該系統(tǒng)設(shè)計(jì)中,采用方案三。(2)溫度傳感器【方案一】選用cmos數(shù)字式溫度傳感器。ds1612是美國達(dá)拉斯半導(dǎo)體公司生產(chǎn)的cmos數(shù)字式溫度傳感器。內(nèi)含兩個(gè)不揮發(fā)性存儲(chǔ)器,可以在存儲(chǔ)器中任意的設(shè)定上限和下限溫度值進(jìn)行恒溫器的溫度控制,由于這些存儲(chǔ)器具有不揮發(fā)性,因此一次定入后,即使不用cpu也仍然可

6、以獨(dú)立使用。ds1612可測量的溫度范圍為-55+125,在0+70范圍內(nèi),測量精度為0.5。ds1621同外部電路的控制信號(hào)和數(shù)據(jù)的通信是通過雙向總線來實(shí)現(xiàn)的。通過設(shè)定寄存器來設(shè)置工作方式,并對工作狀態(tài)進(jìn)行監(jiān)控?!痉桨付窟x用ds18b20溫度傳感器。ds1820 是一種三腳塑封芯片,1 腳接地,3 腳為vcc(當(dāng)用外部電源供電時(shí)接+5v;當(dāng)用總線供電時(shí)接地),2 腳為數(shù)據(jù)總線。ds18b20采用單總線數(shù)據(jù)通信,當(dāng)檢測溫度范圍為-65+125,精度可達(dá)0.5。內(nèi)置eeprom,可存放長期需要保存的數(shù)據(jù)。全數(shù)字溫度轉(zhuǎn)換及輸出,多樣封裝形式,適用多種不同的硬件系統(tǒng)。該系統(tǒng)設(shè)計(jì)中,采用方案二。(3

7、)數(shù)據(jù)顯示【方案一】采用led數(shù)碼管顯示數(shù)據(jù)。led數(shù)碼管是由若干個(gè)發(fā)光二極管組成的顯示字段的顯示器件,當(dāng)數(shù)碼管中的某個(gè)發(fā)光二極管導(dǎo)通的時(shí)候,相應(yīng)的一個(gè)字段便發(fā)光,不導(dǎo)通則不發(fā)光。一般來說,led數(shù)碼管的控制可分為段選控制和位選控制。段選是led所顯示的字段,如:a,b,c,d,e,f,g,dp,當(dāng)a,b,c同時(shí)點(diǎn)亮?xí)r顯示數(shù)字7;當(dāng)a,b,d,e,g同時(shí)點(diǎn)亮?xí)r顯示數(shù)字2。位選則是顯示該數(shù)字的位。根據(jù)以上控制原理,可實(shí)現(xiàn)對時(shí)間和溫度的顯示?!痉桨付坎捎胠cd1602液晶屏顯示數(shù)據(jù)。液晶屏的應(yīng)用非常廣泛,比如日常生活中的手表、時(shí)鐘、計(jì)算器、儀器儀表、家電、醫(yī)療器械、車船儀表、聲象設(shè)備文體用品、通

8、訊設(shè)備視頻圖像顯示和大畫面顯示等等。lcd1602 液晶模塊的讀寫操作,屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。 如清除顯示指令 01h,光標(biāo)復(fù)位到地址 00h 位置 ;光標(biāo)復(fù)位指令00h,光標(biāo)返回到地址。lcd1602液晶屏具有字符發(fā)生器,可以直觀的顯示漢字、圖形、字符,并且顯示容量大,進(jìn)行數(shù)據(jù)的實(shí)時(shí)顯示簡單方便。該系統(tǒng)設(shè)計(jì)中,需要顯示的數(shù)據(jù)比較多。如果使用led數(shù)碼管,那么就要用分屏切換來顯示數(shù)據(jù),那樣既不直觀又不方便,并且對單片機(jī)的i/o口開銷比較大。若使用lcd液晶屏顯示數(shù)據(jù),則不需要分屏切換,而且還節(jié)省了i/o資源。因此,采用方案二。2 系統(tǒng)組成與工作原理 2.1 系統(tǒng)框圖及工作原

9、理at89s51鍵盤輸入lcd 液晶顯示ds18b02ds1302圖2-1 系統(tǒng)框架圖工作原理:本設(shè)計(jì)采用stc89c51單片機(jī)作為本次課程設(shè)計(jì)的控制模塊。單片機(jī)可把由ds18b20、ds1302中的數(shù)據(jù)利用軟件來進(jìn)行處理,從而把數(shù)據(jù)傳輸?shù)斤@示模塊,實(shí)現(xiàn)溫度、日歷的顯示。以lcd液晶顯示器為顯示模塊,把單片機(jī)傳來的的數(shù)據(jù)顯示出來,并且顯示多樣化,在顯示電路中,主要靠按鍵來實(shí)現(xiàn)各種顯示要求的選擇與切換。2.2 單元電路設(shè)計(jì)2.2.1 mc-51單片機(jī)89s51各引腳功能介紹:vcc:89s51 電源正端輸入,接+5v。vss:電源地端。xtal1:單芯片系統(tǒng)時(shí)鐘的反相放大器輸入端。xtal2:系

10、統(tǒng)時(shí)鐘的反相放大器輸出端,一般在設(shè)計(jì)上只要在 xtal1 和 xtal2 上接上一只石英振蕩晶體系統(tǒng)就可以動(dòng)作了,此外可以在兩引腳與地之間加入一 20pf 的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機(jī)。ea/vpp:ea為英文external access的縮寫,表示存取外部程序代碼之意,低電平動(dòng)作,也就是說當(dāng)此引腳接低電平后,系統(tǒng)會(huì)取用外部的程序代碼(存于外部eprom中)來執(zhí)行程序。因此在8031及8032中,ea引腳必須接低電平,因?yàn)槠鋬?nèi)部無程序存儲(chǔ)器空間。如果是使用 8752 內(nèi)部程序空間時(shí),此引腳要接成高電平。此外,在將程序代碼燒錄至8751內(nèi)部eprom時(shí),可以利用此引腳來輸入2

11、1v的燒錄高壓(vpp)。ale/prog:端口3的管腳設(shè)置:p3.0:rxd,串行通信輸入。p3.1:txd,串行通信輸出。p3.2:int0,外部中斷0輸入。p3.3:int1,外部中斷1輸入。p3.4:t0,計(jì)時(shí)計(jì)數(shù)器0輸入。p3.5:t1,計(jì)時(shí)計(jì)數(shù)器1輸入。p3.6:wr:外部數(shù)據(jù)存儲(chǔ)器的寫入信號(hào)。p3.7:rd,外部數(shù)據(jù)存儲(chǔ)器的讀取信號(hào)。2.2.2 復(fù)位電路mcs-51單片機(jī)的復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。復(fù)位引腳rst通過一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,在每個(gè)機(jī)器周期的s5p2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信

12、號(hào)。上電復(fù)位:上電復(fù)位電路是種簡單的復(fù)位電路,只要在rst復(fù)位引腳接一個(gè)電容到vcc,接一個(gè)電阻到地就可以了。上電復(fù)位是指在給系統(tǒng)上電時(shí),復(fù)位電路通過電容加到rst復(fù)位引腳一個(gè)短暫的高電平信號(hào),這個(gè)復(fù)位信號(hào)隨著vcc對電容的充電過程而回落,所以rst引腳復(fù)位的高電平維持時(shí)間取決于電容的充電時(shí)間。為了保證系統(tǒng)安全可靠的復(fù)位,rst引腳的高電平信號(hào)必須維持足夠長的時(shí)間。上電自動(dòng)復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。只要vcc的上升時(shí)間不超過1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位。圖2-2-2 復(fù)位電路2.2.3 時(shí)鐘電路時(shí)鐘是單片機(jī)的心臟,單片機(jī)各功能部件的運(yùn)行都是以時(shí)鐘頻率為基準(zhǔn),有條不紊的一拍一拍

13、地工作。因此,時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時(shí)鐘電路有兩種方式:一種是內(nèi)部時(shí)鐘方式,另一種為外部時(shí)鐘方式。本文用的是內(nèi)部時(shí)鐘方式(如圖3-3所示)。mcs-51單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,該高增益反向放大器的輸入端為芯片引腳xtal1,輸出端為引腳xtal2。這兩個(gè)引腳跨接石英晶體振蕩器和微調(diào)電容,就構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。圖2-2-3 時(shí)鐘電路2.2.4 顯示電路采用lcd顯示,lcd顯示具有豐富多樣性,靈活性,電路簡單、易于控制而且功耗小,對于信息量多的系統(tǒng),是比較適合的,lcd液晶顯示模塊采用lcd1602型號(hào),具

14、有很低的功耗,正常工作室電流僅2.0ma/5.0v。通過編程實(shí)現(xiàn)總動(dòng)關(guān)閉屏幕能夠更有效地降低功耗。lcd1602分兩行顯示,每行可現(xiàn)實(shí)多達(dá)16個(gè)字符,其內(nèi)部的字符發(fā)生器已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,通過內(nèi)部指令可實(shí)現(xiàn)對其顯示多樣的控制。lcd1602的特性: +5v電壓,對比度可調(diào) 內(nèi)含復(fù)位電路 提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能 有80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器ddram 內(nèi)建有160個(gè)5x7點(diǎn)陣的字型的字符發(fā)生器cgrom 8個(gè)可由用戶自定義的5x7的字符發(fā)生器cgram圖2-2-4 顯示電路圖2.2.5 按鍵電路按鍵的開關(guān)狀態(tài)通過一定的電路轉(zhuǎn)換為高、低電平

15、狀態(tài)。按鍵閉合過程在相應(yīng)的i/o端口形成一個(gè)負(fù)脈沖。閉合和釋放過程都要經(jīng)過一定的過程才能達(dá)到穩(wěn)定,這一過程是處于高、低電平之間的一種不穩(wěn)定狀態(tài),稱為抖動(dòng)。抖動(dòng)持續(xù)時(shí)間的常長短與開關(guān)的機(jī)械特性有關(guān),一般在5-10ms之間。為了避免cpu多次處理按鍵的一次閉合,應(yīng)采用措施消除抖動(dòng)。本文采用的是獨(dú)立式按鍵,直接用i/o口線構(gòu)成單個(gè)按鍵電路,每個(gè)按鍵占用一條i/o口線,每個(gè)按鍵的工作狀態(tài)不會(huì)產(chǎn)生互相影響。p2.2口表示功能移位鍵,按鍵選擇要調(diào)整的時(shí)十位、時(shí)個(gè)位、分十位或分個(gè)位。 p2.1口表示數(shù)字“+“鍵,按一下則對應(yīng)的數(shù)字加1。p2.0口表示數(shù)字“-”鍵,按一下則對應(yīng)的數(shù)字減1。 圖 2-2-5 按

16、鍵控制模塊 p2.3口表示時(shí)間表的切換,程序默認(rèn)為日常時(shí)間表,當(dāng)按下該開關(guān),使輸入為低電平時(shí),表示當(dāng)前執(zhí)行的是溫度顯示。再按鍵,使鍵抬起,輸入維高電平時(shí),表示當(dāng)前執(zhí)行的是日常作息時(shí)間表。2.2.6 溫度采集部分該系統(tǒng)設(shè)計(jì)采用ds18b20溫度傳感器采集溫度,可以用程序設(shè)定912位的分辨率,精度為0.5c。分辨率設(shè)定,及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在eeprom中,掉電后依然保存。ds18b20的性能是新一代產(chǎn)品中最好的。繼一線總線的早期產(chǎn)品后,ds1820開辟了溫度傳感器技術(shù)的新概念。測量溫度范圍為-55c+125c,現(xiàn)場溫度直接以一線總線的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)

17、場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費(fèi)電子產(chǎn)品等。支持3v5.5v的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。3 軟件設(shè)計(jì)3.1 程序流程圖開始系統(tǒng)初始化調(diào)用ds1302子程序調(diào)用ds18b20子程序調(diào)用lcd液晶子程序數(shù)據(jù)顯示3.2 系統(tǒng)程序#include #include #include#define lcm_rs p1_3 /定義引腳#define lcm_rw p1_4#define lcm_e p1_5#define lcm_data p0#define busy 0x80 /用于檢測lcm狀態(tài)字中的busy標(biāo)識(shí)#define uchar unsigned charucha

18、r id,timecount,dipsmodid;bit lmcinit_or_not; /是否需要清屏標(biāo)志位“1”為需要“0”為不需要bit flag,sflag; /flag是時(shí)鐘冒號(hào)閃爍標(biāo)志,sflag是溫度負(fù)號(hào)顯示標(biāo)志void disp_line1(void); /顯示屏幕第一行 void disp_line2(void); /顯示屏幕第二行void id_case1_key();void disp_mod0(void);/顯示模式0void disp_mod1(void);/顯示模式1/* ds1302 時(shí)間顯示定義部分sbit t_clk=p10;sbit t_io =p11;sb

19、it t_rst=p12;sbit acc0=acc0;sbit acc7=acc7;void set(uchar,uchar); /根據(jù)選擇調(diào)整相應(yīng)項(xiàng)目void rtinputbyte(uchar); /* 輸入 1byte */uchar rtoutputbyte(void); /* 輸出 1byte */void w1302(uchar, uchar); / 向ds1302寫入一個(gè)字節(jié)uchar r1302(uchar); / 從ds1302讀出一個(gè)字節(jié)void set1302(unsigned char * ); / 設(shè)置時(shí)間 bit sec,min,hour,year,mon,day

20、,weekk; /閃爍標(biāo)志位/初始化后設(shè)置為:04年12月2日星期4 0點(diǎn)0分0秒unsigned char inittime7=0x00,0x00,0x00,0x02,0x12,0x04,0x04;/ 秒 分鐘 小時(shí) 日 月 年 星期/* 18b20溫度顯示定義部分sbit dq=p16; /18b20 接p16口typedef unsigned char byte;typedef unsigned int word;read_temperature(char,char);void mychar(void);byte ow_reset(void);byte read_byte(void);v

21、oid write_byte(char val);void adjust_res(char res); /res 分別等于 0x1f, 0x3f, 0x5f 溫度讀數(shù)分辨率分別對應(yīng) / 0.5, 0.25, 0.125 /*溫度控制部分*bit tl_flash_flag; /下限閃爍標(biāo)志bit th_flash_flag; /上限閃爍標(biāo)志bit tl_flag; /下限越限標(biāo)志 bit th_flag; /上限越限標(biāo)志 bit tl_sign,th_sign;/溫度零下標(biāo)志 0:零上,1:零下char tempid;void disp_temp(void); /顯示上下限溫度void set

22、_th_temp(void); /設(shè)置溫度上限void set_tl_temp(void); /設(shè)置溫度下限signed char tl=20,th=45;void compare_temp(signed char l,signed char h); /比較溫度void tl_al(void); /下限越限報(bào)警void th_al(void); /上限越限報(bào)警/* 1602lcd驅(qū)動(dòng) *void writedatalcm(unsigned char wdlcm);void writecommandlcm(unsigned char wclcm,buysc);unsigned char read

23、statuslcm(void);void lcminit(void);void displayonechar(unsigned char x, unsigned char y, unsigned char ddata);void displaylistchar(unsigned char x, unsigned char y, unsigned char code *ddata);void delay5ms(void);void delay400ms(void);unsigned char code week=week.;void main(void) delay400ms(); /啟動(dòng)等待,

24、等lcm講入工作狀態(tài) lcminit(); /lcm初始化 delay5ms(); /延時(shí)片刻(可不要) mychar(); tmod=0x01; th0=(65535-50000)/256; tl0=(65535-50000)%256; ea=1; tr0=1; et0=1; w1302(0x90,0xa5);/打開充電二級(jí)管 一個(gè)二級(jí)管串聯(lián)一個(gè)2k電阻 w1302(0x8e,0x80);/寫保護(hù),禁止寫操作 adjust_res(0x1f); /調(diào)整18b20的分辨率 0x1f:0.5; 0x3f:0.25; 0x5f:0.125 while(1) if (p2_3=0) dipsmodi

25、d+; lmcinit_or_not=1; if(dipsmodid2) dipsmodid=0; while(p2_3=0); switch(dipsmodid) case 0: disp_mod0(); break; case 1: disp_mod1(); break; /選擇顯示模?void dispmod_id_case_key() if (p0_3=0) dipsmodid+; if(dipsmodid1) dipsmodid=0; /顯示模式0void disp_mod0(void) if(lmcinit_or_not=1) lcminit(); lmcinit_or_not=0

26、; if (p2_0|p2_1)=0) /初始化 delay5ms(); if (p2_0|p2_1)=0) set1302(inittime); /mychar(); /顯示自定義字符 if (p2_2=0) / 設(shè)置和選擇項(xiàng)目鍵 delay5ms(); if(p0_6=0)id+;if(id7) id=0; while(p2_2=0); switch(id) case 0: sec=0; disp_line1(); disp_line2(); break; case 1:/年 year=1; disp_line1(); disp_line2(); id_case1_key(); break

27、; case 2:/月 year=0;mon=1; disp_line1(); disp_line2(); id_case1_key(); break; case 3:/日 mon=0;day=1; disp_line1(); disp_line2(); id_case1_key(); break; case 4:/星期 day=0;weekk=1; disp_line1(); disp_line2(); id_case1_key(); break; case 5:/小時(shí) weekk=0;hour=1; disp_line1(); disp_line2(); id_case1_key(); b

28、reak; case 6:/分鐘 hour=0;min=1; disp_line1(); disp_line2(); id_case1_key(); break; case 7:/秒 min=0;sec=1; disp_line1(); disp_line2(); id_case1_key(); break; /顯示模式1void disp_mod1(void) if(lmcinit_or_not=1) lcminit(); lmcinit_or_not=0; read_temperature(1,0); displayonechar(0,1,t); displayonechar(1,1,l)

29、; displayonechar(2,1,:); displayonechar(7,1,t); displayonechar(8,1,h); displayonechar(9,1,:); if(p2_2=0) if(p2_2=0) tempid+; if(tempid2) tempid=0; while(p2_2=0); switch(tempid) case 0:4 實(shí)驗(yàn)與調(diào)試4.1 硬件測試本設(shè)計(jì)的硬件驗(yàn)證電路完全由按照上述理論進(jìn)行焊接。其電路焊接如圖4-1所示。由于電路比較簡單在焊接中遇到的問題不是很多。主要遇到的問題有電路焊接時(shí)地線和電源線的排布,由于電路中的電源線和地線的連接點(diǎn)比較多

30、,在實(shí)際的印刷電路板中,地線一般是環(huán)繞板子而且比較粗的銅線,鑒于這個(gè)思路,我將電源線和地線分別布置在電路板的兩個(gè)邊上,如圖4-2,4-3所示。另外,由于我們這是實(shí)驗(yàn)板,是驗(yàn)證理論用的板子,板子上的芯片經(jīng)常需要拆卸,因此我選擇了用雙列直插底座來安裝芯片,這樣可以保證在拆卸芯片時(shí)不需要再重新焊接芯片,省去了很多不必要的麻煩。硬件焊接好后需要測試是否都連接好了,本設(shè)計(jì)采用的測試方法是用萬用表來測量,用萬用表的兩個(gè)表筆分別接連線的兩端,測試是否電阻為零,如果電阻為零說明連接正確,如果有電阻說明沒有連接好。由于實(shí)驗(yàn)板上的有些焊點(diǎn)離的比較近,在焊接時(shí)可能由于不小心將焊錫滴落在兩個(gè)焊點(diǎn)之間造成短路,短路是對

31、電路板最大的危害之一,因此要細(xì)心的檢查每兩個(gè)相鄰的焊點(diǎn)之間是否有短路發(fā)生。圖4-1 整體電路實(shí)物圖4.2 軟件測試圖4-2編譯程序本設(shè)計(jì)采用偉福編譯軟件來編譯程序,是目前使用廣泛的單片機(jī)開發(fā)軟件,它集成了源程序編輯和程序調(diào)試于一體,支持匯編語言編譯,另外它還支持第三方編譯器,可以編譯c語言和pl/m語言。源程序的編寫:首先從菜單的“文件”中“新建文件”,建立文件;然后為文件選擇好單片機(jī)型號(hào),語言設(shè)置項(xiàng)選擇偉福匯編器;確定后新的文件就算建立了。接下來進(jìn)行編輯、修改等操作。如圖4-2所示。編譯:加載好要編譯的文件,在工具欄的右上方找到編譯按鈕,按下編譯按鈕,開始編譯,編譯后會(huì)提示編譯是否通過,如果

32、編譯通過就可以進(jìn)行程序下載,實(shí)驗(yàn);如果編譯沒有通過說明程序存在錯(cuò)誤需要修改這時(shí)會(huì)在軟件下方提示哪里有錯(cuò)誤,是什么錯(cuò)誤類型,如圖4-3所示。雙擊下邊的錯(cuò)誤提示,軟件會(huì)將光標(biāo)自動(dòng)移到錯(cuò)誤處以便于修改。編譯通過后會(huì)顯示編譯成功提示,如圖4-4所示。編譯:加載好要編譯的文件,在工具欄的右上方找到編譯按鈕,按下編譯按鈕,開始編譯,編譯后會(huì)提示編譯是否通過,如果編譯通過就可以進(jìn)行程序下載,實(shí)驗(yàn);如果編譯沒有通過說明程序存在錯(cuò)誤需要修改這時(shí)會(huì)在軟件下方提示哪里有錯(cuò)誤,是什么錯(cuò)誤類型。雙擊下邊的錯(cuò)誤提示,軟件會(huì)將光標(biāo)自動(dòng)移到錯(cuò)誤處以便于修改。編譯通過后會(huì)顯示編譯成功提示。4.3 實(shí)物調(diào)試由于實(shí)物調(diào)試中遇到的問題可能是軟件的問題也可能是硬件的問題,因

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論