單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器_第1頁(yè)
單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器_第2頁(yè)
單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器_第3頁(yè)
單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器_第4頁(yè)
單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告1信息與通信工程學(xué)院信息與通信工程學(xué)院簡(jiǎn)易計(jì)算器簡(jiǎn)易計(jì)算器學(xué) 院(系): 信息與通信工程 專 業(yè): 電子信息工程 學(xué) 生 姓 名: 丁璞 楊一雄 學(xué) 號(hào): 2012131604 指 導(dǎo) 教 師: 劉忠富 完 成 日 期: 大連民族學(xué)院大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告2目 錄一、設(shè)計(jì)任務(wù)和性能指標(biāo).21.1 設(shè)計(jì)任務(wù).21.2 性能指標(biāo).2二.設(shè)計(jì)方案.2三.系統(tǒng)硬件設(shè)計(jì).33.1 單片機(jī)最小系統(tǒng).33.2 鍵盤(pán)接口電路.33.3 數(shù)碼管顯示電路.43.4 錯(cuò)誤報(bào)警電路.5四、系統(tǒng)軟件設(shè)計(jì).64.1

2、鍵盤(pán)掃描子程序設(shè)計(jì).64.2 移位子程序及結(jié)果計(jì)算子程序設(shè)計(jì).104.3 顯示子程序設(shè)計(jì).124.4 主程序設(shè)計(jì).13五、調(diào)試及性能分析.135.1 調(diào)試步驟.135.2 性能分析.14六、心得體會(huì).14參考文獻(xiàn).14附錄 1 系統(tǒng)硬件電路圖.15附錄 2 程序清單.16大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告33一、設(shè)計(jì)任務(wù)和性能指標(biāo)一、設(shè)計(jì)任務(wù)和性能指標(biāo)1.1 設(shè)計(jì)任務(wù) 印刷電路板(要求布局合理,線路清晰),繪出程序流程圖,并給出程 利用單片機(jī)及外圍接口電路(鍵盤(pán)接口和顯示接口電路)設(shè)計(jì)制作一個(gè)計(jì)算器,用 LED 顯示計(jì)算數(shù)值及結(jié)果。要求用 Protel 畫(huà)出系統(tǒng)的

3、電路原理圖(要求以最少組件,實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)所要求的功能),序清單(要求思路清晰,盡量簡(jiǎn)潔,主程序和子程序分開(kāi),使程序有較強(qiáng)的可讀性)。1.2 性能指標(biāo)1. 加法:四位加法,計(jì)算結(jié)果若超過(guò)四位則顯示計(jì)算錯(cuò)誤2. 減法:四位減法,計(jì)算結(jié)果若小于零則顯示計(jì)算錯(cuò)誤3. 乘法:個(gè)位數(shù)乘法4. 除法:整數(shù)除法5. 有清零功能,計(jì)算錯(cuò)誤報(bào)警二二.方案總體設(shè)計(jì)方案總體設(shè)計(jì) 按照系統(tǒng)設(shè)計(jì)的功能的要求,初步確定設(shè)計(jì)系統(tǒng)由主控模塊、顯示模塊、錯(cuò)誤報(bào)警模塊、鍵掃描接口電路共四個(gè)模塊組成,電路系統(tǒng)構(gòu)成框圖如圖 1.1 所示。主控芯片使用 51 系列 AT89C52 單片機(jī),采用高性能的靜態(tài) 80C51 設(shè)計(jì),由先進(jìn)工藝制

4、造,并帶有非易失性 Flash 程序存儲(chǔ)器。它是一種高性能、低功耗的 8 位 COMS 微處理芯片,市場(chǎng)應(yīng)用最多。 鍵盤(pán)電路采用 4*4 矩陣鍵盤(pán)電路。 顯示模塊采用 4 枚共陽(yáng)極數(shù)碼管和 74ls273 鎖存芯片構(gòu)成等器件構(gòu)成。 錯(cuò)誤報(bào)警電路采用 5V 蜂鳴器。系統(tǒng)選用以 STC89C51 單片機(jī)為主控機(jī)。通過(guò)擴(kuò)展必要的外圍接口電路,實(shí)現(xiàn)對(duì)計(jì)算器的設(shè)計(jì)。大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告44 復(fù)位電路晶振圖 2.1 基本結(jié)構(gòu)三三.系統(tǒng)硬件設(shè)計(jì)系統(tǒng)硬件設(shè)計(jì)3.1 單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng)就是支持主芯片正常工作的最小電路部分,包括主控芯片、復(fù)位電路和晶振電路。主

