版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 專(zhuān) 科 畢 業(yè) 設(shè) 計(jì)(論文)</p><p> 題目 基于51單片機(jī)的數(shù)碼日歷鐘的設(shè)計(jì)與制作 </p><p> 院(系部) 電子與信息工程系 </p><p> 專(zhuān)業(yè)名稱(chēng) 電子信息技術(shù) </p><p> 年級(jí)班級(jí) 07高職電信1 </p
2、><p> 學(xué)生姓名 </p><p> 指導(dǎo)教師 </p><p> 二〇一二年四月二十日</p><p><b> 摘 要</b></p><p> 單片機(jī)以其體積小、編程靈活、控制功能強(qiáng)大、價(jià)格低廉等特點(diǎn)被廣泛地應(yīng)用在各種電子電器產(chǎn)品中。單
3、片機(jī)技術(shù)的出現(xiàn)和發(fā)展帶來(lái)了電子技術(shù)和控制領(lǐng)域的一場(chǎng)革命。</p><p> 單片機(jī)課程作為職業(yè)院校電子信息類(lèi)專(zhuān)業(yè)一門(mén)重要的基礎(chǔ)課程,它既是一門(mén)很有實(shí)用價(jià)值、實(shí)踐性很強(qiáng)且很有趣味性的一門(mén)課程,同時(shí)它又是一門(mén)集硬件電路設(shè)計(jì)與軟件編程于一體的學(xué)科,既要求我們有較好的電工電子技術(shù)基礎(chǔ)知識(shí),又要求有一定的邏輯思維和軟件開(kāi)發(fā)(編程)能力。通過(guò)近幾年對(duì)單片機(jī)的學(xué)習(xí),我已掌握單片機(jī)的基本知識(shí),并具備了單片機(jī)應(yīng)用系統(tǒng)的初步開(kāi)發(fā)能
4、力。即將畢業(yè)之際,我運(yùn)用我所掌握的單片機(jī)知識(shí)設(shè)計(jì)和制作了一個(gè)基于51單片機(jī)的數(shù)碼日歷鐘,這既是對(duì)我所學(xué)知識(shí)的總結(jié)與高度概括,同時(shí)也將自己所掌握的知識(shí)與實(shí)際應(yīng)用結(jié)合起來(lái),進(jìn)一步提高工程實(shí)踐能力。</p><p> 數(shù)碼日歷鐘是實(shí)際生活中應(yīng)用較多的一個(gè)電子計(jì)時(shí)裝置,可供人們查詢(xún)?nèi)掌?、星期及掌握時(shí)間。本文首先從數(shù)碼日歷鐘的功能要求入手,對(duì)設(shè)計(jì)任務(wù)進(jìn)行了分析,并將任務(wù)分解為若干個(gè)模塊,提出在設(shè)計(jì)與制作過(guò)程中要用到的相關(guān)
5、知識(shí)點(diǎn),給出了本設(shè)計(jì)的硬件電路及軟件流程,還給出了部分模塊的源程序代碼。本設(shè)計(jì)經(jīng)過(guò)多次調(diào)試運(yùn)行無(wú)誤,最終提交出一個(gè)完整的應(yīng)用系統(tǒng)產(chǎn)品。</p><p> 本次畢業(yè)設(shè)計(jì)的數(shù)碼日歷鐘能在1602液晶屏上顯示出年月日時(shí)分秒以及星期幾,還能顯示當(dāng)前的環(huán)境溫度,并且能通過(guò)按鍵調(diào)整日期和時(shí)間,在調(diào)整日期的同時(shí)通過(guò)相應(yīng)算法自動(dòng)實(shí)現(xiàn)星期幾的調(diào)整,而且無(wú)論是否閏年、任何月份,當(dāng)日期調(diào)整時(shí)都保證不會(huì)出現(xiàn)非法的日期。數(shù)碼日歷鐘是一個(gè)
6、非常實(shí)用的設(shè)計(jì)與制作,成本低廉,如能進(jìn)一步完善,具有一定的推廣使用價(jià)值。</p><p> 本設(shè)計(jì)任務(wù)比較復(fù)雜,要考慮的問(wèn)題很多,C語(yǔ)言的模塊化程序設(shè)計(jì)思想較好地解決了這個(gè)問(wèn)題,故本設(shè)計(jì)任務(wù)采用C語(yǔ)言編程。</p><p> 關(guān)鍵詞:51單片機(jī),C語(yǔ)言,數(shù)碼日歷鐘,畢業(yè)設(shè)計(jì),制作</p><p><b> 目 錄</b></p&
7、gt;<p><b> 摘要Ⅰ</b></p><p><b> 1概述1</b></p><p> 1.1 畢業(yè)設(shè)計(jì)的選題背景及制作意義1</p><p> 1.1.1畢業(yè)設(shè)計(jì)的選題背景1</p><p> 1.1.2畢業(yè)設(shè)計(jì)的制作意義1</p>&
8、lt;p> 1.2 數(shù)碼日歷鐘的功能要求1</p><p> 1.3 本設(shè)計(jì)制作的主要內(nèi)容2</p><p> 2數(shù)碼日歷鐘的設(shè)計(jì)與制作任務(wù)分析3</p><p> 2.1數(shù)碼日歷鐘的設(shè)計(jì)與制作任務(wù)分析與分解3</p><p> 2.2設(shè)計(jì)方案的論證及選擇3</p><p> 3 相關(guān)知識(shí)鏈
9、接6</p><p> 3.1 51單片機(jī)簡(jiǎn)介6</p><p> 3.1.1 51單片機(jī)簡(jiǎn)介6</p><p> 3.1.2 51單片機(jī)引腳功能介紹8</p><p> 3.2由已知日期推算星期幾11</p><p> 3.2.1如何判斷一個(gè)年份是否閏年11</p><p&g
10、t; 3.2.2由已知日期如何推算星期幾11</p><p> 3.3 1602字符液晶的使用13</p><p> 3.3.1 液晶概述13</p><p> 3.3.2 LCM引腳功能介紹14</p><p> 3.3.3 LCD1602字符液晶顯示模塊指令集15</p><p> 3.3.4
11、 LCD1602字符液晶顯示模塊與單片機(jī)的接口17</p><p> 3.3.5 LCD1602字符液晶顯示模塊的基礎(chǔ)函數(shù)17</p><p> 3.4 51單片機(jī)中的中斷與定時(shí)19</p><p> 3.4.1 51單片機(jī)中的中斷19</p><p> 3.4.2 51單片機(jī)中的定時(shí)/計(jì)數(shù)器22</p>&l
12、t;p> 3.5數(shù)字溫度傳感器DS18B20的使用28</p><p> 3.5.1 DS18B20概述28</p><p> 3.5.2 DS18B20的內(nèi)部結(jié)構(gòu)29</p><p> 3.5.3 DS18B20與單片機(jī)的接口電路32</p><p> 3.5.4 DS18B20的操作命令32</p>
13、<p> 3.5.5 DS18B20的時(shí)序33</p><p> 3.6 矩陣式按鍵的檢測(cè)36</p><p> 4系統(tǒng)設(shè)計(jì)與調(diào)試44</p><p> 4.1 硬件系統(tǒng)設(shè)計(jì)與調(diào)試44</p><p> 4.1.1硬件系統(tǒng)設(shè)計(jì)原理圖44</p><p> 4.1.2硬件系統(tǒng)元器件清單
14、44</p><p> 4.1.3硬件系統(tǒng)組裝與調(diào)試45</p><p> 4.2 軟件系統(tǒng)設(shè)計(jì)與調(diào)試45</p><p> 4.2.1軟件系統(tǒng)設(shè)計(jì)45</p><p> 4.2.2軟件系統(tǒng)調(diào)試與仿真47</p><p><b> 5問(wèn)題與展望49</b></p>
15、<p> 5.1本設(shè)計(jì)制作存在的問(wèn)題49</p><p><b> 5.2 展望49</b></p><p><b> 參考文獻(xiàn)50</b></p><p><b> 致 謝51</b></p><p><b> 1、 概述<
16、/b></p><p> 1.1 畢業(yè)設(shè)計(jì)的選題背景及制作意義</p><p> 1.1.1畢業(yè)設(shè)計(jì)的選題背景</p><p> 單片機(jī)以其體積小、編程靈活、控制功能強(qiáng)大、價(jià)格低廉等特點(diǎn)被廣泛地應(yīng)用在各種電子電器產(chǎn)品中。單片機(jī)技術(shù)的出現(xiàn)和發(fā)展帶來(lái)了電子技術(shù)和控制領(lǐng)域的一場(chǎng)革命。</p><p> 單片機(jī)課程作為職業(yè)院校電子信息類(lèi)
17、專(zhuān)業(yè)一門(mén)重要的基礎(chǔ)課程,它既是一門(mén)很有實(shí)用價(jià)值、實(shí)踐性很強(qiáng)且很有趣味性的一門(mén)課程,同時(shí)它又是一門(mén)集硬件電路設(shè)計(jì)與軟件編程于一體的學(xué)科,既要求我們有較好的電工電子技術(shù)基礎(chǔ)知識(shí),又要求有一定的邏輯思維和軟件開(kāi)發(fā)(編程)能力。通過(guò)近幾年對(duì)單片機(jī)的學(xué)習(xí),我已掌握單片機(jī)的基本知識(shí),并具備了單片機(jī)應(yīng)用系統(tǒng)的初步開(kāi)發(fā)能力。即將畢業(yè)之際,為了將自己所掌握的知識(shí)與實(shí)際應(yīng)用結(jié)合起來(lái),進(jìn)一步提高工程實(shí)踐能力,同時(shí)也對(duì)自己所學(xué)知識(shí)作以總結(jié)及高度概括向老師匯報(bào),
18、我決定將我的畢業(yè)設(shè)計(jì)課題選作基于51單片機(jī)的數(shù)碼日歷鐘的設(shè)計(jì)與制作,并以此向老師作畢業(yè)匯報(bào)。</p><p> 1.1.2畢業(yè)設(shè)計(jì)的制作意義</p><p> 數(shù)碼日歷鐘是實(shí)際生活中應(yīng)用較多的一個(gè)電子計(jì)時(shí)產(chǎn)品,廣泛地應(yīng)用在酒店、賓館、車(chē)站、家庭及辦公室中,可供人們查詢(xún)?nèi)掌?、星期,掌握?dāng)前時(shí)間及環(huán)境溫度。</p><p> 在上述背景下,需要我運(yùn)用近幾年在學(xué)校學(xué)
19、到的單片機(jī)知識(shí)及開(kāi)發(fā)技巧設(shè)計(jì)和制作出一個(gè)功能完善的數(shù)碼日歷鐘。通過(guò)這個(gè)設(shè)計(jì)的制作,必將進(jìn)一步提高我的工程實(shí)踐能力和單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)能力,將我所學(xué)到的理論知識(shí)與實(shí)際應(yīng)用結(jié)合起來(lái),做到理論與實(shí)踐相結(jié)合,同時(shí)也能對(duì)我高職階段所學(xué)知識(shí)作以梳理和總結(jié)。這是一個(gè)非常實(shí)用的設(shè)計(jì)與制作,成本低廉,若把此數(shù)碼日歷鐘裝在鏡框或其它工藝品中,則更加實(shí)用。如能進(jìn)一步完善其功能,具有一定的實(shí)際推廣使用價(jià)值。</p><p> 1.2數(shù)
20、碼日歷鐘的功能要求 </p><p> 本設(shè)計(jì)制作出來(lái)的數(shù)碼日歷鐘要求能在1602液晶顯示屏上顯示出年月日及對(duì)應(yīng)的星期幾,當(dāng)前時(shí)間及環(huán)境。而且要求日期和時(shí)間可通過(guò)按鍵調(diào)整,當(dāng)日期調(diào)整時(shí),通過(guò)相應(yīng)算法自動(dòng)實(shí)現(xiàn)星期幾的調(diào)整,無(wú)論是否閏年、任何月份,當(dāng)日期調(diào)整時(shí)都保證不會(huì)出現(xiàn)非法的日期。本設(shè)計(jì)制作出來(lái)的數(shù)碼日歷鐘顯示如圖1-1所示。</p><p> 圖1-1 畢業(yè)設(shè)計(jì)作品——數(shù)碼日歷鐘
21、的顯示效果圖</p><p> 1.3 本設(shè)計(jì)制作的主要內(nèi)容</p><p> 本設(shè)計(jì)制作需要完成的主要內(nèi)容有:</p><p> (1)對(duì)設(shè)計(jì)與制作任務(wù)進(jìn)行分析、分解;</p><p> (2)對(duì)設(shè)計(jì)與制作方案進(jìn)行可行性論證,選擇一種較為現(xiàn)實(shí)可行的方案;</p><p> (3)根據(jù)所選方案列出所需硬件元器
22、件、制作與調(diào)試工具(軟硬件)清單;</p><p> (4)準(zhǔn)備制作與調(diào)試工具(軟硬件),照單購(gòu)買(mǎi)所需元器件并進(jìn)行逐一測(cè)試,保證完好;</p><p> (5)根據(jù)所選方案,畫(huà)出硬件電路原理圖;</p><p> (6)逐一完成每個(gè)軟件模塊的編寫(xiě)與調(diào)試,最終編譯生成目標(biāo)程序;</p><p> (7)整機(jī)聯(lián)調(diào)。在Proteus中進(jìn)行
23、軟件仿真,直至實(shí)現(xiàn)所有預(yù)先設(shè)定的功能要求。</p><p> (8)根據(jù)硬件電路原理圖搭建電路,并進(jìn)行電路焊接;</p><p> (9)對(duì)硬件電路進(jìn)行測(cè)試與調(diào)試,保證無(wú)虛焊、短路等故障,將目標(biāo)程序?qū)懭雴纹瑱C(jī),再次整機(jī)聯(lián)調(diào)(實(shí)物);</p><p> (10)完成畢業(yè)設(shè)計(jì)論文的撰寫(xiě),提交完整的畢業(yè)設(shè)計(jì)作品,由指導(dǎo)老師審閱,完成畢業(yè)設(shè)計(jì)論文答辯。</p&g
24、t;<p> 2、 數(shù)碼日歷鐘的設(shè)計(jì)與制作任務(wù)分析</p><p> 2.1 數(shù)碼日歷鐘的設(shè)計(jì)與制作任務(wù)的分析與分解</p><p> 本設(shè)計(jì)任務(wù)比較復(fù)雜,要考慮的問(wèn)題很多,故需對(duì)設(shè)計(jì)與制作任務(wù)進(jìn)行分析和分解,使分解后的每一個(gè)子任務(wù)都在能夠容易解決的范圍之內(nèi)。為此,通過(guò)對(duì)本設(shè)計(jì)任務(wù)的分析,將其按硬件和軟件兩個(gè)方面各分解為幾個(gè)模塊。它們分別是:</p>&l
25、t;p><b> (1) 硬件</b></p><p> ?、俑鶕?jù)所選方案畫(huà)出硬件電路原理圖;</p><p> ?、诟鶕?jù)所選方案,列出所需硬件元器件、制作與調(diào)試工具清單(軟硬件);</p><p> ?、蹨?zhǔn)備制作與調(diào)試工具(軟硬件);</p><p> ④照單購(gòu)買(mǎi)所需元器件并進(jìn)行逐一測(cè)試,保證完好;</
26、p><p> ⑤根據(jù)硬件電路原理圖搭建電路,并進(jìn)行電路焊接;</p><p> ?、迣?duì)硬件電路進(jìn)行測(cè)試與調(diào)試,保證無(wú)虛焊、短路等故障;</p><p><b> (2) 軟件</b></p><p> ?、?602液晶的顯示,編寫(xiě)1602液晶的基礎(chǔ)顯示函數(shù);</p><p> ?、诟鶕?jù)已知日期推算
27、出相應(yīng)的星期幾;</p><p> ?、圻\(yùn)用單片機(jī)的定時(shí)中斷功能實(shí)現(xiàn)電子鐘功能;</p><p> ?、芫帉?xiě)按鍵掃描程序,能夠識(shí)別按鍵,并通過(guò)相應(yīng)的按鍵調(diào)整年份、月份、日期、時(shí)、分;</p><p> ?、輸?shù)字溫度傳感器18b20的使用;</p><p> ⑥所測(cè)溫度結(jié)果數(shù)據(jù)的處理及顯示。</p><p> 2.2
28、設(shè)計(jì)方案的論證及選擇</p><p><b> (1) 硬件方面:</b></p><p><b> 主控模塊:</b></p><p> 單片機(jī)芯片的選擇:考慮到本程序較為復(fù)雜,目標(biāo)程序可能占用存儲(chǔ)空間較大,故應(yīng)選擇程序存儲(chǔ)器容量稍大一些的單片機(jī)芯片較好,但又要顧及盡量降低成本,程序開(kāi)發(fā)、調(diào)試、載入方便。綜合考慮,
29、決定選用目前占有較大市場(chǎng)份額、技術(shù)成熟、資料豐富的Atmel公司生產(chǎn)的AT89S52單片機(jī)。</p><p> 晶振的選擇:由于本設(shè)計(jì)決定采用單片機(jī)本身自帶的定時(shí)/計(jì)數(shù)器通過(guò)定時(shí)中斷提供秒信號(hào),這樣可以降低硬件成本,不再采用專(zhuān)用的時(shí)鐘芯片,為了便于計(jì)算定時(shí)/計(jì)數(shù)器的初值和定時(shí)時(shí)長(zhǎng),故采用穩(wěn)定性較高的、固有振蕩頻率為12MHz的石英晶體振蕩器。</p><p><b> 顯示模
30、塊:</b></p><p> 顯示模塊既可采用數(shù)碼管顯示,也可采用液晶顯示。數(shù)碼管的優(yōu)點(diǎn)是價(jià)格便宜,顯示亮度高,但它也有不少不足之處:當(dāng)顯示的信息量較大時(shí),所用數(shù)碼管較多,接口電路復(fù)雜,編程麻煩;而且其體積較大,不宜用于便攜式產(chǎn)品,顯示也不夠美觀(guān);當(dāng)其中某一段出現(xiàn)劣化而不能正常顯示時(shí),需整體更換。字符液晶顯示模塊的優(yōu)點(diǎn)是價(jià)格適中,與單片機(jī)的接口電路簡(jiǎn)單,便于編程控制其顯示,體積小、質(zhì)量輕、功耗低(
31、功率為10mW,5V電源供電、工作電流只有2mA)、壽命長(zhǎng)、可靠性高、顯示操作簡(jiǎn)單,顯示美觀(guān),且顯示的信息量大,特別適合用于便攜式電子產(chǎn)品中作顯示器件。故本設(shè)計(jì)中的顯示模塊決定采用1602圖形液晶顯示器。</p><p><b> 溫度測(cè)量模塊:</b></p><p> 溫度測(cè)量模塊當(dāng)然可以采用較為簡(jiǎn)單的熱敏電阻,其阻值會(huì)隨著周?chē)h(huán)境溫度的變化而變化。熱敏電阻的
32、優(yōu)點(diǎn)是電路及其工作原理都較為簡(jiǎn)單,但其測(cè)量結(jié)果為模擬量,要讓單片機(jī)去處理其測(cè)量結(jié)果,需通過(guò)ADC(模數(shù)轉(zhuǎn)換器)電路,這樣又增加了不少成本,且需熟悉ADC與單片機(jī)的接口電路及其編程,這就增加了開(kāi)發(fā)的難度和時(shí)間,比較麻煩。當(dāng)然也可采用模擬溫度傳感器,如LM35,它測(cè)得的結(jié)果同樣是模擬量,也需通過(guò)A/D轉(zhuǎn)換,單片機(jī)才能處理,既提高了開(kāi)發(fā)成本,又增加了開(kāi)發(fā)難度,故本設(shè)計(jì)放棄采用以上這兩種方案,決定采用美國(guó)DALLAS 半導(dǎo)體公司生產(chǎn)的采用“一線(xiàn)
33、式”接口的數(shù)字化溫度傳感器DS18B20。相比熱敏電阻,該傳感器的優(yōu)點(diǎn)是可謂是多多:首先,它的硬件電路非常簡(jiǎn)單,與單片機(jī)的接口也很簡(jiǎn)單,和單片機(jī)之間的數(shù)據(jù)傳輸只用了一條線(xiàn)。測(cè)溫范圍為-55℃~+125℃,固有測(cè)溫分辨率0.5℃。具有耐磨耐碰,體積小,工作電源: 3~5V/DC。非常適合要求。</p><p><b> 按鍵調(diào)整控制模塊:</b></p><p>
34、由于筆者對(duì)矩陣式按矩的檢測(cè)方法已十分熟悉,故本設(shè)計(jì)中的按鍵調(diào)整模塊決定采用12只彈性小按鍵構(gòu)成矩陣式按鍵檢測(cè)方法采用行列反轉(zhuǎn)法。</p><p> 硬件系統(tǒng)的組成框圖如圖2-1所示:</p><p> 圖2-1 數(shù)碼日歷鐘硬件系統(tǒng)組成框圖</p><p><b> (2) 軟件方面:</b></p><p><
35、;b> 編程語(yǔ)言選擇:</b></p><p> 考慮到本設(shè)計(jì)任務(wù)較為復(fù)雜,C語(yǔ)言的模塊化程序設(shè)計(jì)思想能夠較好地解決這個(gè)問(wèn)題,且用C語(yǔ)言編寫(xiě)程序,開(kāi)發(fā)效率高,生成的目標(biāo)代碼質(zhì)量也較高,執(zhí)行效率高,綜上所述,故本設(shè)計(jì)任務(wù)采用C語(yǔ)言編程。</p><p><b> 編譯環(huán)境軟件選擇:</b></p><p> 本設(shè)計(jì)選用目
36、前單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)使用最泛的集成開(kāi)發(fā)編譯軟件——Keil公司的Keil C,它既可用于匯編程言源程序的編輯、編譯,生成目標(biāo)程序,也可用于C語(yǔ)言源程序的編輯、編譯、連接并生成目標(biāo)代碼。</p><p><b> 仿真軟件選擇:</b></p><p> 在焊接硬件電路之前,為避免不必要的麻煩,要對(duì)本設(shè)計(jì)系統(tǒng)進(jìn)行軟件仿真,直到仿真運(yùn)行無(wú)誤后,再焊接元器件,搭建本設(shè)計(jì)
37、硬件電路。本設(shè)計(jì)選用目前單片機(jī)應(yīng)用系統(tǒng)仿真中最受歡迎的一款軟件——英國(guó)Labcenter Electronics公司開(kāi)發(fā)的電子電路設(shè)計(jì)與仿真軟件——Proteus。它包括ISIS\ARES等軟件模塊,ARES模塊主要用來(lái)完成PCB的設(shè)計(jì),而ISIS模塊用來(lái)完成電路原理圖的制圖與仿真。Proteus 的軟件仿真基于VSM技術(shù),它與其他軟件最大的不同也是最大的優(yōu)勢(shì)就在于它能仿真大量的單片機(jī)芯片以及單片機(jī)外圍電路,例如鍵盤(pán)、LED、LCD
38、等等。通過(guò)Proteus軟件的使用,我們能夠輕易地獲得一個(gè)功能齊全、實(shí)用方便的單片機(jī)實(shí)驗(yàn)室。</p><p> Proteus軟件有十多年的歷史,在全球廣泛使用,除了具有和其它EDA工具一樣的原理圖制圖、PCB自動(dòng)或人工布線(xiàn)及電路仿真的功能外,其革命性的功能在于其電路仿真是互動(dòng)的,針對(duì)微處理器的應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程,并實(shí)現(xiàn)軟件源碼級(jí)別的實(shí)時(shí)調(diào)試,如果顯示及輸出,還能看到運(yùn)行后輸入輸出的效
39、果,此外系統(tǒng)還配置有豐富的虛擬儀器,如示波器、邏輯分析儀等。</p><p><b> 3、 相關(guān)知識(shí)鏈接</b></p><p> 3.1 51單片機(jī)簡(jiǎn)介</p><p> 3.1.1 51單片機(jī)簡(jiǎn)介</p><p> 單片機(jī)就是將中央處理器(CPU)、存儲(chǔ)器(包括程序存儲(chǔ)器ROM和數(shù)據(jù)存儲(chǔ)器RAM)、I/O接
40、口電路、定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)和時(shí)鐘電路等計(jì)算機(jī)基本部件集成在一塊芯片上,具有獨(dú)特功能的單片微型計(jì)算機(jī)(Single Chip Microcomputer,簡(jiǎn)寫(xiě)為SCM)。由于其體積小,主要應(yīng)用在控制領(lǐng)域,所以又被稱(chēng)為微控制器(Micro Controller Unit,簡(jiǎn)寫(xiě)為MCU)。</p><p> 單片機(jī)出現(xiàn)的歷史并不長(zhǎng),其前身起源于上世紀(jì)70年代研制成功的微處理器(利用大規(guī)模集成電路制造技術(shù)將計(jì)算機(jī)的
41、運(yùn)算器和控制器集成為一體)。作為一門(mén)非常有前途的計(jì)算機(jī)技術(shù),單片機(jī)一經(jīng)出現(xiàn)就迅速發(fā)展起來(lái)。一路走來(lái),單片機(jī)的性能在不斷提高,存儲(chǔ)容量也在不斷增大,而體積、價(jià)格、功耗卻在不斷降低。由于其體積小、控制功能強(qiáng)大、編程靈活、價(jià)格低廉,所以在控制領(lǐng)域得到了廣泛的應(yīng)用??梢哉f(shuō),凡是與控制或簡(jiǎn)單計(jì)算有關(guān)的場(chǎng)合,都可以用單片機(jī)來(lái)實(shí)現(xiàn)。目前,單片機(jī)已得到了大力推廣和廣泛應(yīng)用,從工業(yè)控制系統(tǒng)到日常工作和生活的方方面面,單片機(jī)的應(yīng)用幾乎無(wú)處不在。從形形色色的
42、家用電器、電子玩具、數(shù)碼產(chǎn)品,到各種醫(yī)療器械、智能儀器儀表、通信設(shè)備,大到航空航天、雷達(dá)、導(dǎo)彈等現(xiàn)代化武器裝備,單片機(jī)的身影無(wú)處不在。復(fù)雜的工業(yè)控制系統(tǒng)中甚至有數(shù)百臺(tái)單片機(jī)在同時(shí)工作。</p><p> 單片機(jī)的應(yīng)用從根本上改變了傳統(tǒng)的控制系統(tǒng)的設(shè)計(jì)思想和設(shè)計(jì)方法,可以說(shuō),單片機(jī)技術(shù)的出現(xiàn)和發(fā)展給現(xiàn)代電子技術(shù)和控制領(lǐng)域帶來(lái)了一場(chǎng)新的革命。以往由硬件電路實(shí)現(xiàn)的大部分控制功能現(xiàn)在都能夠使用單片機(jī)通過(guò)軟件方式來(lái)實(shí)現(xiàn),
43、這種以軟件取代硬件并能夠提高系統(tǒng)性能的微控制技術(shù),隨著單片機(jī)應(yīng)用的推廣普及,不斷發(fā)展,日益完善。因此,學(xué)習(xí)單片機(jī),掌握其應(yīng)用和開(kāi)發(fā)技術(shù),也成為當(dāng)今職業(yè)院校電子信息專(zhuān)業(yè)的學(xué)生必須具備的一項(xiàng)基本技能。</p><p> 下面談?wù)剢纹瑱C(jī)的發(fā)展情況及其常用系列。</p><p> 雖然單片機(jī)出現(xiàn)的歷史并不長(zhǎng),至今也不到四十年的時(shí)間,但其發(fā)展卻十分迅猛。</p><p>
44、 1976年,美國(guó)的Intel公司在8位微處理器的基礎(chǔ)上首先研制成功了最早的單片機(jī)產(chǎn)品——MCS-48系列單片機(jī),這是一種低檔的8位單片機(jī),但它以其體積小、功能全、價(jià)格低、容易嵌入到其他控制產(chǎn)品中等特點(diǎn)得到了廣泛的應(yīng)用。現(xiàn)在MCS-48系列單片機(jī)已經(jīng)完全退出了歷史舞臺(tái)。20世紀(jì)80年代,Intel公司在總結(jié)MCS-48系列單片機(jī)的基礎(chǔ)上推出了8位單片機(jī)的第二代產(chǎn)品——MCS-51系列單片機(jī)。雖然它仍然是8位單片機(jī),但其功能有了很大的增
45、強(qiáng)。其系列產(chǎn)品包括基本型8031/8051/8751/8951、80C31/80C51,增強(qiáng)型8032/8052,改進(jìn)型8044/8344/8744等,其中80C31/80C51采用CHMOS工藝制造,功耗更低。上述單片機(jī)產(chǎn)品的內(nèi)核均是8051內(nèi)核,它們是高檔的8位單片機(jī)。</p><p> 由于Intel公司主要致力于計(jì)算機(jī)的CPU的研究和開(kāi)發(fā),所以該公司在推出MCS-51體系結(jié)構(gòu)后不久,開(kāi)放了8051內(nèi)核技
46、術(shù),授權(quán)一些廠(chǎng)商以MCS-51系列單片機(jī)為核心生產(chǎn)各自的單片機(jī),為單片機(jī)的發(fā)展起了很大作用。隨后世界各大半導(dǎo)體公司依靠自己的優(yōu)勢(shì),爭(zhēng)相研究和開(kāi)發(fā)單片機(jī),發(fā)展了MCS-51單片機(jī),創(chuàng)造了許多各具特色的單片機(jī)產(chǎn)品,成為事實(shí)上的8位單片機(jī)主流和經(jīng)典。這些單片機(jī)統(tǒng)稱(chēng)MCS-51系列單片機(jī),它們與MCS-51單片機(jī)兼容,又各具特點(diǎn)。</p><p> 目前,全世界生產(chǎn)單片機(jī)的廠(chǎng)家不計(jì)其數(shù),單片機(jī)的型號(hào)也五花八門(mén)。值得一提
47、的是,本設(shè)計(jì)中所采用的AT89S52單片機(jī)是Atmel公司的產(chǎn)品,它擁有與MCS-51單片機(jī)同樣的內(nèi)核和引腳排列,它除了具有和MCS-51單片機(jī)的全部功能外,還內(nèi)置了一些非常實(shí)用的功能。例如,它采用Flash ROM、支持ISP(在系統(tǒng)可編程)功能,可以反復(fù)快速擦寫(xiě),因此程序?qū)懭牒驼{(diào)試非常方便,使得我們?cè)趯?xiě)入程序時(shí)不需再依靠傳統(tǒng)的編程器,只需使用它所支持的專(zhuān)用ISP軟件就可輕易將程序?qū)懭?,它改變了單片機(jī)應(yīng)用系統(tǒng)的結(jié)構(gòu)模式和開(kāi)發(fā)運(yùn)行條件,
48、此外它還增加了一些外部接口功能,內(nèi)置有看門(mén)狗。AT89S52是目前占有較大市場(chǎng)份額、性能卓越的典型的51系列單片機(jī)。</p><p> AT89S52單片機(jī)的主要參數(shù)如下:</p><p> 8KB在系統(tǒng)可編程Flash ROM存儲(chǔ)器。</p><p> 片內(nèi)256B RAM存儲(chǔ)器。</p><p> 工作電源電壓:4.0V~5.5V
49、。</p><p> 可重復(fù)擦寫(xiě)1000次。</p><p> 時(shí)鐘頻率0Hz~33MHz。</p><p><b> 加密結(jié)構(gòu):三級(jí)。</b></p><p> 可編程并行I/O口:4×8位。</p><p> 定時(shí)/計(jì)數(shù)器:3個(gè)16位可編程定時(shí)/計(jì)數(shù)器。</p>
50、<p> 中斷源:8個(gè)可編程中斷源。</p><p> 全雙工UART串行通道。</p><p> 具有低功耗空閑工作模式和掉電保持模式。</p><p> 內(nèi)置看門(mén)狗定時(shí)器和復(fù)位電路。</p><p><b> 雙數(shù)據(jù)指針。</b></p><p> 3.1.2 51單
51、片機(jī)引腳功能介紹</p><p> 單片機(jī)就是一塊集成電路,在使用其之前,必須先了解其外部引腳功能。51單片機(jī)有多種封裝方式,下面以DIP-40封裝為例介紹其引腳功能。DIP-40封裝的AT89S52單片機(jī)實(shí)物圖如圖3-1所示。</p><p> 圖3-1 DIP-40封裝的AT89S52單片機(jī)實(shí)物圖</p><p> 由于受到集成電路芯片引腳數(shù)目的限制,許
52、多引腳具有雙重功能。AT89S52單片機(jī)的引腳排列如圖3-2所示。按其功能類(lèi)別來(lái)劃分,這40個(gè)引腳可分為以下四類(lèi):電源引腳、時(shí)鐘引腳、I/O接口引腳、編程控制引腳。各引腳功能介紹如下。</p><p> (1) 電源引腳Vcc和GND</p><p> 集成電路都需要電源供電才能正常工作,單片機(jī)也不例外。采用DIP-40封裝的AT89S52單片機(jī)的第40腳Vcc為電源正極輸入端,一般接
53、+5V,第20腳GND為電源負(fù)極輸入端,接電源負(fù)極,也作為電路中的公共接地端。</p><p> 圖3-2 DIP-40封裝的AT89S52單片機(jī)外部引腳圖</p><p> (2) 時(shí)鐘引腳XTAL1和XTAL2</p><p> 第19腳XTAL1為片內(nèi)振蕩電路輸入端,第18腳XTAL2為片內(nèi)振蕩電路輸出端。在使用片內(nèi)時(shí)鐘發(fā)生電路時(shí),這兩個(gè)引腳用于外接石
54、英晶體和振蕩電容(取值一般為10p~30p),此時(shí)晶振頻率即為時(shí)鐘振蕩頻率;在使用片外時(shí)鐘電路時(shí),這兩個(gè)引腳用于外接外部時(shí)鐘源。需要說(shuō)明的是:本設(shè)計(jì)采用單片機(jī)內(nèi)部時(shí)鐘振蕩電路,所以這兩個(gè)引腳外接石英晶體和振蕩電容。為便于計(jì)算定時(shí)器的初始值及定時(shí)時(shí)間,晶振頻率為12MHz。</p><p> (3) 并行I/O接口引腳</p><p> AT89S52單片機(jī)共有4個(gè)8位并行I/O口,分別
55、為P0、P1、P2、P3(字母P為英文單詞Port(意為“端口”)的第一個(gè)字母),每個(gè)I/O口均有8位,分別表示成Pm.n的形式(m=0,1,2,3;n=0,1,2,3,4,5,6,7),在用C語(yǔ)言寫(xiě)程序時(shí)則應(yīng)寫(xiě)成Pm^n的形式。</p><p> P0口(第39~30腳,其中第39腳為P0.0,即最低位,第32腳為P0.7,即最高位,其余依此遞推)為8位雙向三態(tài)I/O口。值得注意的是,P0口內(nèi)部沒(méi)有上拉電阻,
56、不能正常輸出高電平,因此P0口在作為通用I/O口作基本輸入輸出使用時(shí)必須外接上拉電阻,否則應(yīng)輸出高電平時(shí)為高阻態(tài),無(wú)法正常輸出高電平。上拉電阻阻值一般取10K。P0口除了作為I/O口使用外,在系統(tǒng)擴(kuò)展時(shí)還作為低8位地址總線(xiàn)和數(shù)據(jù)總線(xiàn)分時(shí)復(fù)用。本設(shè)計(jì)中的1602液晶顯示器的數(shù)據(jù)總線(xiàn)就是與P0口連接的,已外接上拉電阻。</p><p> P1口(第1~8腳,其中第1腳為P1.0,即最低位,第8腳為P1.7,即最高位
57、,其余遞推)為8位準(zhǔn)雙向并行I/O口。P1口內(nèi)部已接有上拉電阻,故在使用時(shí)無(wú)需再接上拉電阻。P1口功能較為簡(jiǎn)單,僅作基本I/O口使用,沒(méi)有第二功能。本設(shè)計(jì)中用P1口作為矩陣式按鍵接口使用。</p><p> P2口(第21~28腳,其中第21腳為P2.0,即最低位,第28腳為P2.7,即最高位,其余遞推)為8位準(zhǔn)雙向并行I/O口。P2口內(nèi)部也已接有上拉電阻,故在使用時(shí)無(wú)需再接上拉電阻。P2口除了作為I/O口使用
58、外,在系統(tǒng)擴(kuò)展時(shí)還作為高8位地址總線(xiàn)使用。</p><p> P3口(第10~17腳,其中第10腳為P3.0,即最低位,第17腳為P3.7,即最高位,其余遞推)作為第一功能使用時(shí)為普通的8位并行I/O口,在使用時(shí)也無(wú)需再接上拉電阻。需要強(qiáng)調(diào)的是:P3口的每個(gè)引腳又各自具有非常重要的第二功能。P3口的每個(gè)引腳的第二功能如表3-1所示。</p><p> 注意:P3口每個(gè)引腳各自具有的第二
59、功能都是比較重要的控制信號(hào),在實(shí)際應(yīng)用中應(yīng)優(yōu)先滿(mǎn)足第二功能使用需要,然后再用剩余的口線(xiàn)作為數(shù)據(jù)的輸入和輸出使用。由于本設(shè)計(jì)中不涉及到P3口第二功能的使用,故不再對(duì)P3口的第二功能作詳細(xì)介紹。</p><p> 以上四個(gè)I/O口既可字節(jié)操作(8位同時(shí)并行輸入輸出),亦可位操作(即每根口線(xiàn)均可獨(dú)立控制)</p><p> 表3-1 AT89S52單片機(jī)P3口的第二功能</p>
60、;<p> (4) 編程控制引腳</p><p> 第9腳RST/Vpd為復(fù)位信號(hào)輸入端。當(dāng)RST端保持兩個(gè)機(jī)器周期以上的高電平時(shí)即可使單片機(jī)進(jìn)入復(fù)位狀態(tài),完成一系列初始化操作。單片機(jī)復(fù)位時(shí),使片內(nèi)各特殊功能寄存器的內(nèi)容復(fù)位到初始狀態(tài),程序計(jì)數(shù)器PC的值歸零,即指向ROM的第一個(gè)單元。復(fù)位操作還使4個(gè)并行I/O口的每根口線(xiàn)都置為高電平狀態(tài)。除作為復(fù)位信號(hào)輸入外,該引腳也具有不太常用的第二功能,即
61、作為片內(nèi)RAM的備用電源輸入端。一旦電源斷電或者電壓降到一定值時(shí),可通過(guò)該引腳為片內(nèi)RAM供電,以保護(hù)片內(nèi)RAM中的數(shù)據(jù)不丟失,且上電后能夠繼續(xù)工作。</p><p> 第29腳為外部ROM的讀選通信號(hào),當(dāng)訪(fǎng)問(wèn)片外擴(kuò)展ROM時(shí),只有該引腳為低電平有效信號(hào),才能選通片外程序存儲(chǔ)器對(duì)其進(jìn)行讀操作。本設(shè)計(jì)中無(wú)外接擴(kuò)展ROM,不涉及對(duì)該引腳的使用,故懸空。</p><p> 第30腳ALE/為
62、地址鎖存使能/片內(nèi)ROM編程脈沖信號(hào)輸入端。在單片機(jī)擴(kuò)展外部存儲(chǔ)器時(shí),該引腳作第一功能使用,用于控制把P0口提供的低8位地址送鎖存器鎖存起來(lái),以實(shí)現(xiàn)低8位地址和數(shù)據(jù)的隔離。在沒(méi)有訪(fǎng)問(wèn)外部存儲(chǔ)器時(shí),該引腳以時(shí)鐘周期頻率的6分頻固定頻率輸出,因此可作為外部時(shí)鐘,或可作為外部定時(shí)脈沖使用。該引腳的第二功能為片內(nèi)ROM的編程脈沖輸入端。這是為兼容以往的低版本單片機(jī)而設(shè)置的。以往低版本單片機(jī)的片內(nèi)ROM要靠編程脈沖才能將程序?qū)懭耄鳤T89S52
63、支持ISP功能,無(wú)需編程脈沖輸入。本設(shè)計(jì)中既沒(méi)有擴(kuò)展外部存儲(chǔ)器,往片內(nèi)ROM寫(xiě)入程序時(shí)也無(wú)需編程脈沖輸入,故不涉及該引腳的使用,故閑置。</p><p> 第31腳/Vpp具有雙重功能。其第一功能為訪(fǎng)問(wèn)片內(nèi)、片外ROM的控制信號(hào),當(dāng)該引腳接低電平時(shí),CPU對(duì)ROM的訪(fǎng)問(wèn)限定在片外ROM(對(duì)于片內(nèi)沒(méi)有ROM的單片機(jī),如8031,CPU只能訪(fǎng)問(wèn)片外ROM,則該引腳一直是接低電平的);當(dāng)該引腳接高電平時(shí),CPU對(duì)RO
64、M的訪(fǎng)問(wèn)方式為,如果地址不超過(guò)片內(nèi)ROM的存儲(chǔ)單元范圍,則訪(fǎng)問(wèn)片內(nèi)ROM(低端地址),當(dāng)?shù)刂沸盘?hào)所標(biāo)志的存儲(chǔ)單元超出片內(nèi)ROM范圍時(shí)(高端地址),則自動(dòng)延伸至片外ROM(即只能訪(fǎng)問(wèn)片外ROM的高端存儲(chǔ)單元)。該引腳的第二功能Vpp用于對(duì)片內(nèi)含有EPROM的單片機(jī)(如8751),對(duì)其內(nèi)部EPROM寫(xiě)入程序時(shí)作編程電壓輸入端。本設(shè)計(jì)中采用的AT89S52單片機(jī)片內(nèi)含有8KB Flash ROM,其存儲(chǔ)容量已能滿(mǎn)足需求,無(wú)需擴(kuò)展片外ROM,且
65、AT89S52單片機(jī)支持ISP(在系統(tǒng)可編程)功能,無(wú)需編程電壓輸入,故此引腳直接接高電平(與第40腳電源正極相連),僅限于對(duì)片內(nèi)程序存儲(chǔ)器的訪(fǎng)問(wèn)。</p><p> 3.2 由已知日期推算星期幾</p><p> 3.2.1如何判斷一個(gè)年份是否是閏年</p><p> 數(shù)碼日歷鐘顯示的年份如果是閏年,則2月為29天,否則為28天。在本設(shè)計(jì)任務(wù)中,無(wú)論是日期的
66、調(diào)整,還是星期幾的推算,都涉及到閏年的判斷。查閱相關(guān)資料可知,如果一個(gè)年份是閏年,則該年份必然滿(mǎn)足以下兩個(gè)條件其中之一:</p><p> (1) 年份是4的整數(shù)倍但不是100的整數(shù)倍;</p><p> (2) 年份是400的整數(shù)倍。</p><p> 只要年份能滿(mǎn)足以上兩個(gè)條件其中之一,便可判定是閏年,否則不是閏年。于是,不難寫(xiě)出判斷一個(gè)年份是否閏年的函數(shù)
67、如下:</p><p> bit leap(int year) //判斷是否閏年函數(shù)</p><p> { return(year%4==0&&year%100!=0||year%400==0); }//閏年的條件</p><p> 該函數(shù)的類(lèi)型為C51中擴(kuò)展的bit型(即位類(lèi)型),這種類(lèi)型的函數(shù)的返回值只能是0或1,不能為其它值。具體
68、到本函數(shù),若年份能滿(mǎn)足閏年的條件則返回1,否則返回0。</p><p> 3.2.2由已知日期如何推算星期幾</p><p> 我們?cè)谌粘I钪薪?jīng)常會(huì)遇到這樣的問(wèn)題,忘記了某年某月某日是星期幾,特別是一些重大節(jié)日或是一些值得紀(jì)念的日子,這就是星期幾的推算問(wèn)題。那么,如何由一個(gè)已知日期推算出是星期幾呢?</p><p> 人們一般會(huì)采用這樣的方法:從一個(gè)已知星期
69、幾的某天開(kāi)始推算,先計(jì)算已知星期幾的這一天距要推算的那天共相差幾天,由于星期是7天一輪回的,故可以將相差的天數(shù)除以7取余數(shù),再用已知的那天星期幾加上余數(shù),就可以推算出要計(jì)算的這天是星期幾了。在此,我們也采用類(lèi)似的方法進(jìn)行推算。已知公元元年1月1日正好是星期一,那么,只需計(jì)算出從公元元年1月1日到要推算的這一天總共多少天(s),再用天數(shù)s除以7取余數(shù),余0則說(shuō)明正好夠整數(shù)個(gè)星期,則要推算的這一天正好就是一個(gè)星期的最后一天,也就是星期日;余
70、1則說(shuō)明整數(shù)個(gè)星期還多一天,那么要推算的這一天就是星期一了;依次類(lèi)推,余2就是星期二,余3就是星期三.……。但是我們?cè)谟?jì)算天數(shù)時(shí)會(huì)發(fā)現(xiàn)由于中間會(huì)經(jīng)歷平年(365天)、閏年(366天),每年的不同月份天數(shù)也不相同,這樣算來(lái),計(jì)算量是很大的,計(jì)算也十分不便。有沒(méi)有改進(jìn)的方法呢?我們不妨這樣來(lái)考慮:如果一個(gè)年份是平年,則該年有365天,也就是52個(gè)星期多一天;如果一個(gè)年份是閏年,則該年有366天,也就是52個(gè)星期多兩天;于是,對(duì)于以前的年份,
71、如果是平年,則只計(jì)為一天(扣除其中的整數(shù)個(gè)星期),同理,如果是閏年,則計(jì)為兩天。</p><p> 再進(jìn)一步,把要推算的這一年之前的所有年份都先按平年計(jì)算,則之前有多少年,就有多少天(一個(gè)平年只計(jì)一天,其中的整數(shù)個(gè)星期已扣除)。設(shè)要推算的年份為y,則之前有y-1個(gè)年份,就計(jì)為y-1天。其中y-1個(gè)年份中有若干個(gè)年份是閏年,由于閏年比平年多一天(平年2月28天,閏年2月29天,閏年和平年的其它相應(yīng)月份的天數(shù)是一樣
72、的,只有2月份不同),則需再加上閏年的個(gè)數(shù),于是可以算出y年之前有(y-1) +(y-1)/4-(y-1)/100+(y-1)/400天。注意:先把之前y-1年中凡是4的整數(shù)倍的年份都暫按閏年計(jì)算,然后再去掉是100的整數(shù)倍的年份,再加上是400的整數(shù)倍的年份,即可算出y年之前有之少天了(整數(shù)個(gè)星期已扣除)。</p><p> 然后再計(jì)算要推算的這一天是當(dāng)年的第多少天,這個(gè)不難計(jì)算。如果要推算的日子在該年的前兩
73、個(gè)月,則與該年是否閏年無(wú)關(guān);如果是2月份以后的月份,可以先按平年計(jì)算,如果是閏年,則再加上一天(因?yàn)殚c年的2月份比平年的2月份多一天)。這樣,就可以對(duì)要推算的日子所在的月份進(jìn)行測(cè)試,并按各種情況計(jì)算出要推算的這一天所在的月份之前當(dāng)年已過(guò)了多少天,再加上要推算的這一天是當(dāng)月的第幾天,就可以算出要推算的這一天是當(dāng)年的第多少天了。用之前所算出的當(dāng)年之前的總天數(shù)加上要推算的這一天是當(dāng)年的多少天,如此計(jì)算出總天數(shù),再用這個(gè)總天數(shù)除以7取余數(shù),余0
74、則是星期日,余1則是星期一,余2則是星期二,……如此等等。</p><p> 由已知日期推算星期幾的函數(shù)的參考源代碼如下:</p><p> char tuisuan(int y, char m, char d) //根據(jù)已知日期推算星期幾</p><p> { int s; //變量s用于存放總天數(shù)</p><p> swi
75、tch (m)</p><p> { case 1: s=0; break; </p><p> //如果欲推算的這一天在1月份,則當(dāng)月之前經(jīng)歷了0天</p><p> case 2: s=31;break;</p><p> case 3: s=59; break;</p><p> case 4: s
76、=90;break;</p><p> case 5: s=120; break;</p><p> case 6: s=151;break;</p><p> case 7: s=181; break;</p><p> case 8: s=212;break;</p><p> case 9: s=243
77、; break;</p><p> case 10: s=273;break;</p><p> case 11: s=304; break;</p><p> case 12: s=334;break;</p><p><b> }</b></p><p> if(m>2&
78、;&leap(y)) s=s+1;</p><p><b> s=s+d;</b></p><p> s=s+(y-1)+(y-1)/4-(y-1)/100+(y-1)/400;</p><p> return (s%7);</p><p><b> }</b></p>
79、<p> 程序運(yùn)行期間,通過(guò)按鍵調(diào)整日期,運(yùn)行結(jié)果測(cè)試如表3-2所示:</p><p> 表3-2 星期計(jì)算問(wèn)題測(cè)試數(shù)據(jù)表</p><p> 3.3 1602字符液晶的使用</p><p><b> 3.3.1液晶概述</b></p><p> 液晶(Liquid Crystal)是一種高分子材
80、料,由于它具有特殊的物理、化學(xué)、光學(xué)特性,被廣泛地應(yīng)用在各種輕薄型顯示器上,如手機(jī)屏幕、筆記本電腦顯示屏及各種便攜式電子信息產(chǎn)品中。</p><p> 液晶顯示器(Liquid Crystal Display,簡(jiǎn)寫(xiě)為L(zhǎng)CD)的主要顯示原理是以電流刺激液晶分子產(chǎn)生點(diǎn)、線(xiàn)、面并配合背部燈管構(gòu)成畫(huà)面。為敘述方便,通常把各種液晶顯示器都直接叫做液晶。</p><p> 液晶顯示器具有體積小、質(zhì)
81、量輕、功耗低(功率為10mW,5V電源供電、工作電流只有2mA)、可靠性高、顯示操作簡(jiǎn)單等優(yōu)點(diǎn),被廣泛地應(yīng)用在各種便攜式電子信息產(chǎn)品中作顯示器件。特別是電池供電的單片機(jī)產(chǎn)品中,液晶顯示器幾乎是必選的顯示器件。但是,液晶也有一個(gè)致命的弱點(diǎn),那就是其使用的溫度范圍很窄,通用型液晶正常工作溫度范圍為0℃~+55 ℃,存儲(chǔ)溫度范圍為-20℃~+60 ℃。即使是寬溫級(jí)液晶,其正常工作溫度范圍也僅為-20℃~+70 ℃,存儲(chǔ)溫度范圍為-30℃~+8
82、0 ℃。(高寒地區(qū)難以正常工作)。因此在設(shè)計(jì)相應(yīng)產(chǎn)品時(shí)務(wù)必要考慮周全,選取合適的液晶。</p><p> 按照能夠顯示的字符個(gè)數(shù)和行數(shù),液晶有多種型號(hào)(如1602、0801等,它們屬于字符液晶,只能用于顯示英文字母、阿拉伯?dāng)?shù)字及其他一些ASCII字符,不可用來(lái)顯示漢字。字符液晶顯示的是點(diǎn)陣字符,有5×7、5×10兩種點(diǎn)陣字型可編程選擇,每一個(gè)字符位可顯示一個(gè)ASCII碼字符。1602意即每行
83、可顯示16個(gè)字符,一共可以顯示兩行)。也有的液晶型號(hào)是按照液晶顯示點(diǎn)陣的行、列數(shù)來(lái)命名的,如:12232、12864、320240,這些都是圖形液晶,可用于顯示圖形與漢字。12864意即橫向有128列、豎向有64行的點(diǎn)陣,通過(guò)編程控制讓其中哪些點(diǎn)亮、哪些點(diǎn)不亮,就可以顯示一個(gè)特定的畫(huà)面。</p><p> 根據(jù)顯示的色彩,液晶還可分為單(色)顯液晶和彩(色)顯液晶。</p><p>
84、根據(jù)操作的方式不同,液晶還可分為串行操作方式與并行操作方式。目前,市場(chǎng)上的1602液晶以并行操作方式居多。</p><p> 3.3.2 LCM引腳功能介紹</p><p> 通常將LCD控制器、顯示器及RAM(用于存儲(chǔ)顯示的數(shù)據(jù))、ROM(用于存放指令)連接在一塊印刷電路板上,稱(chēng)為液晶顯示控制模塊(LCM)。1602液晶顯示模塊有16個(gè)引腳,其引腳功能介紹如表3-3所示:</p
85、><p> 表3-3 1602液晶顯示模塊引腳功能表</p><p><b> 引腳功能說(shuō)明:</b></p><p> 第1腳、第2腳為整個(gè)LCM模塊的電源端,第15腳、第16腳為背部光源的電源正、負(fù)極。引腳如此設(shè)置,第1腳和第16腳均是接地,第2腳和第15腳均是電源正極,即使插錯(cuò),最多導(dǎo)致液晶不能正常工作顯示,但不至于燒壞液晶。</
86、p><p> RS為存儲(chǔ)器選擇位,RS=1,對(duì)數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě),RS=0,對(duì)指令存儲(chǔ)器進(jìn)行讀寫(xiě)。</p><p> 為讀寫(xiě)控制信號(hào),=1,對(duì)模塊進(jìn)行讀操作;=0,對(duì)模塊進(jìn)行寫(xiě)操作。</p><p> EN為L(zhǎng)CM模塊的使能控制端,正脈沖有效。</p><p> ~為L(zhǎng)CM的數(shù)據(jù)/指令總線(xiàn)。</p><p> 、
87、控制讀、寫(xiě)存儲(chǔ)器操作格式如表3-4所示:</p><p> 表3-4 RS、的功能描述</p><p> 3.3.3 LCD1602字符液晶顯示模塊指令集</p><p> LCD1602字符液晶顯示模塊指令集如表3-6所示。</p><p><b> 必要說(shuō)明:</b></p><p>
88、; (1) BF為L(zhǎng)CD控制模塊的“忙”標(biāo)志位。BF=1,LCD控制模塊忙,不能接收任何指令或數(shù)據(jù);BF=0,LCD控制模塊不忙,可以接收指令或數(shù)據(jù)。向LCD控制模塊發(fā)送指令或數(shù)據(jù)前應(yīng)先查詢(xún)BF狀態(tài)。</p><p> (2) DDRAM為L(zhǎng)CD顯示控制模塊的顯示數(shù)據(jù)存儲(chǔ)器,它共有80個(gè)單元,分為兩行,其中每行的前16個(gè)單元可顯示。每個(gè)存儲(chǔ)單元都有一個(gè)獨(dú)立的編號(hào)即地址。當(dāng)前活動(dòng)單元的地址存放在地址計(jì)數(shù)器AC中
89、。</p><p> CGRAM為L(zhǎng)CD顯示控制模塊的字符發(fā)生存儲(chǔ)器,共64個(gè)單元,用于存放自定義字符。</p><p> S/和R/的功能如表3-5所示,LCM的常用指令匯總?cè)绫?-7所示。</p><p> 表3-5 S/和R/的功能說(shuō)明表</p><p> 表3-6 LCD1602字符液晶顯示模塊指令集</p>
90、<p> 表3-7 LCM的常用指令匯總表</p><p> 3.3.4 LCD1602字符液晶顯示模塊與單片機(jī)的接口</p><p> LCD1602字符液晶顯示模塊與單片機(jī)的硬件連接如圖3-3所示。</p><p> 圖3-3 LCD1602字符液晶顯示模塊與單片機(jī)的硬件連接圖</p><p> 3.3.5 L
91、CD1602字符液晶顯示模塊的基礎(chǔ)函數(shù)</p><p><b> (1) 引腳定義:</b></p><p> sbit RS=P2^4; //*定義液晶模塊的數(shù)據(jù)/指令存儲(chǔ)器選擇位*/</p><p> sbit RW=P2^5; //定義液晶模塊的讀/寫(xiě)控制選擇位*/</p><p> sbi
92、t EN=P2^6; /定義液晶模塊的使能端</p><p> (2) 向1602液晶顯示模塊寫(xiě)指令函數(shù):</p><p> void write_cmd(unsigned char cmd) //形式參數(shù)cmd為要寫(xiě)入的指令</p><p> { RS=0; //對(duì)指令存儲(chǔ)器進(jìn)行寫(xiě)操作,初始化時(shí)已定義為寫(xiě)操作</p><
93、;p> P0=cmd; //將要寫(xiě)入的指令送到指令總線(xiàn)上以便寫(xiě)入液晶模塊</p><p> delay(10); //稍作延時(shí),以待指令數(shù)據(jù)穩(wěn)定</p><p> EN=1; //將使能端置高電平,使其有效,以便向液晶模塊寫(xiě)入指令</p><p> delay(10); //加以延時(shí),以便將指令寫(xiě)入到液晶模塊</p><p
94、> EN=0; //將使能端復(fù)位至低電平狀態(tài),為下次操作做準(zhǔn)備 }</p><p> (3) 向1602液晶顯示模塊寫(xiě)數(shù)據(jù)函數(shù):</p><p> void write_dat(unsigned char dat) //形式參數(shù)dat為要寫(xiě)入的數(shù)據(jù)</p><p> { RS=1; //對(duì)顯示數(shù)據(jù)存儲(chǔ)器(DDRAM)進(jìn)行寫(xiě)操作</p&
95、gt;<p> P0=dat; //將要寫(xiě)入的數(shù)據(jù)送到數(shù)據(jù)總線(xiàn)上以便寫(xiě)入液晶模塊</p><p> delay(10); //稍作延時(shí),以便使數(shù)據(jù)穩(wěn)定</p><p> EN=1; //將使能端置高電平使其有效,以便向液晶模塊寫(xiě)入數(shù)據(jù)</p><p> delay(10); //加以延時(shí),以便將數(shù)據(jù)寫(xiě)入到DDRAM</p>
96、<p> EN=0; //將使能端復(fù)位至低電平狀態(tài),為下次操作做準(zhǔn)備 }</p><p> (4) 1602液晶顯示模塊的初始化函數(shù):</p><p> void LCD_init( ) //1602液晶顯示模塊的初始化函數(shù)</p><p> { EN=0; //將使能端復(fù)位至低電平狀態(tài),為對(duì)液晶模塊操作做準(zhǔn)備</p>
97、<p><b> RW=0; </b></p><p> //由于現(xiàn)只對(duì)液晶模塊進(jìn)行寫(xiě)操作,故將LCD模塊的讀寫(xiě)控制端置低電平</p><p> write_cmd(0x38); //設(shè)置為8位數(shù)據(jù)總線(xiàn),雙行顯示,采用5×7點(diǎn)陣</p><p> write_cmd(0x0c); //開(kāi)顯示關(guān)光標(biāo),光標(biāo)不閃
98、爍</p><p> write_cmd(0x06); /*設(shè)置地址計(jì)數(shù)器AC為加法計(jì)數(shù)方式,即自動(dòng)加1計(jì)數(shù),光標(biāo)右移,顯示畫(huà)面不移動(dòng) */</p><p> write_cmd(0x01); </p><p> // 清屏,清除DDRAM中原有內(nèi)容,AC復(fù)位至第一行首地址。}</p><p> (5) 1602液晶顯示模塊的顯示函數(shù)
99、定義如下:</p><p> void display( )</p><p> { unsigned char i;</p><p> write_cmd(0x80); //設(shè)定第一行的首地址</p><p> for(i=0;i<16;i++) //逐個(gè)寫(xiě)入第一行的各個(gè)字符</p><p>
100、 write_dat(first[i]);</p><p> write_cmd(0xc0); //設(shè)定第二行的首地址</p><p> for(i=0;i<16;i++) //逐個(gè)寫(xiě)入第二行的各個(gè)字符</p><p> write_dat(second[i]); </p><p><b> }</b&
101、gt;</p><p> 說(shuō)明:在源程序預(yù)包含的頭文件head.h中已定義兩個(gè)數(shù)組first[16]和second[16],分別用于存放液晶的兩行要顯示的內(nèi)容。</p><p> 3.4 51單片機(jī)中的中斷與定時(shí)</p><p> 3.4.1 51單片機(jī)中的中斷</p><p> 中斷功能是單片機(jī)的一個(gè)非常重要的功能,中斷系統(tǒng)也是單片
102、機(jī)中非常重要的組成部分,它是為了使單片機(jī)能夠?qū)ν獠炕騼?nèi)部隨機(jī)發(fā)生的事件實(shí)時(shí)處理而設(shè)置的。中斷功能的存在,在很大程度上提高了單片機(jī)的實(shí)時(shí)處理能力,是單片機(jī)學(xué)習(xí)者必須掌握的重要內(nèi)容。我們不但要了解單片機(jī)中斷系統(tǒng)的資源配置情況,還要掌握通過(guò)相關(guān)的特殊功能寄存器打開(kāi)和關(guān)閉中斷源、設(shè)定中斷優(yōu)先級(jí),掌握中斷服務(wù)程序的編寫(xiě)方法。</p><p><b> (1) 中斷的概念</b></p>
103、<p> 對(duì)于單片機(jī)來(lái)講,中斷是指CPU正在執(zhí)行主程序的過(guò)程中,由于CPU之外的某種原因,有必要暫停主程序的執(zhí)行,轉(zhuǎn)而去執(zhí)行相應(yīng)的處理(中斷服務(wù))程序。待處理程序結(jié)束之后,再返回原程序斷點(diǎn)處繼續(xù)運(yùn)行,這一過(guò)程稱(chēng)為中斷。</p><p> 引起中斷的事件稱(chēng)為中斷源。51單片機(jī)中共有5種中斷源:兩個(gè)外部中斷(、)、兩個(gè)定時(shí)/計(jì)數(shù)器中斷(T0、T1)和一個(gè)串行口通信中斷。</p><
104、p> (2) 51單片機(jī)的中斷系統(tǒng)</p><p> 51單片機(jī)的中斷系統(tǒng)的內(nèi)部結(jié)構(gòu)框圖如圖3-4所示。</p><p> 圖3-4 51單片機(jī)的中斷系統(tǒng)內(nèi)部結(jié)構(gòu)框圖</p><p> 由圖3-4可知,51單片機(jī)系統(tǒng)中用于定時(shí)/計(jì)數(shù)器中斷控制的寄存器為T(mén)CON,中斷允許寄存器IE來(lái)控制定時(shí)/計(jì)數(shù)器的啟動(dòng)與停止及中斷的開(kāi)關(guān)。</p>&l
105、t;p> 51單片機(jī)內(nèi)部有2個(gè)16位的定時(shí)/計(jì)數(shù)器,分別是T0和T1。52單片機(jī)則比51單片機(jī)擴(kuò)展了一個(gè)定時(shí)/計(jì)數(shù)器T2。當(dāng)計(jì)數(shù)器計(jì)滿(mǎn)溢出時(shí)就會(huì)向CPU發(fā)出中斷請(qǐng)求。關(guān)于51單片機(jī)的定時(shí)器中斷,后面將有詳細(xì)介紹。</p><p><b> (3) 中斷標(biāo)志</b></p><p> TCON即定時(shí)/計(jì)數(shù)器控制寄存器,這是一個(gè)可位尋址的8位特殊功能寄存器,即
106、可以對(duì)其每一位單獨(dú)進(jìn)行操作。它不僅與兩個(gè)定時(shí)/計(jì)數(shù)器的中斷有關(guān),也與兩個(gè)外部中斷源有關(guān)。它可以用來(lái)控制定時(shí)/計(jì)數(shù)器的啟動(dòng)與停止,標(biāo)志定時(shí)/計(jì)數(shù)器是否計(jì)滿(mǎn)溢出和中斷情況,還可以設(shè)定兩個(gè)外部中斷的觸發(fā)方式、標(biāo)志外部中斷請(qǐng)求是否觸發(fā)。因此,它又被稱(chēng)為中斷請(qǐng)求標(biāo)志寄存器。單片機(jī)復(fù)位時(shí),TCON的全部位均被清0。其各位名稱(chēng)如表3-8所示。</p><p> 表3-8 定時(shí)/計(jì)數(shù)器控制寄存器TCON的各位功能說(shuō)明<
107、;/p><p> TCON寄存器中和定時(shí)/計(jì)數(shù)器中斷有關(guān)的位的功能介紹如下:</p><p> TR0:定時(shí)/計(jì)數(shù)器0(T0)的啟動(dòng)控制位。當(dāng)TR0=1時(shí),T0啟動(dòng)計(jì)數(shù);當(dāng)TR0=0時(shí),T0停止計(jì)數(shù);</p><p> TF0:定時(shí)/計(jì)數(shù)器0(T0)的溢出中斷標(biāo)志位。當(dāng)定時(shí)/計(jì)數(shù)器0計(jì)滿(mǎn)溢出時(shí),由硬件自動(dòng)將TF0置1,并向CPU發(fā)出中斷請(qǐng)求,當(dāng)CPU響應(yīng)該中斷進(jìn)入
108、中斷服務(wù)程序后,由硬件自動(dòng)將該位清0,不需用專(zhuān)門(mén)的語(yǔ)句將該位清0。需要說(shuō)明的是:如果使用定時(shí)/計(jì)數(shù)器的中斷功能,則該位完全不用人為操作,硬件電路會(huì)自動(dòng)將該位置1、清0,但是如果中斷被屏蔽,使用軟件查詢(xún)方式去處理該位時(shí),則需用專(zhuān)門(mén)語(yǔ)句將該位清0。</p><p> TR1:定時(shí)/計(jì)數(shù)器1(T1)的啟動(dòng)控制位。其功能及使用方法同TR0。</p><p> TF1:定時(shí)/計(jì)數(shù)器1(T1)的溢
109、出中斷標(biāo)志位。其功能及使用方法同TF0。</p><p> 其余四位與外部中斷相關(guān),是兩個(gè)外部中斷的中斷請(qǐng)求標(biāo)志位和觸發(fā)方式控制位,本設(shè)計(jì)不涉及,故不再贅述。</p><p> (4) 中斷允計(jì)寄存器IE</p><p> 在MCS-51單片機(jī)的中斷系統(tǒng)中,中斷的允許或禁止是在中斷允許寄存器IE中設(shè)置的。IE也是一個(gè)可位尋址的8位特殊功能寄存器,即可以對(duì)其每一
110、位單獨(dú)進(jìn)行操作,當(dāng)然也可以進(jìn)行整體字節(jié)操作。單片機(jī)復(fù)位時(shí),IE全部被清0。其各位定義如表3-9所示。</p><p> 表3-9 中斷允許寄存器IE的各位功能定義</p><p> 中斷允許寄存器IE中和定時(shí)/計(jì)數(shù)器中斷有關(guān)的位的功能定義說(shuō)明如下:</p><p> EA:即Enable All的縮寫(xiě),全局中斷允許控制位。當(dāng)EA=0時(shí),則所有中斷均被禁止;
111、當(dāng)EA=1時(shí),全局中斷允許打開(kāi),在此條件下,由各個(gè)中斷源的中斷控制位確定相應(yīng)的中斷允許或禁止。換言之,EA就是各種中斷源的總開(kāi)關(guān)。</p><p> ET0:定時(shí)/計(jì)數(shù)器0的中斷允許位。如果ET0置1,則允許定時(shí)/計(jì)數(shù)器0中斷,否則禁止定時(shí)/計(jì)數(shù)器0中斷。</p><p> ET1:定時(shí)/計(jì)數(shù)器1的中斷允許位。如果ET1置1,則允許定時(shí)/計(jì)數(shù)器1中斷,否則禁止定時(shí)/計(jì)數(shù)器1中斷。<
112、;/p><p> 例如:如果我們要設(shè)置定時(shí)/計(jì)數(shù)器T0中斷允許,其他中斷不允許,則IE寄存器各位取值如表3-10所示。</p><p> 表3-10 IE寄存器的各位取值</p><p> 即IE=0x82。當(dāng)然,我們也可以用位操作指令來(lái)實(shí)現(xiàn):EA=1,ET0=1。</p><p> (5) 中斷初始化及中斷服務(wù)程序結(jié)構(gòu)</p&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 可調(diào)數(shù)碼日歷鐘畢業(yè)論文
- 單片機(jī)畢業(yè)設(shè)計(jì)--基于51單片機(jī)的數(shù)碼日歷鐘的設(shè)計(jì)與制作
- 數(shù)字日歷時(shí)鐘畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)--電子日歷
- 畢業(yè)設(shè)計(jì) 電子日歷設(shè)計(jì)
- 日歷鐘設(shè)計(jì)開(kāi)題報(bào)告
- 單片機(jī)日歷和時(shí)鐘畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)---電子日歷的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文 基于單片機(jī)的電子日歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于android的日歷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)論文—多功能數(shù)字鐘的設(shè)計(jì)論文
- ds1302時(shí)鐘數(shù)碼管課程設(shè)計(jì)--用數(shù)碼管顯示實(shí)時(shí)日歷時(shí)鐘的設(shè)計(jì)
- 多功能數(shù)字電子鐘畢業(yè)設(shè)計(jì)論文
- 單片機(jī)電子日歷畢業(yè)設(shè)計(jì)
- 日歷時(shí)鐘顯示系統(tǒng)畢業(yè)設(shè)計(jì)
- 多功能數(shù)字電子鐘畢業(yè)設(shè)計(jì)論文
- 數(shù)碼相框畢業(yè)設(shè)計(jì)論文--基于arm和linux的嵌入式數(shù)碼相框系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(2) 單片機(jī)電子日歷
- 數(shù)字鐘畢業(yè)設(shè)計(jì)
- 數(shù)字鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論