版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢 業(yè) 論 文</b></p><p> 基于單片機(jī)的進(jìn)制換算</p><p><b> 2012年6月5日</b></p><p><b> 目錄</b></p><p><b> 摘要1</b></p>
2、;<p><b> 緒論2</b></p><p><b> 課題背景2</b></p><p><b> 課題意義2</b></p><p><b> 程序擴(kuò)展2</b></p><p><b> 本章小節(jié)2&
3、lt;/b></p><p> 第一章 系統(tǒng)功能及操作3</p><p> 1.1系統(tǒng)功能的確定3</p><p> 1.2 基本功能9</p><p> 1.3本章小結(jié)10</p><p> 第二章 系統(tǒng)模塊介紹11</p><p> 2.1 主控模塊11<
4、/p><p> 2. 2 引腳說(shuō)明11</p><p> 2.3 主控模塊設(shè)計(jì)13</p><p> 2.3.1 電源電路模塊設(shè)計(jì)13</p><p> 2.3.2 時(shí)鐘電路模塊設(shè)計(jì)14</p><p> 2.3.3 復(fù)位電路模塊設(shè)計(jì)14</p><p> 2.4 LCD顯示
5、模塊15</p><p> 2. 5 按鍵模塊17</p><p> 第三章 系統(tǒng)硬件設(shè)計(jì)—實(shí)驗(yàn)板介紹18</p><p> 3.1 硬件總圖18</p><p> 3.2主控硬件模塊19</p><p> 3.3按鍵硬件模塊化20</p><p> 3.4 LCD顯示硬
6、件模塊化21</p><p> 3.5本章小結(jié)21</p><p> 第四章 系統(tǒng)軟件設(shè)計(jì)22</p><p> 4.1數(shù)據(jù)單元分配22</p><p> 4.2主程序設(shè)計(jì)流程圖24</p><p> 4.3程序說(shuō)明25</p><p> 4.3.1包含數(shù)據(jù)庫(kù)25<
7、;/p><p> 4.3.2 程序初始化25</p><p> 4.3.3 字符串顯示25</p><p> 4.3.4 實(shí)現(xiàn)計(jì)算設(shè)定25</p><p> 4.4本章小結(jié)26</p><p> 第五章 系統(tǒng)調(diào)試27</p><p> 5.1硬件調(diào)試27</p>
8、<p> 5.2軟件調(diào)試28</p><p> 5.3本章小結(jié)28</p><p><b> 結(jié)束語(yǔ)29</b></p><p><b> 致 謝30</b></p><p> 附錄:程序清單31</p><p><b> 參考文獻(xiàn)
9、37</b></p><p><b> 摘 要</b></p><p> 本次設(shè)計(jì)是基于單片機(jī)的進(jìn)制換算,在設(shè)計(jì)中需要進(jìn)行進(jìn)制間的轉(zhuǎn)換。所需要MCS-51單片機(jī)、LCD1602型液晶顯示。在此設(shè)計(jì)中主控模塊我們選要的是AT89S52芯片。AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel公司高
10、密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。</p><p> 設(shè)計(jì)當(dāng)中顯示采用LCD液晶顯示,其特點(diǎn)是:1、顯示質(zhì)量高2、沒(méi)有電磁輻射 3、可視面積大 4、應(yīng)用范圍廣 5、畫(huà)面效果好 6、數(shù)字式接
11、口 7、“身材”勻稱(chēng)小巧 8、功率消耗小等。點(diǎn)陣字符型LCD是專(zhuān)門(mén)用于顯示數(shù)字、字母、圖形符號(hào)及少量自定義符號(hào)的液晶顯示器。這類(lèi)顯示器把LCD控制器、點(diǎn)陣驅(qū)動(dòng)器、字符存儲(chǔ)器、顯示體及少量的阻容元件等集成為一個(gè)液晶顯示模塊。鑒于字符型液晶顯示模塊目前在國(guó)際上已經(jīng)規(guī)范化,其電特性及接口特性是統(tǒng)一的。</p><p> 所以在本設(shè)計(jì)中采用AT89S52主控、LCD1602顯示。不僅功能能實(shí)現(xiàn)而且經(jīng)濟(jì)實(shí)惠。</
12、p><p> 關(guān)鍵詞:?jiǎn)纹瑱C(jī) AT89S52 進(jìn)制換算 LCD液晶顯示 </p><p><b> 緒 論</b></p><p><b> 課題背景</b></p><p> 本文討論的單片機(jī)多功能時(shí)鐘系統(tǒng)的核心是目前應(yīng)用極為廣泛的51系列單片機(jī),配置了外圍設(shè)備,構(gòu)成了一個(gè)可編
13、程的計(jì)時(shí)定時(shí)系統(tǒng),具有體積小,可靠性高,功能多等特點(diǎn)。不僅能滿足所需要求而且還有很多功能可供擴(kuò)展,有著廣泛的應(yīng)用領(lǐng)域。</p><p> 本課題是基于單片機(jī)的進(jìn)制間換算,進(jìn)制間換算比較復(fù)雜,有時(shí)需要快速計(jì)算二,八,十,十六之間的轉(zhuǎn)換。為了轉(zhuǎn)換快速所以專(zhuān)門(mén)制作了一種計(jì)算器。專(zhuān)門(mén)計(jì)算進(jìn)制間的相互換算。當(dāng)輸入相應(yīng)的進(jìn)制數(shù)是能夠轉(zhuǎn)換成自己想要的進(jìn)制數(shù)。是一種快捷方便的設(shè)計(jì)。</p><p>&l
14、t;b> 課題意義</b></p><p> 通過(guò)用單片機(jī)最小系統(tǒng)開(kāi)發(fā)一種進(jìn)制見(jiàn)換算計(jì)算器,能夠以按鍵輸入0~9(十進(jìn)制),0~G(十六進(jìn)制)0~7(八進(jìn)制),0~1(二進(jìn)制)。學(xué)習(xí)了我們所學(xué)的按鍵掃描和LCD掃描。通過(guò)單片機(jī)中的程序計(jì)算進(jìn)制間的換算,計(jì)算結(jié)果通過(guò)LCD顯示出來(lái)。實(shí)際意義是一種新型計(jì)算機(jī),快速計(jì)算進(jìn)制間的換算。在此設(shè)計(jì)中不僅得到進(jìn)制換算的一種工具,同時(shí)通過(guò)親自焊接最小系統(tǒng),得
15、到了完全的最小系統(tǒng)。并且能夠完成程序的實(shí)現(xiàn),在此也是件非常值得高興之事。</p><p><b> 程序擴(kuò)展</b></p><p> 在本程序中只涉及到了十進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制、十六進(jìn)制。在以后的運(yùn)行中可以開(kāi)發(fā)成進(jìn)制相互轉(zhuǎn)換,包括二轉(zhuǎn)八、二轉(zhuǎn)十、二轉(zhuǎn)十六、八轉(zhuǎn)二、八轉(zhuǎn)十、八轉(zhuǎn)十六等。同樣以AT89S52型開(kāi)發(fā),通過(guò)修改程序,增加硬件上的按鍵,增加接線口等。既可以
16、完成設(shè)計(jì)的擴(kuò)展。</p><p><b> 本章小節(jié)</b></p><p> 本章主要介紹了課題背景、設(shè)計(jì)任務(wù)和課題意義,對(duì)單片機(jī)的優(yōu)點(diǎn)及結(jié)構(gòu)作了簡(jiǎn)要敘述,也對(duì)本系統(tǒng)的應(yīng)用及概況進(jìn)行了說(shuō)明。</p><p> 第一章 系統(tǒng)功能及操作</p><p> 1.1系統(tǒng)功能的確定</p><p>
17、; 進(jìn)制間的轉(zhuǎn)換:1. 十 -----> 二</p><p> 一個(gè)十進(jìn)制,比如:6,將它轉(zhuǎn)換成二進(jìn)制數(shù)。 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),是連續(xù)除2的過(guò)程: 把要轉(zhuǎn)換的數(shù),除以2,得到商和余數(shù), 將商繼續(xù)除以2,直到商為0。最后將所有余數(shù)倒序排列,得到數(shù)就是轉(zhuǎn)換結(jié)果。 </p><p> 比如要轉(zhuǎn)換6為二進(jìn)制數(shù)。 “把要轉(zhuǎn)換的數(shù),除以2,得到商和余數(shù)”。 </p>&l
18、t;p><b> 那么: </b></p><p> 圖1-1 十轉(zhuǎn)二示意圖</p><p> 要轉(zhuǎn)換的數(shù)是6, 6 ÷ 2,得到商是3,余數(shù)是0。 “將商繼續(xù)除以2,直到商為0……” 現(xiàn)在商是3,不是0,所以繼續(xù)除以2。 那就: 3 ÷ 2, 得到商是1,余數(shù)是1。 “將商繼續(xù)除以2,直到商為0……” 現(xiàn)在商是1,不是0,所以繼續(xù)除以
19、2。 那就: 1 ÷ 2, 得到商是0,余數(shù)是1 “將商繼續(xù)除以2,直到商為0……最后將所有余數(shù)倒序排列” ?,F(xiàn)在商已經(jīng)是0。 三次計(jì)算依次得到余數(shù)分別是:0、1、1,將所有余數(shù)倒序排列,就是:110。</p><p> 6轉(zhuǎn)換成二進(jìn)制,結(jié)果是110。</p><p><b> 表1 轉(zhuǎn)換方式</b></p><p> ?。ㄔ谟?jì)
20、算機(jī)中,÷用 / 來(lái)表示) </p><p> 2. 二 ----> 十</p><p> 二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) :二進(jìn)制數(shù)第0位的權(quán)值是2的0次方,第1位的權(quán)值是2的1次方…… 所以,設(shè)有一個(gè)二進(jìn)制數(shù):0110 0100,轉(zhuǎn)換為10進(jìn)制為: </p><p><b> 下面是豎式: </b></p>&l
21、t;p> 0110 0100 換算成 十進(jìn)制 </p><p> " ^ " 為次方 </p><p> 第0位 0 * 2^0 = 0 </p><p> 第1位 0 * 2^1 = 0 </p><p> 第2位 1 * 2^2 = 4 </p><p> 第3位 0 * 2^
22、3 = 0 </p><p> 第4位 0 * 2^4 = 0 </p><p> 第5位 1 * 2^5 = 32 </p><p> 第6位 1 * 2^6 = 64 </p><p> 第7位 0 * 2^7 = 0 + </p><p> 公式:第N位10^(N-1) </p><
23、p> --------------------------- </p><p><b> 100 </b></p><p><b> 用橫式計(jì)算為: </b></p><p> 0 * 2 ^ 0 + 0 * 2 ^ 1 + 1 * 2 ^ 2 + 0 * 2 ^ 3 + 0 * 2 ^ 4 + 1 * 2
24、^ 5 + 1 * 2 ^ 6 + 0 * 2 ^ 7 = 100 </p><p> 0乘以多少都是0,所以我們也可以直接跳過(guò)值為0的位: </p><p> 1 * 2 ^ 2 + 1 * 2 ^ 5 + 1 * 2 ^ 6 = 100 </p><p> 3. 十 ----> 八</p><p> 10進(jìn)制數(shù)轉(zhuǎn)換成8進(jìn)制的
25、方法,和轉(zhuǎn)換為2進(jìn)制的方法類(lèi)似,唯一變化:除數(shù)由2變成8。 </p><p> 將十進(jìn)制數(shù)120轉(zhuǎn)換成八進(jìn)制數(shù): </p><p><b> 用表格表1示:</b></p><p><b> 表2 轉(zhuǎn)換方式</b></p><p> 120轉(zhuǎn)換為8進(jìn)制,結(jié)果為:170。 </p>
26、;<p> 4. 八 ----> 十</p><p> 八進(jìn)制就是逢8進(jìn)1。 八進(jìn)制數(shù)采用 0~7這八數(shù)來(lái)表達(dá)一個(gè)數(shù)。 </p><p> 八進(jìn)制數(shù)第0位的權(quán)值為8的0次方,第1位權(quán)值為8的1次方,第2位權(quán)值為8的2次方…… 所以,設(shè)有一個(gè)八進(jìn)制數(shù):1507,轉(zhuǎn)換為十進(jìn)制為: </p><p><b> 用豎式表示: </
27、b></p><p> 1507換算成十進(jìn)制。 </p><p> 第0位 7 * 8^0 = 7 </p><p> 第1位 0 * 8^1 = 0 </p><p> 第2位 5 * 8^2 = 320 </p><p> 第3位 1 * 8^3 = 512 </p><p>
28、; -------------------------- </p><p><b> 839 </b></p><p> 同樣,也可以用橫式直接計(jì)算: 7 * 8^0 + 0 * 8^1 + 5 * 8^2 + 1 * 8^3 = 839 </p><p> 結(jié)果是,八進(jìn)制數(shù) 1507 轉(zhuǎn)換成十進(jìn)制數(shù)為 839 </p>
29、<p> 5. 十 ----> 十六</p><p> 10進(jìn)制數(shù)轉(zhuǎn)換成16進(jìn)制的方法,和轉(zhuǎn)換為2進(jìn)制的方法類(lèi)似,唯一變化:除數(shù)由2變成16。 同樣是120,轉(zhuǎn)換成16進(jìn)制則為,如表2:</p><p><b> 表3 轉(zhuǎn)換方式</b></p><p> 120轉(zhuǎn)換為16進(jìn)制,結(jié)果為:78。 </p>&
30、lt;p> 6. 十六----> 十</p><p> 16進(jìn)制就是逢16進(jìn)1,但我們只有0~9這十個(gè)數(shù)字,所以我們用A,B,C,D,E,F(xiàn)這六個(gè)字母來(lái)分別表示10,11,12,13,14,15。字母不區(qū)分大小寫(xiě)。 </p><p> 十六進(jìn)制數(shù)的第0位的權(quán)值為16的0次方,第1位的權(quán)值為16的1次方,第2位的權(quán)值為16的2次方…… </p><p&g
31、t; 所以,在第N(N從0開(kāi)始)位上,如果是是數(shù) X (X 大于等于0,并且X小于等于 15,即:F)表示的大小為 X * 16的N次方。 </p><p> 假設(shè)有一個(gè)十六進(jìn)數(shù) 2AF5, 那么如何換算成10進(jìn)制呢? </p><p><b> 用豎式計(jì)算: </b></p><p> 2AF5換算成10進(jìn)制: </p>
32、<p> 第0位: 5 * 16^0 = 5 </p><p> 第1位: F * 16^1 = 240 </p><p> 第2位: A * 16^2 = 2560 </p><p> 第3位: 2 * 16^3 = 8192 + </p><p> ----------------------------------
33、--- </p><p><b> 10997 </b></p><p> 直接計(jì)算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 </p><p> (在上面的計(jì)算中,A表示10,而F表示15) </p><p> 現(xiàn)在可以看出,所有進(jìn)制換算成10進(jìn)制
34、,關(guān)鍵在于各自的權(quán)值不同。 十進(jìn)數(shù) 1234可以給這么一個(gè)算式: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 </p><p> 7. 二 ----> 八</p><p> (11001.101)(二) </p><p> 整數(shù)部分: 從后往前每三位一組,缺位處用0填補(bǔ),然后按十進(jìn)制方法進(jìn)行轉(zhuǎn)化, 則
35、有: </p><p><b> 001=1 </b></p><p><b> 011=3 </b></p><p> 然后將結(jié)果按從下往上的順序書(shū)寫(xiě)就是:31,那么這個(gè)31就是二進(jìn)制11001的八進(jìn)制形式 </p><p> 小數(shù)部分: 從前往后每三位一組,缺位處用0填補(bǔ),然后按十進(jìn)制方
36、法進(jìn)行轉(zhuǎn)化, 則有: 101=5 </p><p> 然后將結(jié)果部分按從上往下的順序書(shū)寫(xiě)就是:5,那么這個(gè)5就是二進(jìn)制0.101的八進(jìn)制形式 所以:(11001.101)(二)=(31.5)(八) </p><p> 8. 八 ----> 二</p><p> ?。?1.5)(八) </p><p> 整數(shù)部分:從后往前每一位按十
37、進(jìn)制轉(zhuǎn)化方式轉(zhuǎn)化為三位二進(jìn)制數(shù),缺位處用0補(bǔ)充 則有: </p><p> 1---->1---->001 </p><p><b> 3---->11 </b></p><p> 然后將結(jié)果按從下往上的順序書(shū)寫(xiě)就是:11001,那么這個(gè)11001就是八進(jìn)制31的二進(jìn)制形式 ,小數(shù)部分:從前往后每一位按十進(jìn)制轉(zhuǎn)化方式轉(zhuǎn)化
38、為三位二進(jìn)制數(shù),缺位處用0補(bǔ)充 則有: </p><p> 5---->101 </p><p> 然后將結(jié)果按從下往上的順序書(shū)寫(xiě)就是:101,那么這個(gè)101就是八進(jìn)制5的二進(jìn)制形式 </p><p> 所以:(31.5)(八)=(11001.101)(二) </p><p> 9. 十六 ----> 二 ;二 ----&
39、gt; 十六</p><p> 二進(jìn)制和十六進(jìn)制的互相轉(zhuǎn)換。直接就能轉(zhuǎn)換為十六進(jìn)制數(shù),反之亦然。 </p><p> 首先一個(gè)二進(jìn)制數(shù):如:1111, </p><p> 計(jì)算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。 </p><
40、;p> 由于1111才4位,所以必須直接記住它每一位的權(quán)值,并且是從高位往低位記,:8、4、2、1。即,最高位的權(quán)值為2^3 = 8,然后依次是 2^2 = 4,2^1=2, 2^0 = 1。 對(duì)于任意一個(gè)4位的二進(jìn)制數(shù),都可以很快算出它對(duì)應(yīng)的10進(jìn)制值。 </p><p> 下列列出四位二進(jìn)制數(shù) xxxx 所有可能的值 </p><p> 僅4位的2進(jìn)制數(shù) 快速計(jì)算方法 十進(jìn)
41、制值 十六進(jìn)值 </p><p> 1111 = 8 + 4 + 2 + 1 = 15 F </p><p> 1110 = 8 + 4 + 2 + 0 = 14 E </p><p> 1101 = 8 + 4 + 0 + 1 = 13 D </p><p> 1100 = 8 + 4 + 0 + 0 = 12 C </p&g
42、t;<p> 1011 = 8 + 0 + 2+ 1 = 11 B </p><p> 1010 = 8 + 0 + 2 + 0 = 10 A </p><p> 1001 = 8 + 0 + 0 + 1 = 9 9 </p><p><b> .... </b></p><p> 0001 =
43、0 + 0 + 0 + 1 = 1 1 </p><p> 0000 = 0 + 0 + 0 + 0 = 0 0 </p><p> 二進(jìn)制數(shù)要轉(zhuǎn)換為十六進(jìn)制,就是以4位一段,分別轉(zhuǎn)換為十六進(jìn)制。 </p><p> 如(上行為二制數(shù),下面為對(duì)應(yīng)的十六進(jìn)制): </p><p> 1111 1101 , 1010 0101 , 100
44、1 1011 </p><p> F D , A 5 , 9 B </p><p> 反過(guò)來(lái),當(dāng)看到 FD時(shí),如何迅速將它轉(zhuǎn)換為二進(jìn)制數(shù) ,先轉(zhuǎn)換F: F,需知道是15,然后15用8421湊,應(yīng)該是8 + 4 + 2 + 1,所以四位全為1 :1111。 接著轉(zhuǎn)換 D: 看到D,知道它是13,13用8421湊,應(yīng)該是:8 + 4 + 1,即:1101。 所以,FD轉(zhuǎn)換為二進(jìn)制數(shù),為:
45、1111 1101 </p><p> 由于十六進(jìn)制轉(zhuǎn)換成二進(jìn)制相當(dāng)直接,所以,需要將一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成2進(jìn)制數(shù)時(shí),也可以先轉(zhuǎn)換成16進(jìn)制,然后再轉(zhuǎn)換成2進(jìn)制。 比如,十進(jìn)制數(shù) 1234轉(zhuǎn)換成二制數(shù),如果要一直除以2,直接得到2進(jìn)制數(shù),需要計(jì)算較多次數(shù)。所以可以先除以16,得到16進(jìn)制數(shù)。如表4: </p><p><b> 表4 轉(zhuǎn)換方式</b></p&
46、gt;<p> 結(jié)果16進(jìn)制為: 0x4D2 </p><p> 然后可直接寫(xiě)出0x4D2的二進(jìn)制形式: 0100 1101 0010。 其中對(duì)映關(guān)系為: </p><p> 0100 -- 4 </p><p> 1101 -- D </p><p> 0010 -- 2 </p><p>
47、 同樣,如果一個(gè)二進(jìn)制數(shù)很長(zhǎng),需要將它轉(zhuǎn)換成10進(jìn)制數(shù)時(shí),除了前面學(xué)過(guò)的方法是,還可以先將這個(gè)二進(jìn)制轉(zhuǎn)換成16進(jìn)制,然后再轉(zhuǎn)換為10進(jìn)制。 </p><p> 下面舉例一個(gè)int類(lèi)型的二進(jìn)制數(shù): 01101101 11100101 10101111 00011011 </p><p> 按四位一組轉(zhuǎn)換為16進(jìn)制: 6D E5 AF 1B 。再轉(zhuǎn)換為10進(jìn)制:6*16^7+D*16^6+
48、E*16^5+5*16^4+A*16^3+F*16^2+1*16^1+B*16^0=1,843,769,115 </p><p><b> 1.2 基本功能</b></p><p> 在本設(shè)計(jì)中能夠?qū)崿F(xiàn)按鍵輸入、軟件的數(shù)據(jù)處理、輸出顯示的基本功能。</p><p> 1、按鍵輸入:在硬件中有案件模塊。上面有4*4的按鍵矩陣。輸入的數(shù)據(jù)包括
49、0~9數(shù)字、確認(rèn)、取消等鍵功能。當(dāng)按下相應(yīng)的數(shù)字或功能鍵時(shí),信號(hào)會(huì)傳入單片機(jī),單片機(jī)會(huì)做出相應(yīng)的反應(yīng)。再由顯示屏顯示出結(jié)果。</p><p> 2、數(shù)據(jù)處理:通過(guò)按鍵的輸入,數(shù)據(jù)傳入芯片。芯片會(huì)按照輸入的程序運(yùn)行方式處理數(shù)據(jù)。最后將計(jì)算結(jié)果輸出給顯示屏。</p><p> 3、輸出顯示:通過(guò)按鍵的輸入軟件的處理。會(huì)將輸入的數(shù)字或者軟件計(jì)算的數(shù)據(jù)按照規(guī)定的方式顯示在相應(yīng)的位置。</
50、p><p><b> 下圖為系統(tǒng)結(jié)構(gòu)圖:</b></p><p> 圖1-2 系統(tǒng)結(jié)構(gòu)框圖</p><p> 4、操作說(shuō)明:當(dāng)按下SB1~SB10中的鍵就輸入相應(yīng)的數(shù)字,在LCD上也會(huì)顯示相應(yīng)的數(shù)。當(dāng)需轉(zhuǎn)換進(jìn)制時(shí)先決定你輸入的數(shù)是那種類(lèi)型,在此只涉及到了十進(jìn)制轉(zhuǎn)換成二進(jìn)制、十六進(jìn)制。開(kāi)發(fā)方向可以向二進(jìn)制轉(zhuǎn)換成十進(jìn)制、八進(jìn)制、十六進(jìn)制。八進(jìn)制轉(zhuǎn)
51、換成二進(jìn)制、十進(jìn)制、十六進(jìn)制。現(xiàn)在只需輸入相應(yīng)的十進(jìn)制數(shù)。數(shù)字輸入完后,按下轉(zhuǎn)換的“確認(rèn)”鍵。則輸入的十進(jìn)制就轉(zhuǎn)換成二進(jìn)制和八進(jìn)制。</p><p><b> 1.3本章小結(jié)</b></p><p> 本章主要介紹了本次設(shè)計(jì)的方向,以及確定轉(zhuǎn)換方式和轉(zhuǎn)換流程。同時(shí)也敘述了操作方式和得出的結(jié)果。</p><p> 第二章 系統(tǒng)模塊介紹<
52、;/p><p><b> 2.1 主控模塊</b></p><p> 在本次設(shè)計(jì)中使用AT89S52芯片:</p><p> AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)
53、可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。</p><p> 圖 2-1 AT89S52芯片以及引腳結(jié)構(gòu)圖</p><p><b> 2. 2 引腳說(shuō)明</b></p><p> MCS單片機(jī)都采用40引腳的雙列直插封裝方式
54、。如圖為引腳排列圖,圖中引腳可以分為以下四類(lèi):電源類(lèi)引腳2個(gè)、時(shí)鐘類(lèi)引腳2個(gè)、并行I/O類(lèi)引腳32個(gè)、控制類(lèi)引腳4個(gè)。</p><p><b> 電源類(lèi)引腳:</b></p><p> Vss 20號(hào)引腳Vss為電源接地端。</p><p> ?、?Vcc 40號(hào)引腳Vcc是芯片電源的輸入端,接+5V電源。</p>
55、<p><b> 時(shí)鐘類(lèi)引腳:</b></p><p> ?、?XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個(gè)引腳。當(dāng)采用外部振蕩器時(shí),此引腳接地。</p><p> ?、?XTAL2內(nèi)部振蕩電路反相放大器的輸出端,是外接晶體的另一端。當(dāng)采用外部振蕩器時(shí),此引腳接外部振蕩源。 </p><p><b&g
56、t; 控制類(lèi)引腳:</b></p><p> ?、?RST/VPD當(dāng)振蕩器運(yùn)行時(shí),在此引腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平(由低到高跳變),將使單片機(jī)復(fù)位。</p><p> ② ALE 正常操作時(shí)為ALE功能(允許地址鎖存)提供把地址的低字節(jié)鎖存到外部鎖存器。 </p><p> ?、跴SEN 外部程序存儲(chǔ)器讀選通信號(hào)輸出端,在從外部程序存儲(chǔ)取指令(或
57、數(shù)據(jù))期間,在每個(gè)機(jī)器周期內(nèi)兩次有效。同樣可以驅(qū)動(dòng)八LSTTL輸入。</p><p> ?、?/Vpp 為內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器的選擇端。當(dāng)/Vpp為</p><p> 高電平時(shí),訪 問(wèn)內(nèi)部程序存儲(chǔ)器;當(dāng)/Vpp 為低電平時(shí),則訪問(wèn)外部程序存儲(chǔ)器。</p><p><b> 并行I/O類(lèi)引腳:</b></p><
58、p> ① P0口(P0.0 - P0.7)</p><p> P0口(P0.0 - P0.7)是一個(gè)8位漏極開(kāi)路型雙向I/O口,在訪問(wèn)外部存儲(chǔ) 器時(shí),它是分時(shí)傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載。</p><p> ?、?P1口(P1.0 - P1.7)</p><p> P1口(P1.0 - P1.7)是一個(gè)帶有內(nèi)
59、部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。。</p><p> ?、?P2口(P2.0 - P2.7)</p><p> P2口(P2.0 - P2.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口,在訪問(wèn)外部存儲(chǔ)器時(shí),它輸出高8位地址。P2口可以驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。</p><p> ?、?P3口(P3.0
60、- P3.7)</p><p> P3口(P3.0 - P3.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。</p><p> 2.3 主控模塊設(shè)計(jì)</p><p> 電源、時(shí)鐘信號(hào)以及復(fù)位電路是單片機(jī)工作的基本條件,缺一不可。單片機(jī)基本系統(tǒng)——包括:電源電路、時(shí)鐘電路、復(fù)位電路。</p><p><b> 圖2-2 主控
61、電路</b></p><p> 2.3.1 電源電路模塊設(shè)計(jì)</p><p> 電源模塊:提供+5V電源,系統(tǒng)板為從USB接口獲取+5V電源,只要用相應(yīng)配套的USB線從電腦主機(jī)獲取+5V直流電源。</p><p> 2.3.2 時(shí)鐘電路模塊設(shè)計(jì)</p><p> 單片機(jī)的時(shí)鐘信號(hào)用來(lái)為單片機(jī)芯片內(nèi)部各種微操作提供時(shí)間基準(zhǔn)。
62、</p><p> MCS-51的時(shí)鐘信號(hào)產(chǎn)生方式:</p><p> ?、?內(nèi)部時(shí)鐘方式,利用芯片內(nèi)部的振蕩電路;</p><p> ?、?外部時(shí)鐘方式。</p><p> 圖 2-3 時(shí)鐘電路</p><p> 由于AT89S52單片機(jī)芯片內(nèi)有時(shí)鐘振蕩電路,因此本項(xiàng)目中采用內(nèi)部時(shí)鐘方式。只要在單片機(jī)的XT
63、AL1和XTAL2引腳外接石英晶體和微調(diào)電容,就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時(shí)鐘脈沖信號(hào),具體電路設(shè)計(jì)如圖所示。圖中電容C1和C2的作用是穩(wěn)定頻率和快速起振,電容置在5~30pF,在此選擇30pF;晶振X1的振蕩頻率范圍在1.2~12MHz間選擇,本項(xiàng)目中選擇12MHz。</p><p> 時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列,作為單片機(jī)工作的時(shí)間基準(zhǔn),典型的晶體振蕩頻率為12MHz。</p>
64、<p> 2.3.3 復(fù)位電路模塊設(shè)計(jì)</p><p> 圖 2-4 復(fù)位電路</p><p> 復(fù)位電路使單片機(jī)或系統(tǒng)中的其他部件處于某種確定的狀態(tài)。當(dāng)在51單片機(jī)的RST引腳引入高電平并保持2個(gè)機(jī)器周期,單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作。</p><p><b> 復(fù)位操作基本形式:</b></p><p>
65、;<b> 上電復(fù)位;</b></p><p> ?、?另一種是按鍵復(fù)位。</p><p> 2.4 LCD顯示模塊</p><p> 圖 2-5 LCD引腳圖</p><p> LCD1602型液晶顯示的外部接口信號(hào)有16條,與AT89S52芯片的接口有8條數(shù)據(jù)線DB0~DB7、3條控制線RS、RW、E,見(jiàn)表
66、5:</p><p> 表5 LCD液晶引腳功能表</p><p> 1602LCD 顯示模塊可以與AT89S52單片機(jī)直接接口,1602LCD的8位雙向數(shù)據(jù)線D0—D7連接P0口的P0.0—P0.7,1602LCD使能信號(hào)E連接P2口線的P2.2;1602LCD讀/寫(xiě)選擇信號(hào)R/W連接P2口線的P2.1,當(dāng)P2.1=0為寫(xiě)數(shù)據(jù)信號(hào),當(dāng)P2.1=1為讀數(shù)據(jù)信號(hào);1602LCD數(shù)據(jù)/命
67、令選擇信號(hào)RS連接P2口線的P2.0,當(dāng)P2.0=0為命令信號(hào);當(dāng)P2.0=1為數(shù)據(jù)信號(hào);1602LCD的VCC引腳接+5電源,引腳GND接地。見(jiàn)圖2-6:</p><p> 圖 2-6 LCD顯示模塊與單片機(jī)的接口電路原理圖</p><p><b> 2. 5 按鍵模塊</b></p><p> AT89S52單片機(jī)的P1口用作鍵盤(pán)I
68、/O口,鍵盤(pán)的列線接到P1口的低4位,鍵盤(pán)的行線接到P1口的高4位。列線P1.0—P1.3分別接有4個(gè)上拉電阻到正電源+5V,并把列線P1.0—P1.3設(shè)置為輸入線,行線P1.4—P1.7設(shè)置為輸出線。4根行線和4根列線形成16個(gè)相交點(diǎn)。見(jiàn)圖2-7:</p><p> 圖2-7 鍵盤(pán)模塊與單片機(jī)的接口電路原理圖</p><p> 列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)的I/O口作為
69、輸出端,而列線所接的I/O口則作為輸入端。這樣,當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。</p><p> 圖 2-8 系統(tǒng)整體原理圖</p><p><b> 2.6 本章小結(jié)</b></p><p> 本章主要介紹了主
70、控模塊、按鍵模塊、顯示模塊和復(fù)位電路、時(shí)鐘電路。同時(shí)也說(shuō)明了各個(gè)模塊的引腳的連接方法和引腳說(shuō)明。</p><p> 第三章 系統(tǒng)硬件設(shè)計(jì)—實(shí)驗(yàn)板介紹</p><p><b> 3.1 硬件總圖</b></p><p><b> 圖3-1硬件總圖</b></p><p> 通過(guò)焊接得到如圖的硬
71、件圖,按鍵是4*4鍵陣,LCD為1602A型</p><p><b> 3.2主控硬件模塊</b></p><p><b> 圖 3-2主控硬件</b></p><p> 主控模塊包括時(shí)鐘電路、復(fù)位電路、濾波電路、按鍵插排、LCD插排等。</p><p> 3.3按鍵硬件模塊化</p&
72、gt;<p><b> 圖3-3按鍵實(shí)物圖</b></p><p> 本電路采用4輸入與門(mén)用于產(chǎn)生鍵盤(pán)中斷,其輸入端與各行線相連,輸出端接至89s52的外部中斷輸入端。當(dāng)有鍵閉合時(shí),使某條列線為低電平,如果這條列線上沒(méi)有閉合鍵,則各行線的狀態(tài)都為高電平;如果列線上有鍵閉合,則相應(yīng)的那條行線即變?yōu)榈碗娖?。于是就可以根?jù)行線號(hào)與列線號(hào)計(jì)算出閉合鍵的鍵碼。</p>
73、<p> 3.4 LCD顯示硬件模塊化</p><p> 圖3-4 LCD顯示</p><p> 本設(shè)計(jì)采用1602型LCD,在初始狀態(tài)下LCD顯示hix: dec: bit:當(dāng)鍵盤(pán)有輸入時(shí)dec:會(huì)顯示輸入相應(yīng)的數(shù)字。當(dāng)按鍵輸入有“確定”鍵時(shí)LCD上的hix:和bit:將會(huì)出現(xiàn)相應(yīng)轉(zhuǎn)換的數(shù)字。</p><p><b> 3.5本章小結(jié)&
74、lt;/b></p><p> 本章主要介紹硬件。經(jīng)過(guò)自己的努力焊接出來(lái)以上的硬件圖,并能夠調(diào)試成功,完成本次設(shè)計(jì)任務(wù)。不僅在其中獲得了知識(shí),而且也使自己更加充實(shí)。在過(guò)程中雖然遇到了不少的阻礙,但自己依然克服困難完成了本次硬件設(shè)計(jì)、焊接。增強(qiáng)了信心也考驗(yàn)了自己的個(gè)人能力。</p><p> 第四章 系統(tǒng)軟件設(shè)計(jì)</p><p><b> 4.1
75、數(shù)據(jù)單元分配</b></p><p><b> 表6 數(shù)據(jù)分配表</b></p><p><b> LCD控制命令集</b></p><p> 表7 LCD指令表</p><p><b> 按鍵數(shù)據(jù)分配表</b></p><p>
76、 表8 按鍵數(shù)據(jù)分配表</p><p> 4.2主程序設(shè)計(jì)流程圖</p><p> 圖 4-1 程序流程圖</p><p><b> 4.3程序說(shuō)明</b></p><p> 在本設(shè)計(jì)中程序采用C語(yǔ)言編程。涉及到數(shù)學(xué)計(jì)算、數(shù)學(xué)公式以及數(shù)學(xué)符號(hào)。</p><p> 4.3.1包含數(shù)據(jù)庫(kù)&
77、lt;/p><p> C語(yǔ)言編程涉及到數(shù)據(jù)庫(kù)的包含。在本程序中包含:</p><p> #include <REG51.H> </p><p> #include <math.H></p><p> 4.3.2 程序初始化</p><p> 程序初始化包括AT89S52的初始化、液晶
78、顯示屏初始化和清屏。芯片初始化包括:I\O輸入 sbit dec=P1^1; 時(shí)能端口sbit b=P1^2。液晶初始化包括:設(shè)置工作方式、顯示狀態(tài)設(shè)置、輸入工作方式、設(shè)置地址、清屏。(xzl(0x38);xzl(0x0c);xzl(0x06);xzl(0x80);xzl(0x01)</p><p> 4.3.3 字符串顯示</p><p> 在初始時(shí)LCD會(huì)顯示字符串hex、dec、
79、bit。(uc code nn[]={"hex:"};uc code qq[]={"dec:"};uc code wn[]={"bit:"};)。在輸入字符包括:1~9~f({uc code mm[]="0123456789ABCDEF";)</p><p> 4.3.4 實(shí)現(xiàn)計(jì)算設(shè)定</p><p> 在
80、本設(shè)計(jì)中將要涉及數(shù)學(xué)乘除法運(yùn)算:十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),是連續(xù)除2的過(guò)程:把要轉(zhuǎn)換的數(shù),除以2,得到商和余數(shù), 將商繼續(xù)除以2,直到商為0。最后將所有余數(shù)倒序排列,得到數(shù)就是轉(zhuǎn)換結(jié)果。十進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制,同十進(jìn)制轉(zhuǎn)換成二進(jìn)制類(lèi)似。(erjz[i]=m%2; m=m/2;“%”表示除法取余數(shù),“/”表示除法。)</p><p><b> 4.4本章小結(jié)</b></p>&l
81、t;p> 通過(guò)畫(huà)程序流程圖,確定程序書(shū)寫(xiě)的大體方向。再通過(guò)查閱資料、請(qǐng)教老師等之后書(shū)寫(xiě)各個(gè)模塊的程序,在未完成所有程序時(shí),可以用protuse仿真軟件試驗(yàn)各個(gè)模塊程序是否正確。當(dāng)完成程序書(shū)寫(xiě)同樣用protuse仿真。首先需要建仿真硬件圖。照程序書(shū)寫(xiě)的使能端和I\O口連接仿真電路圖。后寫(xiě)入程序查看是否是自己想要的結(jié)果,如果不是。檢查程序書(shū)寫(xiě)和仿真電路圖,確認(rèn)無(wú)誤則程序書(shū)寫(xiě)成功。硬件的焊接也可以仿照仿真電路圖焊接。能夠保證焊接無(wú)誤。
82、確定硬件和程序無(wú)誤時(shí),可以通過(guò)燒寫(xiě)軟件寫(xiě)入單片機(jī),并連接好硬件。接通電源,調(diào)試硬件的到相應(yīng)效果即可。</p><p><b> 第五章 系統(tǒng)調(diào)試</b></p><p><b> 5.1硬件調(diào)試</b></p><p> 硬件焊接以模塊化的方法焊接,便于排錯(cuò)。模塊分為主控模塊、按鍵模塊、LCD顯示模塊。各個(gè)模塊風(fēng)別焊
83、接在三塊電路板中,用排線連接起來(lái)。在調(diào)試時(shí)首先在芯片上燒寫(xiě)有關(guān)LCD顯示的程序,將主控模塊和LCD顯示模塊用排線連接好并接上電源。查看LCD顯示是不是程序中應(yīng)有的顯示。如果是,則就說(shuō)明主控模塊和LCD模塊都調(diào)試成功,如果不是或者不顯示著就要仔細(xì)排查焊接線路和排線連接線路。接著將按鍵模塊用排線連接與主控模塊連接,重新燒寫(xiě)有關(guān)按鍵掃描并通過(guò)LCD顯示出相應(yīng)的字符的程序。接通電源,查看按鍵是否能夠輸入相應(yīng)字符或者按鍵是否靈敏等,在LCD上觀看
84、顯示是否正確。如果正確則調(diào)試成功。如果不正確則繼續(xù)調(diào)試。</p><p> 圖 5-1 LCD和按鍵調(diào)試圖</p><p><b> 5.2軟件調(diào)試</b></p><p> 軟件書(shū)寫(xiě)前畫(huà)出程序流程圖,確定程序大體方向。并通過(guò)查閱教材、圖書(shū)書(shū)籍、咨詢老師、朋友等方式尋求幫助。也可以參照《單片機(jī)應(yīng)用技術(shù)及項(xiàng)目化訓(xùn)練》一書(shū)書(shū)寫(xiě)。書(shū)中有關(guān)于案
85、件掃描程序、LCD顯示程序等,可以參考。在書(shū)寫(xiě)程序完成時(shí),可通過(guò)portues仿真軟件仿真。這樣可以查看程序是否正確,不正確則繼續(xù)修改。正確則可以燒寫(xiě)進(jìn)焊接的硬件中去,再次調(diào)試直至顯示、按鍵都能運(yùn)行程序運(yùn)行正確為止。</p><p> 圖 5-2 上圖為protues仿真</p><p><b> 5.3本章小結(jié)</b></p><p>
86、 本章主要介紹了硬件系統(tǒng)和軟件系統(tǒng)的調(diào)試。硬件調(diào)試主要通過(guò)輸入顯示程序和按鍵掃描程序,再接通電源查看顯示是否合符要求。軟件調(diào)試通過(guò)使用portues仿真軟件檢查程序是否正確和能否取得相應(yīng)效果。</p><p><b> 結(jié)束語(yǔ)</b></p><p> 在本設(shè)計(jì)中,通過(guò)自己辛勤的焊接自己出色的完成了硬件的焊接。并能夠調(diào)試成功運(yùn)行相應(yīng)的程序,自己倍感莫大的收獲和欣慰
87、!在老師、同學(xué)、朋友、網(wǎng)絡(luò)的幫助下,自己能夠順利完成程序的書(shū)寫(xiě)。在書(shū)寫(xiě)完成之后,自己能夠編輯到仿真軟件中測(cè)試程序是否有相應(yīng)的效果。在程序完成調(diào)試完成后能夠通過(guò)燒寫(xiě)軟件燒入芯片中,并通過(guò)自己焊接的硬件完成測(cè)試,最后在硬件操作中完成本次設(shè)計(jì)。</p><p> 在完成畢業(yè)設(shè)計(jì)過(guò)程中,認(rèn)識(shí)到學(xué)習(xí)要勤奮,要多尋求幫助,多查閱資料。通過(guò)這一階段的畢業(yè)設(shè)計(jì),我受益匪淺,不僅鍛煉了良好的邏輯思維能力,而且培養(yǎng)了棄而不舍的求學(xué)
88、精神和嚴(yán)謹(jǐn)作風(fēng)。給我的業(yè)務(wù)素質(zhì)、個(gè)人能力的培養(yǎng)提供了一個(gè)難得的機(jī)會(huì),令我回顧這些天來(lái)的設(shè)計(jì)過(guò)程,我學(xué)到許多實(shí)際問(wèn)題的解決方法,為以后在工作崗位上的繼續(xù)深造打下了基礎(chǔ)。此次畢業(yè)設(shè)計(jì),也是大學(xué)三年所學(xué)知識(shí)很好的總結(jié)。</p><p> 此次編制招標(biāo)文件不僅重溫了過(guò)去所學(xué)知識(shí),而且學(xué)到了很多新的內(nèi)容。相信這次畢業(yè)設(shè)計(jì)對(duì)我今后的工作會(huì)有一定的幫助。所以,我很用心的把它完成。在設(shè)計(jì)中體味艱辛,在艱辛中體味快樂(lè)。</
89、p><p> 最后,我要感謝我的指導(dǎo)老師洪震老師,他們對(duì)我的畢業(yè)設(shè)計(jì)進(jìn)行了多次的參考與修改,我的畢業(yè)設(shè)計(jì)才得以順利完成。同樣我也要衷心的感謝教育過(guò)和指導(dǎo)過(guò)我的各位老師,感謝給予我?guī)椭呐笥褌?,?jǐn)獻(xiàn)上我最真摯的祝福。</p><p><b> 致 謝</b></p><p> 將近兩個(gè)月的畢業(yè)論文階段結(jié)束了,在這段時(shí)間里,我得到了許多老師和朋友
90、的關(guān)心和幫助。</p><p> 首先,我要對(duì)我的指導(dǎo)老師向老師誠(chéng)摯的謝意,在整個(gè)做畢業(yè)論文期間,洪震老師無(wú)微不至的關(guān)心我的學(xué)習(xí)和生活,課題遇到困難時(shí)更是關(guān)注著課題的進(jìn)程。洪震老師高深的學(xué)術(shù)造詣、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和勤勉的工作精神以及他平易近人的態(tài)度使我受益終身。</p><p> 在我做畢業(yè)論文期間我的同學(xué)和朋友給予了我很大的幫助,在我遇到困難的時(shí)候,總是不斷給我提出許多有價(jià)值的意見(jiàn),并
91、且經(jīng)常鼓勵(lì)我。</p><p> 感謝我的帶領(lǐng)老師,在課題的進(jìn)行階段給我提出了許多有創(chuàng)新的觀點(diǎn)。</p><p> 最后感謝在我的課題進(jìn)行中給予我?guī)椭乃械呐笥褌儯?</p><p><b> 此致</b></p><p><b> 敬禮</b></p><p>&
92、lt;b> 附錄:程序清單</b></p><p> #include <REG51.H> //包含數(shù)據(jù)庫(kù)</p><p> #include <math.H></p><p> #define keyport P1</p><p> #define uc unsigned char&
93、lt;/p><p> #define ui unsigned int</p><p> sbit hex=P1^0; //I\O輸入</p><p> sbit dec=P1^1;</p><p> sbit b=P1^2; //時(shí)能端口</p><p> sbit rs=P2^
94、0;</p><p> sbit e=P2^2;</p><p> sbit rw=P2^1;</p><p> uc flag3,flag1=0,temp=0,shu=0;</p><p> void xzl(uc temp);</p><p> void xsj(uc temp);</p>
95、<p> void delay(ui z)</p><p><b> {</b></p><p><b> ui x,y;</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p>&l
96、t;p><b> }</b></p><p> void lcdinit(void) //液晶初始化</p><p><b> {</b></p><p> xzl(0x38);</p><p> xzl(0x0c);</p><p> xz
97、l(0x06);</p><p> xzl(0x80);</p><p> xzl(0x01);</p><p><b> }</b></p><p> void lcd(uc i,uc j,uc temp)//液晶顯示</p><p> {uc code mm[]="012
98、3456789ABCDEF";</p><p> xzl(0x80+i+0x40*(j-1));</p><p> xsj(mm[temp]);</p><p><b> }</b></p><p> void lcdstring() //液晶顯示的字符串</p><p&g
99、t;<b> {</b></p><p><b> uc i;</b></p><p> uc code nn[]={"hex:"};</p><p> uc code qq[]={"dec:"};</p><p> uc code wn[]={&q
100、uot;bit:"};</p><p> xzl(0x80);</p><p> for(i=0;i<4;i++)</p><p> xsj(nn[i]);</p><p> xzl(0x88);</p><p> for(i=0;i<4;i++)</p><p>
101、; xsj(qq[i]);</p><p> xzl(0x80+0x40);</p><p> for(i=0;i<4;i++)</p><p> xsj(wn[i]);</p><p><b> }</b></p><p> uc key(void) //讀鍵盤(pán)
102、子程序</p><p><b> {</b></p><p> uc temp,key;</p><p> temp=0xf0;</p><p> keyport=temp;</p><p> temp=keyport;</p><p> temp=temp&a
103、mp;0xf0;</p><p> if(temp==0xf0)</p><p><b> {</b></p><p><b> flag3=0;</b></p><p> return(0xff);</p><p><b> }</b><
104、;/p><p><b> delay(5);</b></p><p> temp=keyport;</p><p> if(temp&0xf0==0x00)</p><p> return(0xff);</p><p> temp=0xfe;</p><p>
105、 keyport=temp;</p><p> temp=keyport;</p><p> temp=temp&0xf0;</p><p> switch(temp)</p><p><b> {</b></p><p> case 0xe0:key=7;break;<
106、/p><p> case 0xd0:key=8;break;</p><p> case 0xb0:key=9;break;</p><p> case 0x70:key=0xff;break;</p><p><b> }</b></p><p> temp=0xfd;</p>
107、<p> keyport=temp;</p><p> temp=keyport;</p><p> temp=temp&0xf0;</p><p> switch(temp)</p><p><b> {</b></p><p> case 0xe0:key=4
108、;break;</p><p> case 0xd0:key=5;break;</p><p> case 0xb0:key=6;break;</p><p> case 0x70:key=0xff;break;</p><p><b> }</b></p><p> temp=0xfb
109、;</p><p> keyport=temp;</p><p> temp=keyport;</p><p> temp=temp&0xf0;</p><p> switch(temp)</p><p><b> {</b></p><p> case
110、 0xe0:key=1;break;</p><p> case 0xd0:key=2;break;</p><p> case 0xb0:key=3;break;</p><p> case 0x70:key=0xff;break;</p><p><b> }</b></p><p>
111、 temp=0xf7;</p><p> keyport=temp;</p><p> temp=keyport;</p><p> temp=temp&0xf0;</p><p> switch(temp)</p><p><b> {</b></p><
112、p> case 0xe0:key=0xff;break;</p><p> case 0xd0:key=0x00;break;</p><p> case 0xb0:key=20;break;</p><p> case 0x70:key=0xff;break;</p><p><b> }</b><
113、;/p><p><b> if(flag3)</b></p><p> return(0xff);</p><p><b> flag3=1;</b></p><p> return(key);</p><p><b> }</b></p&g
114、t;<p> void main(void) //主函數(shù)</p><p><b> {</b></p><p> uc mm,m,i=0,erjz[8],hex[2];</p><p><b> rw=0;</b></p><p> lcdini
115、t();</p><p> lcdstring();</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> mm=key();</b></p><p> if(mm!=0xff)&l
116、t;/p><p><b> {</b></p><p> if(mm!=20)</p><p><b> {</b></p><p> shu=temp*10+mm;</p><p> lcd(13,1,temp);</p><p> lcd(
117、14,1,mm);</p><p><b> temp=mm;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b>
118、; m=shu;</b></p><p><b> i=0;</b></p><p> while(i<8)</p><p><b> {</b></p><p> erjz[i]=m%2;</p><p><b> i++;</
119、b></p><p><b> m=m/2;</b></p><p><b> }</b></p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p> lcd(12-i,2,erjz[
120、i-1]);</p><p><b> }</b></p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p><b> if(i<4)</b></p><p> hex[0]=hex[
121、0]+erjz[i]*pow(2,i);</p><p><b> else</b></p><p> hex[1]=hex[1]+erjz[i]*pow(2,(i-4));</p><p><b> }</b></p><p> lcd(4,1,hex[1]);</p>&l
122、t;p> lcd(5,1,hex[0]);</p><p><b> hex[0]=0;</b></p><p><b> hex[1]=0;</b></p><p><b> }</b></p><p><b> }</b></p&
123、gt;<p><b> }</b></p><p><b> }</b></p><p> void xzl(uc temp) //液晶寫(xiě)指令</p><p><b> {e=0;</b></p><p><b> rs=0;&
124、lt;/b></p><p><b> P0=temp;</b></p><p><b> delay(5);</b></p><p><b> e=1;</b></p><p><b> delay(5);</b></p>&
125、lt;p><b> e=0;</b></p><p><b> }</b></p><p> void xsj(uc temp) //液晶寫(xiě)數(shù)據(jù)</p><p><b> {e=1;</b></p><p><b> rs=1;</
126、b></p><p><b> P0=temp;</b></p><p><b> delay(5);</b></p><p><b> e=1;</b></p><p><b> delay(5);</b></p><p
127、><b> e=0;</b></p><p><b> 參考文獻(xiàn)</b></p><p> [1] 胡漢才.單片機(jī)原理及接口技術(shù)[M].北京:清華大學(xué)出版社,1996.</p><p> [2] 胡健.單片機(jī)原理及接口技術(shù)[M].北京:機(jī)械工業(yè)出版社,2004.</p><p> [
128、3] 胡健.單片機(jī)實(shí)用教程[M].北京:兵器工業(yè)出版社,2001.</p><p> [4] 周行慈.單片機(jī)應(yīng)用程序設(shè)計(jì)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,1991.</p><p> [5] 李廣弟.單片機(jī)基礎(chǔ)[M].修訂本,北京:北京航空航天大學(xué)出版社,2001.</p><p> [6] 李朝青.單片機(jī)原理及接口技術(shù)[M],簡(jiǎn)明修訂版.北京:北京航
129、空航天大學(xué)出版社,1999.</p><p> [7] 李葉紫.MCS-51單片機(jī)應(yīng)用教程[M].北京:清華大學(xué)出版社,2004.</p><p> [8] 朱定華.單片機(jī)原理及接口技術(shù)[M].北京:電子工業(yè)出版社,2001.</p><p> [9] 李庭貴.單片機(jī)應(yīng)用技術(shù)及項(xiàng)目化訓(xùn)練[M].西南交通大學(xué)出版社,2009 </p><p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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è)論文-- 基于51單片機(jī)的搶答器設(shè)計(jì)
- 基于單片機(jī)的畢業(yè)論文-- 基于51單片機(jī)的搶答器設(shè)計(jì)
- 51單片機(jī)畢業(yè)論文--基于mcs-51單片機(jī)的步進(jìn)電機(jī)系統(tǒng)
- 畢業(yè)論文---基于51單片機(jī)的電阻測(cè)量
- 基于51單片機(jī)的智能小車(chē)畢業(yè)論文
- 基于at89s51單片機(jī)單片機(jī)控制空調(diào)溫度系統(tǒng)-畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 基于51單片機(jī)的電器遙控設(shè)計(jì)畢業(yè)論文
- 51單片機(jī)
- 基于51單片機(jī)的數(shù)字lcd顯示畢業(yè)論文
- 基于51單片機(jī)的頻率合成設(shè)計(jì)畢業(yè)論文
- 基于51單片機(jī)的串口通訊系統(tǒng)畢業(yè)論文
- 基于51單片機(jī)的最小系統(tǒng)畢業(yè)論文
- 畢業(yè)論文---基于51單片機(jī)的液晶滾動(dòng)顯示
- 基于51單片機(jī)的時(shí)鐘調(diào)整系統(tǒng)畢業(yè)論文
- 基于51單片機(jī)的智能燈設(shè)計(jì)-畢業(yè)論文
- 基于51單片機(jī)的時(shí)鐘調(diào)整系統(tǒng)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論