5、控芯片選取 STC89C52RC 芯片,因其具有良好的性能及穩(wěn)定性,價(jià)格便宜應(yīng)用方便。晶振選取 11.0592MHz,晶振旁電容選取 30pF。采用按鍵復(fù)位電路,電阻分別選取 100 和 10K,電容選取 10F。以下為單片機(jī)最小系統(tǒng)硬件電路圖。44 矩陣鍵盤(pán)單片機(jī)顯示電路大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告55圖 3.1 單片機(jī)最小系統(tǒng)3.2 鍵盤(pán)接口電路 計(jì)算器所需按鍵有: 數(shù)字鍵:1,2,3,4,5,6,7,8,9,0 功能鍵:+, - , *, / , = , C( 清零) 共計(jì) 16 個(gè)按鍵,采用 4*4 矩陣鍵盤(pán),鍵盤(pán)的行和列之間都有公共端相連,四行和四

6、列的 8 個(gè)公共端分別接 P1.0P1.7,這樣掃描 P1 口就可以完成對(duì)矩陣鍵盤(pán)的掃描,通過(guò)對(duì) 16 個(gè)按鍵進(jìn)行編碼,從而得到鍵盤(pán)的口地址,對(duì)比 P1 口德掃描結(jié)果和各按鍵的地址,我們就可以得到是哪個(gè)鍵按下,從而完成鍵盤(pán)的功能。 以下為鍵盤(pán)接口電路的硬件電路圖大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告66圖 3.2 矩陣鍵盤(pán)內(nèi)部電路3.3 LCD 顯示模塊:本設(shè)計(jì)采用 LCD 液晶顯示器來(lái)顯示輸出數(shù)據(jù)通過(guò) D0-D7 引腳向 LCD 寫(xiě)指令字或?qū)憯?shù)據(jù)以使 LCD 實(shí)現(xiàn)不同的功能或顯示相應(yīng)數(shù)據(jù)在與單片機(jī)最小系統(tǒng)連接時(shí),采用并行連接方式,此方式的特點(diǎn)是傳輸速度快。并行接口的

7、輸入由 p0.0-p0.7 進(jìn)行控制,傳輸信息。LCD 顯示使用了兩片極化材料,在它們之間是液體水晶溶液。電流通過(guò)該液體時(shí)會(huì)使水晶重新排列,以使光線無(wú)法透過(guò)它們。因此,每個(gè)水晶就像百葉窗,既能允許光線穿過(guò)又能擋住光線。LCD 也就顯示具有直角顯示、低耗電量、體積小、還是零輻射等優(yōu)點(diǎn)。大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告77圖 3.3 LCD 顯示電路3.4 錯(cuò)誤報(bào)警電路 錯(cuò)誤報(bào)警電路就是在計(jì)算結(jié)果出現(xiàn)錯(cuò)誤時(shí)或輸入數(shù)據(jù)出現(xiàn)錯(cuò)誤時(shí),發(fā)出聲音警報(bào),提示使用者錯(cuò)誤出現(xiàn)。這里就采用 5V 蜂鳴器作為報(bào)警設(shè)備,利用 PNP 三極管對(duì)蜂鳴器進(jìn)行驅(qū)動(dòng),有P2.2 對(duì)其進(jìn)行控制,這樣

8、在出現(xiàn)錯(cuò)誤的同時(shí)用 P2.2 輸出低,就可以使蜂鳴器工作,完成報(bào)警任務(wù)。在編寫(xiě)程序時(shí),報(bào)警電路實(shí)現(xiàn)的功能是:當(dāng)計(jì)算正常時(shí)使 p2.2 口輸出高電平時(shí),蜂鳴器不會(huì)響應(yīng)。當(dāng)計(jì)算出現(xiàn)錯(cuò)誤(例如 0 作為被除數(shù)時(shí))此時(shí)給 p2.2 輸出低電平,使蜂鳴器響應(yīng),達(dá)到報(bào)警功能。 以下為報(bào)警電路硬件電路圖大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告88圖 3.4 報(bào)警電路 四系統(tǒng)軟件設(shè)計(jì)四系統(tǒng)軟件設(shè)計(jì) 首先初始化參數(shù);然后掃描鍵盤(pán)看是否有鍵輸入,若有,讀取鍵碼;判斷鍵碼是數(shù)字鍵、清零鍵還是功能鍵(“+”“-”“*”“/”“=”),是數(shù)值鍵則送數(shù)碼管顯示并保存數(shù)值,是清零鍵則做清零處理,是功

