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