9、能鍵則又判斷是“=”還是運(yùn)算鍵,若是“=”則計(jì)算最后結(jié)果并送數(shù)碼管顯示,若是其它功能鍵則不顯示。(其中里面包含了延時(shí)去抖動(dòng)程序)。 大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告99開(kāi)始初始化清零鍵和功能鍵輸入是否是數(shù)字鍵?是否圖 4.1 程序流程圖4.1 鍵盤(pán)掃描子程序設(shè)計(jì) 要進(jìn)行數(shù)據(jù)的計(jì)算就必須先進(jìn)行數(shù)據(jù)的輸入,也就必須確定按鍵輸入的數(shù)值是什么,這就需要對(duì)鍵盤(pán)進(jìn)行掃描,從而確定究竟是哪個(gè)鍵按下。是否是運(yùn)算鍵?清零鍵數(shù)碼管不顯示數(shù)碼管顯示數(shù)字計(jì)算數(shù)碼管顯示結(jié)果數(shù)字鍵是否否大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告1010 對(duì)于鍵盤(pán)的掃描,既可以用行掃描

10、也可以用列掃描,這里采用行掃描的方法來(lái)完成對(duì)鍵盤(pán)的掃描。 行掃描就是逐行掃描鍵盤(pán),看是哪一行有鍵按下,再通過(guò)返回的鍵碼來(lái)確定究竟是哪個(gè)按鍵按下。如對(duì)第一行掃描就令 P1.0 為低,P1 口其余為高,這樣若第一行有鍵按下,則 P1 口的值就會(huì)由 0 xfe 變?yōu)槠渌?,再由這個(gè)值來(lái)確定是哪個(gè)鍵按下。 以下為鍵盤(pán)掃描子程序的程序清單。 void keyscan() /矩陣鍵盤(pán)P3=0 xfe;temp=P3;temp=temp&0 xf0;if(temp!=0 xf0)Delay_1ms(10);temp=P3;temp=temp&0 xf0;if(temp!=0 xf0)temp

11、=P3;switch(temp)case 0 xee: key=1; break;case 0 xde: key=2; break;case 0 xbe: key=3; break;case 0 x7e: key=15; break; while(temp!=0 xf0) temp=P3;temp=temp&0 xf0; if(key=1&key=4&key=7&key=9) L1602_char(1,i,key + 48);i+;ssb=key;b+;Delay_1ms(300); if(key=13)L1602_string(1,i+,-);e=-;A=f(

12、ss,b);b=0; P3=0XF7; temp=P3; temp=temp&0 xf0; if(temp!=0 xf0) Delay_1ms(10);大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告1414temp=P3;temp=temp&0 xf0;if(temp!=0 xf0)temp=P3;switch(temp)case 0 xe7: key=10; break;case 0 xd7: key=0; break;case 0 xb7: key=11; break;case 0 x77: key=12; break;while(temp!=0 xf0)

13、temp=P3;temp=temp&0 xf0; if(key=12) L1602_string(1,i+,+); e=+; A=f(ss,b); b=0; if(key=11) L1602_string(1,i+,=); e=; A=f(ss,b); b=0; if(key=11) /= 大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告1515 H=f(ss,b);b=0;switch(e)case +: result=A+H; break;case -: result=A-H; break;case *: result=A*H; break;case /: resu

14、lt=A/H; break; default: result=H; L1602_string(1,i+,=); show(result);if(key=10) /清零wcmd(0 x01);wcmd(0 x80);b=0;i=1;k=1; if(key=0) L1602_char(1,i,key + 48);i+;ssb=key;b+;Delay_1ms(300); 大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告16164.2 移位子程序及結(jié)果計(jì)算子程序設(shè)計(jì)輸入數(shù)據(jù)要存儲(chǔ)在一四位數(shù)組內(nèi),而我們鍵入的值是數(shù)據(jù)的高位,后鍵入的值是低位,這樣我們就需要在輸入低位數(shù)值時(shí)將高位數(shù)值從數(shù)

15、組的低位移向數(shù)組的高位,這就是編寫(xiě)移位子程序的目的。對(duì)于結(jié)果計(jì)算子程序,包含加、減、乘、除四種運(yùn)算。以加法運(yùn)算為例,各種運(yùn)算各有其標(biāo)志位來(lái)代表計(jì)算類型,當(dāng)加法標(biāo)志位 add=1 是,就將輸入的兩個(gè)數(shù)據(jù)按照加法進(jìn)行計(jì)算。首先將數(shù)組內(nèi)的數(shù)按照對(duì)應(yīng)的位關(guān)系,將其轉(zhuǎn)化為一個(gè)十進(jìn)制數(shù),這樣我們就得到了加速和被加數(shù)這樣倆個(gè)十進(jìn)制數(shù),從而我們就可以簡(jiǎn)單的將兩個(gè)數(shù)進(jìn)行相加,結(jié)果就是我們所求的數(shù)值。但這個(gè)數(shù)值不能直接顯示到數(shù)碼管上,我們還要對(duì)其進(jìn)行處理,使其變?yōu)閷?duì)應(yīng)進(jìn)位的四個(gè)數(shù)存入數(shù)組內(nèi),以便顯示。既通過(guò)對(duì)結(jié)果數(shù)值分別除以1000、100、10 和對(duì) 10 取余,得到我們想要的四個(gè)數(shù),送顯示子程序顯示。其余減、

16、乘、除的計(jì)算方法與加法的計(jì)算方法一樣,這里不再累述。 以下為移位子程序和結(jié)果計(jì)算子程序的程序清單。 uint exp(uint m) /位數(shù)函數(shù)uint n=1;while(m)n=n*10;-m;return n;uint f(uint g,uint d)/結(jié)果函數(shù)uint m=0,i,j;for (i=0;i10) z=z/10; n+;return n;void show(uint h) /顯示得數(shù)函數(shù)uint n,i,dat;n=length(h);for(i=n;i0;-i) dat=h/(exp(i-1); L1602_char(2,k+,dat + 48);h=h%(exp(i-

17、1);4.3 顯示子程序設(shè)計(jì) 從始至終無(wú)論是輸入的計(jì)算數(shù)據(jù),還是計(jì)算后的結(jié)果值。都存儲(chǔ)在同一數(shù)組 dat 中,這樣我們只要在顯示時(shí)一直調(diào)用 dat 中的值,就能正確的顯示數(shù)據(jù)。 以下為顯示子程序的程序清單。 void show(uint h) /顯示得數(shù)函數(shù)uint n,i,dat;n=length(h);for(i=n;i0;-i)大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告1818 dat=h/(exp(i-1); L1602_char(2,k+,dat + 48);h=h%(exp(i-1);4.4 主程序設(shè)計(jì) 主程序既把以上各子程序串連成一個(gè)整體,使整個(gè)程序循環(huán)運(yùn)行

18、。而在以上程序中也已經(jīng)加入了個(gè)程序之間的連接點(diǎn),首先進(jìn)入程序后就立即進(jìn)入顯示子程序,而顯示子程序內(nèi)又調(diào)用鍵盤(pán)掃描子程序,若有鍵按下,則會(huì)跳轉(zhuǎn)到移位子程序和結(jié)果計(jì)算子程序進(jìn)行相應(yīng)的處理。通過(guò)計(jì)算或移位后,數(shù)組內(nèi)的值發(fā)生改變,顯示的值也會(huì)同時(shí)發(fā)生改變。之后再進(jìn)行鍵盤(pán)掃描,如此反復(fù)運(yùn)行,就構(gòu)成了程序的整體。 以下為主程序清單。 void main() /主函數(shù)L1602_init();while(1)keyscan();整體程序清單見(jiàn)附錄二。五、調(diào)試及性能分析五、調(diào)試及性能分析5.1 調(diào)試步驟 在焊接好器件后,先不要將芯片插在芯片座上,要先驗(yàn)證先板上電源是否好用,有無(wú)短路等。接上 USB 電源,用萬(wàn)

19、用表測(cè)量個(gè)芯片座對(duì)應(yīng)電源和地之間的電壓值,觀察電壓值是否正常。一切正常后方可將芯片插入芯片座,以繼續(xù)測(cè)試其他功能。 將芯片插上后,對(duì)各個(gè)模塊進(jìn)行調(diào)試,按鍵是否工作正常,數(shù)碼管是否顯示正常等。編寫(xiě)相關(guān)部分的測(cè)試程序?qū)ζ溥M(jìn)行測(cè)試。大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告1919 各部分硬件檢測(cè)無(wú)誤后,下載程序進(jìn)行整體調(diào)試,一切正常后,結(jié)束調(diào)試過(guò)程。 在具體調(diào)試時(shí)首先遇到的問(wèn)題是程序無(wú)法下載進(jìn)入單片機(jī),通過(guò)將電路板接線與原理電路圖接線的對(duì)比發(fā)現(xiàn),串口芯片與單片機(jī)連接的輸入,輸出接反,重新用銅線連接后,依然無(wú)法下載程序。后找到原因是由于下載串口與設(shè)計(jì)封裝不符,用相對(duì)應(yīng)的下載線可

20、以下載。 成功下載程序后,發(fā)現(xiàn) LCD 顯示不正確,查看后發(fā)現(xiàn)有先沒(méi)有連接,可能是制板時(shí)漏印,連接后顯示正常。5.2 性能分析 對(duì)于計(jì)算器的性能,主要的衡量指標(biāo)就在于計(jì)算的精度,本次制作的計(jì)算器性能情況如下:加法運(yùn)算:四位加法運(yùn)算,和值不超過(guò) 9999,若超過(guò)上限,則顯示錯(cuò)誤提示 E,蜂鳴器報(bào)警提示。減法運(yùn)算:四位減法運(yùn)算,若結(jié)果為負(fù),對(duì)其取絕對(duì)值。乘法運(yùn)算:積不超過(guò) 9999 的乘法運(yùn)算,若超出上限,顯示錯(cuò)誤提示 E,蜂鳴器報(bào)警提示。除法運(yùn)算:整數(shù)除法,既計(jì)算結(jié)果為整數(shù),若除數(shù)為零,則顯示錯(cuò)誤提示 E,蜂鳴器報(bào)警提示。通過(guò)對(duì)實(shí)際性能的分析,可以得到本次設(shè)計(jì)滿足設(shè)計(jì)的要求。六、心得體會(huì)六、心得

21、體會(huì)通過(guò)本次課程設(shè)計(jì)我真正的自己完成了對(duì)給定要求系統(tǒng)的硬件設(shè)計(jì)、電路設(shè)計(jì)、電路板設(shè)計(jì)、軟件設(shè)計(jì)以及對(duì)成品的調(diào)試過(guò)程。從整個(gè)過(guò)程中學(xué)習(xí)到了很多方面的知識(shí),了解到以往學(xué)習(xí)中自己知識(shí)在某方面的不足之處,是對(duì)以往學(xué)習(xí)科目的一種貫穿和承接,從而能更好的認(rèn)識(shí)和學(xué)習(xí),也對(duì)將來(lái)從事工作大有裨益。在試驗(yàn)過(guò)程中,充分的讓理論和實(shí)踐進(jìn)行了結(jié)合。實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),確實(shí)只有在實(shí)踐中,才能讓理論知識(shí)得以實(shí)現(xiàn),這也是工科所期望的成果,在這次試驗(yàn)里,讓我們更具象的認(rèn)識(shí)理論,對(duì)學(xué)習(xí)有莫大的幫助。 從本次課設(shè)中我也看到了自身的很多不足之處,對(duì)知識(shí)的掌握不夠扎實(shí),有一知半解的現(xiàn)象。有時(shí)做事不夠穩(wěn)定,過(guò)于毛躁,不能平心靜氣的

22、去分析所遇到的問(wèn)題和錯(cuò)誤。這在以后的工作和生活中是不可取的,通過(guò)對(duì)自身問(wèn)題的認(rèn)識(shí)與改正相信再遇到同樣問(wèn)題時(shí)會(huì)更好的解決。以后的設(shè)計(jì)實(shí)驗(yàn)也會(huì)更好的完成。大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告2020參考文獻(xiàn)參考文獻(xiàn)1 徐維祥、劉旭敏. 單片微型機(jī)原理及應(yīng)用. 大連:大連理工大學(xué)出版社,19962 李光飛、樓然苗、胡佳文、謝象佐. 單片機(jī)課程設(shè)計(jì)與實(shí)例指導(dǎo). 北京: 北京航空航天大學(xué)出版社,2004 3 余永權(quán). 89 系列 FLASH 單片機(jī)原理及應(yīng)用. 北京:電子工業(yè)出版社,20024 劉巖川、董玉華、劉忠富、韓志敏.單片機(jī)原理及系統(tǒng)設(shè)計(jì).北京:電子工業(yè)出版社,201

23、4附錄附錄 1 系統(tǒng)硬件電路圖系統(tǒng)硬件電路圖附錄附錄 2 實(shí)物圖實(shí)物圖大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告2121附錄附錄 3 程序清單程序清單#include#include#define uint unsigned int#define uchar unsigned char#define ulong unsigned longuchar code table10 = 0 x03, 0 x9f, 0 x25, 0 x0d, 0 x99, 0 x49, 0 x41, 0 x1f, 0 x01, 0 x09;uchar i=1,j=0;uchar key,temp;

24、uchar e;uint ss8;大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告2222uint b=0,A,H,result,k=1;sbit E=P23;/1602 使能引腳sbit RW=P36;/1602 讀寫(xiě)引腳sbit RS=P24;/1602 數(shù)據(jù)/命令選擇引腳void Delay_1ms(uint i)/1ms 延時(shí)uint x,j;for (j=0;ji;j+);for (x=0;x=148;x+);void delay()_nop_();_nop_();_nop_();_nop_();_nop_();bit Busy(void)bit busy_flag

25、= 0;RS = 0;RW = 1;E = 1;delay();大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告2323busy_flag = (bit)(P0 & 0 x80);E = 0;return busy_flag;void wcmd(uchar del)while(Busy();RS = 0;RW = 0;E = 0;delay();P0 = del;delay();E = 1;delay();E = 0;void wdata(uchar del)while(Busy();RS = 1;RW = 0;E = 0;delay();P0 = del; delay

26、();E = 1;delay();E = 0;大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告2424void L1602_init(void)wcmd(0 x38);Delay_1ms(5);wcmd(0 x38);Delay_1ms(5);wcmd(0 x38);Delay_1ms(5);wcmd(0 x38);wcmd(0 x08);wcmd(0 x0c);wcmd(0 x04);wcmd(0 x01);void L1602_char(uchar hang,uchar lie,char sign)uchar a;if(hang = 1) a = 0 x80;if(hang

27、 = 2) a = 0 xc0;a = a + lie - 1;wcmd(a);wdata(sign);void L1602_string(uchar hang,uchar lie,uchar *p)uchar a,b=0;if(hang = 1) a = 0 x80;if(hang = 2) a = 0 xc0;大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告2525a = a + lie - 1;while(1)wcmd(a+);b+;if(*p = 0)|(b=16) break;wdata(*p);p+;uint exp(uint m) /位數(shù)函數(shù)uint n=1;wh

28、ile(m)n=n*10;-m;return n;uint f(uint g,uint d)/結(jié)果函數(shù)uint m=0,i,j;for (i=0;i10) z=z/10; n+;return n;void show(uint h) /顯示得數(shù)函數(shù)uint n,i,dat;n=length(h);for(i=n;i0;-i) dat=h/(exp(i-1); L1602_char(2,k+,dat + 48);h=h%(exp(i-1); void keyscan() /矩陣鍵盤(pán)P3=0 xfe;temp=P3;temp=temp&0 xf0;if(temp!=0 xf0)Delay_1ms(10);temp=P3;temp=temp&0 xf0;if(temp!=0 xf0)大連民族學(xué)院 2012 級(jí)電子信息工程專業(yè)單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告2727temp=P3;switch(temp)case 0 xee: key=1; break;case 0 xde: key=2; break;case 0 xbe: key=3; break;case 0 x7e: key=15; break; while(temp!=0 xf0) temp=P3;temp=temp&0 xf0; if(key=1&key=4&key=7&key=

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論