基于C51單片機(jī)簡(jiǎn)易計(jì)算器的課程設(shè)計(jì)論文_第1頁(yè)
基于C51單片機(jī)簡(jiǎn)易計(jì)算器的課程設(shè)計(jì)論文_第2頁(yè)
基于C51單片機(jī)簡(jiǎn)易計(jì)算器的課程設(shè)計(jì)論文_第3頁(yè)
基于C51單片機(jī)簡(jiǎn)易計(jì)算器的課程設(shè)計(jì)論文_第4頁(yè)
基于C51單片機(jī)簡(jiǎn)易計(jì)算器的課程設(shè)計(jì)論文_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余19頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、贛南師范學(xué)院基于C51單片機(jī)的簡(jiǎn)易計(jì)算器目錄喝恁潤(rùn)屬鈴瘞睞楊尻賴。1 .緒論32 .系統(tǒng)軟件設(shè)計(jì)方案42.1 設(shè)計(jì)目標(biāo)和實(shí)現(xiàn)方法 42.2 整體方案論證43 .系統(tǒng)硬件的設(shè)計(jì)與介紹 53.1 復(fù)位電路的設(shè)計(jì)與運(yùn)用 53.2 時(shí)鐘振蕩器電路的設(shè)計(jì)與運(yùn)用 63.3 輸入電路的設(shè)計(jì)63.4 輸出電路的設(shè)計(jì)84 .系統(tǒng)程序的設(shè)計(jì)與介紹 114.1 LED 顯示程序流程圖設(shè)計(jì) 114.2 讀鍵輸入程序流程圖設(shè)計(jì) 134.3 主程序流程圖設(shè)計(jì) 144.4 仿真與調(diào)試155 . 結(jié)論176 件清單18附錄1簡(jiǎn)易計(jì)算器源程序 19#1.緒論中國(guó)古代最早采用的一種計(jì)算工具叫籌策,又被叫做算籌。這種算籌多是 用竹

2、子制成,也有用木頭,獸骨充當(dāng)材料的。大約二百七十枚一束,放在布袋里 可以隨身攜帶。溝熠金富愛(ài)建譴凈。直到今天仍在使用的珠算盤(pán),是中國(guó)古代計(jì)算工具領(lǐng)域中的另一項(xiàng)發(fā)明, 明代時(shí)期的珠算盤(pán)已經(jīng)與現(xiàn)代的珠算盤(pán)幾乎沒(méi)有差別。殘鷲樓靜鑄腌翻藏17 世紀(jì)初,西方國(guó)家的計(jì)算工具已經(jīng)有了較大的發(fā)展,英國(guó)數(shù)學(xué)家納皮爾發(fā)明的”納皮爾算籌”,英國(guó)牧師奧卻德發(fā)明了圓柱型對(duì)數(shù)計(jì)算尺,這種計(jì)算尺不僅 能做加減乘除、乘方、開(kāi)方運(yùn)算,甚至可以計(jì)算三角函數(shù),指數(shù)函數(shù)和對(duì)數(shù)函數(shù), 這些計(jì)算工具不僅帶動(dòng)了計(jì)算器的快速發(fā)展,也為實(shí)現(xiàn)現(xiàn)代計(jì)算器發(fā)展奠定了良 好的基礎(chǔ),成為現(xiàn)代社會(huì)應(yīng)用廣泛的計(jì)算工具。r鋼極鎮(zhèn)檜豬錐。1642 年,年僅19

3、歲的法國(guó)偉大科學(xué)家帕斯卡引用算盤(pán)的原理,發(fā)明了世 界上第一部機(jī)械式計(jì)算器,在他的計(jì)算器中有一些互相聯(lián)鎖的齒輪,一個(gè)轉(zhuǎn)過(guò)十 位的齒輪會(huì)使另一個(gè)齒輪轉(zhuǎn)過(guò)一位,人們可以像撥電話號(hào)碼盤(pán)那樣,把數(shù)字撥進(jìn) 去,計(jì)算結(jié)果就會(huì)出現(xiàn)在另外一個(gè)窗口中,但是只能做加減計(jì)算。1694年,萊布尼茲在德國(guó)將其改進(jìn)成可以進(jìn)行乘除的計(jì)算。此后,一直要到20世紀(jì)50年代末才有了電子計(jì)算器的出現(xiàn)。彈貿(mào)攝爾霽斃撰磚鹵尻。52.軟件設(shè)計(jì)方案2.1 設(shè)計(jì)目標(biāo)和實(shí)現(xiàn)方法為了滿足簡(jiǎn)易計(jì)算器的基本要求,可以進(jìn)行基本的運(yùn)算(加減乘除),數(shù)據(jù) 歸零和出錯(cuò)警告提示,我們采用基于51單片機(jī)設(shè)計(jì)計(jì)算器,并用七段共陰級(jí)LED 數(shù)碼管顯示數(shù)據(jù),4*4的矩

4、陣鍵盤(pán)實(shí)現(xiàn)數(shù)據(jù)的輸入。II養(yǎng)技篋志類蔣番2.2 整體方案論述根據(jù)簡(jiǎn)單計(jì)算器的功能和本方案中的設(shè)計(jì)指標(biāo)要求, 本系統(tǒng)選用了 MCS51單 片機(jī)為主控機(jī)。通過(guò)擴(kuò)展必要的外圍接口電路,實(shí)現(xiàn)對(duì)簡(jiǎn)單計(jì)算器的設(shè)計(jì)。具體 設(shè)計(jì)考慮如下:廈礴懇蹣駢畤賽騷。由于要設(shè)計(jì)的是簡(jiǎn)單的計(jì)算器,可以進(jìn)行基本的四則運(yùn)算,對(duì)數(shù)字的大小范圍要求不高,故我們采用可以進(jìn)行四位數(shù)字的運(yùn)算,選用 8個(gè)LED數(shù)碼管顯示 數(shù)據(jù)和運(yùn)算結(jié)果。煢楨廣鯽獻(xiàn)選塊網(wǎng)踴淚。另外鍵盤(pán)包括數(shù)字鍵(09)、符號(hào)鍵(+、-、X、+)、清除鍵和等號(hào) 鍵,故只需要16個(gè)按鍵即可。系統(tǒng)模塊圖:圖2-1系統(tǒng)模塊圖3.1 復(fù)位電路的設(shè)計(jì)上電復(fù)位的原理:VCCt電時(shí),C充

5、電,在10K電阻上出現(xiàn)了電壓,使單片機(jī) 復(fù)位;幾個(gè)毫秒后,C充滿,10K電阻上電流降為0,電壓也為0,使得單片機(jī)進(jìn) 入工作狀態(tài)。 鵝婭盡揖偶慘屣蘢榔手動(dòng)復(fù)位的原理:工作期間,按下 S, C放電。S松手,C又充電,在10K電 阻上出現(xiàn)電壓,使得單片機(jī)復(fù)位。幾個(gè)毫秒后,單片機(jī)進(jìn)入工作狀態(tài)。髓叢媽翅為債蛭練浮。如SW復(fù)位鍵按下時(shí):RST經(jīng)1k電阻接VCC獲得10k電阻上所分得電壓, 形成高電平,進(jìn)入“復(fù)位狀態(tài)”。51m圣的破齦訝驊汆。當(dāng)SWa位鍵斷開(kāi)時(shí):RST經(jīng)10k電阻接地,電流降為0,電阻上的電壓也 將為0, RS懈為低電平,開(kāi)始正常工作 。滲嗆儼勻謂鱉調(diào)硯金帛。對(duì)于成熟產(chǎn)品,從降低成本角度,可

6、以使用上電復(fù)位。另外,作為產(chǎn)品,最 好使用上電復(fù)位。因?yàn)槭褂谜咄ǔ](méi)有專業(yè)知識(shí),就知道斷電通電,對(duì)他們來(lái)說(shuō), 按鍵復(fù)位成了擺設(shè)。按鍵復(fù)位比較適合樣品制作或者實(shí)驗(yàn)室調(diào)試場(chǎng)合,上電復(fù)位 電路成本也低;一些。錢(qián)臥瀉嵯圣騁睨限期綜上所述我們?cè)诒痉桨钢羞x用了上電自動(dòng)復(fù)位電路。上位自動(dòng)復(fù)位電路圖和手動(dòng)復(fù)位電路圖如下圖上電自動(dòng)復(fù)位手動(dòng)復(fù)位電路兩種復(fù)位方式 如圖31:3.2 時(shí)鐘振蕩電路的設(shè)計(jì)能夠產(chǎn)生振蕩電流的電路叫做振蕩電路。一般由電阻、電感、電容等元件和電子器件所組成。由電感線圈l和電容器c相連而成的lc電路是最簡(jiǎn)單的一種 振蕩電路,其固有頻率為f=sx(12 Ttlc。 一種不用外加激勵(lì)就能自行產(chǎn)生交流

7、信號(hào)輸出的電路。它在電子科學(xué)技術(shù)領(lǐng)域中得到廣泛地應(yīng)用,如通信系 統(tǒng)中發(fā)射機(jī)的載波振蕩器、接收機(jī)中的本機(jī)振蕩器、醫(yī)療儀器以及測(cè)量?jī)x器中的 信號(hào)源等。施鳳襪備鄱輪爛薔。XTAL1反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2來(lái)自反向振蕩器的輸出。XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為 片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用此振動(dòng)器。如采用外部時(shí)鐘源驅(qū)動(dòng)器 件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì) 外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。嬲熟俁畫(huà)蕨直閶鄴錢(qián)原蚤。使用片內(nèi)振蕩器,可以節(jié)省IO弓I腳

8、,減少成本,但是內(nèi)部振蕩器使用阻容 震蕩,導(dǎo)致它的精度不高,如果使用了用口、或者PW靜對(duì)時(shí)鐘比較敏感的功能, 最好還是使用外部晶體振蕩。壇搏鄉(xiāng)it懺簍鍥鈴測(cè)在本方案中我們選擇了內(nèi)部時(shí)鐘方式,如下圖:內(nèi)部時(shí)鐘方式外部時(shí)鐘方式兩種時(shí)鐘方式如圖32:3.3 輸入電路的設(shè)計(jì)每一個(gè)按鍵都有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編 碼。矩陣的行線和列線分別通過(guò)兩并行接口和 CPUS信。鍵盤(pán)的一端(列線)通 過(guò)電阻接VCC而接地是通過(guò)程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤(pán)處理程序的任務(wù)是: 確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么?還要消除按鍵在閉合或 斷開(kāi)時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼

9、,使按鍵逐行動(dòng)態(tài)接地;另一個(gè) 并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò) 軟件查表,查出該鍵的功能。 蠟燮夥痛宰艮住鉉錨金市贅。當(dāng)無(wú)按鍵閉合時(shí),P10P13與P14P17之間開(kāi)路;當(dāng)有鍵閉合時(shí),與閉合鍵 相連的兩條I/O 口線之間短路。判斷有無(wú)按鍵按下的方法是:第一步,置列線 P14P17為輸入狀態(tài),從行線P10P13輸出低電平,讀入列線數(shù)據(jù),若某一列線 為低電平,則該列線上有鍵閉合。第二步,行線輪流輸出低電平,從列線P14P17 讀入數(shù)據(jù),若有某一列為低電平,則對(duì)應(yīng)行線上表示有鍵按下。綜合一二兩步的 結(jié)果,可以確定按鍵編號(hào)。但是鍵閉合一次只能進(jìn)行一次鍵功能操作,因

10、此須等 到按鍵釋放后,再進(jìn)行鍵功能操作,否則按一次鍵,有可能會(huì)連續(xù)多次進(jìn)行同樣 的鍵操作。而輔曇JW遙閆擷凄。鍵盤(pán)是單片機(jī)系統(tǒng)中常用的人機(jī)對(duì)話輸入設(shè)備,用戶通過(guò)鍵盤(pán)向單片機(jī)輸入 數(shù)據(jù)或者指令。鍵盤(pán)控制程序需要完成的任務(wù)有:監(jiān)測(cè)是否有鍵按下,有鍵按下 時(shí),在無(wú)硬件去抖的動(dòng)電路時(shí),應(yīng)用軟件延時(shí)方法消除按鍵抖動(dòng)影響;當(dāng)有多個(gè) 鍵同時(shí)按下時(shí),只處理一個(gè)按鍵,不管一次按鍵持續(xù)多長(zhǎng)時(shí)間,僅執(zhí)行一次按鍵 功能程序。矚佛鵬蹤韋輸?shù)浴>仃嚢存I掃描程序是一種節(jié)省IO 口的方法,按鍵數(shù)目越多節(jié)省IO 口就越可 觀,思路:先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是那一只鍵 按下。但是,在程序的寫(xiě)法上,采用了

11、最簡(jiǎn)單的方法,使得程序的效率最高。本 程序中,如果檢測(cè)到了某個(gè)鍵按下了,就不再檢測(cè)其它的按鍵,這完全能滿足絕 大多數(shù)需要,又能節(jié)省大量的 CPU寸問(wèn)。麒彥決綏I1飴3s錦。本鍵盤(pán)掃描程序的優(yōu)點(diǎn)在于:不使用專門(mén)的按鍵延時(shí)程序,提高了 CPIB率, 也不用中斷來(lái)掃描鍵盤(pán),節(jié)省了硬件資源。另外,本鍵盤(pán)掃描程序,每次掃描占 用CPU寸最短,不論有鍵按下或者無(wú)鍵按下都可以在很短的時(shí)間完成一次掃描。 貓蠶!繪燎誅髏既尻。本鍵盤(pán)掃描子程序名叫key,每次要掃描時(shí)用lcall key 調(diào)用即可。鍵盤(pán)可分為兩類:編碼鍵盤(pán)和非編碼鍵盤(pán)。編碼鍵盤(pán)是較多按鍵(20個(gè)以上) 和專用驅(qū)動(dòng)芯片的組合,當(dāng)按下某個(gè)鍵時(shí),它能夠

12、處理按鍵抖動(dòng)、連擊等問(wèn)題, 直接輸出按鍵的編碼,無(wú)需系統(tǒng)軟件干預(yù)。通用PC機(jī)使用的標(biāo)準(zhǔn)鍵盤(pán)就是編碼鍵盤(pán)。在智能儀器中,使用并行接口芯片 8279或串行接口芯片HD7279勻可以組成編碼鍵盤(pán),同時(shí)還可以兼顧數(shù)碼管的顯示驅(qū)動(dòng),其相關(guān)的接口電路和接口軟件均可以在相關(guān)資料中得到。當(dāng)系統(tǒng)功能比較復(fù)雜,案件數(shù)量很多時(shí),采用編碼鍵盤(pán)可以簡(jiǎn)化軟件設(shè)計(jì)。但大多數(shù)智能儀器和電子產(chǎn)品的按鍵數(shù)目都不很多(20個(gè)以內(nèi)),為了降低成本和簡(jiǎn)化電路通常采用非編碼鍵盤(pán)。非編碼鍵盤(pán)的電路由 設(shè)計(jì)者根據(jù)需要自己決定,按鍵信息通過(guò)接口軟件來(lái)獲取。鍬籟饕逕瑣1領(lǐng)鷗婭番本課題需要16個(gè)按鍵,故選擇非編碼鍵盤(pán),為了減少所占用的端口,由 P

13、1 口采用4*4矩陣式鍵盤(pán)。圖3-3鍵盤(pán)樣式3.4 輸出電路設(shè)計(jì)數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一 個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“ 8”可分為1位、2 位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù) 碼管。共陽(yáng)級(jí)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管。共陽(yáng)級(jí)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極CO頻到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),對(duì)應(yīng) 的字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰 極(COM)勺數(shù)碼管。共陰數(shù)碼管

14、在應(yīng)用時(shí)應(yīng)將公共極 CO酷到地線GND,當(dāng)某 一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽(yáng)極為低 電平時(shí),對(duì)應(yīng)的字段就不亮。 橫氽彘飩芹齦話鷲。LED顯示器由七段發(fā)光二極管組成,排列成 8字形狀,因此也成為七段 LED 顯示器,器排列形狀如下圖所示:fbgecda dp圖3-4 LED段碼為了顯示數(shù)字或符號(hào),要為L(zhǎng)ED顯示器提供代碼,即字形代碼。七段發(fā)光二 極管,再加上一個(gè)小數(shù)點(diǎn)位,共計(jì) 8段,因此提供的字形代碼的長(zhǎng)度正好是一個(gè) 字節(jié)。簡(jiǎn)易計(jì)算器用到的數(shù)字09的共陰極字形代碼如下表3-1所示: 甄峰隔槿籥將虢滎。顯示字型gfedcBa段碼001111113fh1000011

15、006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fh表3-509七段數(shù)碼管共陰級(jí)字形代碼由于數(shù)值單元存放的是二進(jìn)制數(shù),而我們大家熟悉的是十進(jìn)制數(shù),所以應(yīng)將 數(shù)值單元中的二進(jìn)制數(shù)字轉(zhuǎn)換為十進(jìn)制數(shù)字,即BCM。要通過(guò)數(shù)碼管顯示出當(dāng)前的數(shù)值,還必須將BCM進(jìn)一步轉(zhuǎn)換為七段碼,轉(zhuǎn)換的最終結(jié)果數(shù)據(jù)存放于顯 示緩沖區(qū)30H-33H單元中,其中30H單元存放數(shù)值的個(gè)位七段碼,31H單元存放 數(shù)值的十位七段碼,32H單元存放數(shù)值的百位七段碼,33H單元存放數(shù)值的千位 七段他。堯側(cè)

16、閨藕絳絢勘蛻督。本方案設(shè)計(jì)中由P1 口輸出字形碼,P0 口輸出字位碼。先將存放于 30H單元 的數(shù)值個(gè)位七段碼由P1 口輸出,同時(shí)P0口輸出使數(shù)值個(gè)位顯示數(shù)碼管點(diǎn)亮的字 位碼。由于采用的是共陰數(shù)碼管,所以只有該位數(shù)碼管對(duì)應(yīng)的P0.0為1,其他位 P0.1-P0.3位0,點(diǎn)亮延時(shí)10MS然后P1 口輸出數(shù)值十位七段碼,P0.1位1,數(shù) 值十位數(shù)碼管點(diǎn)亮,延時(shí)10MS接著P1 口輸出數(shù)值百位七段碼,P0.2為1,數(shù) 值百位數(shù)碼管點(diǎn)亮,延時(shí)10MS最后P1 口輸出數(shù)值千位七段碼,P0.3為1,數(shù) 值千位數(shù)碼管點(diǎn)亮,延時(shí) 10MS識(shí)金昆縊堞竟嗜儼豪發(fā)光二極管LED是單片機(jī)應(yīng)用系統(tǒng)中的一種簡(jiǎn)單而最常用的

17、輸出設(shè)備,其在系統(tǒng)中的主要作用是顯示單片機(jī)的輸出數(shù)據(jù)、狀態(tài)等。因而作為典型的外圍器件,LED顯示單元是反映系統(tǒng)輸出和操作輸入的有效元器件。LED具備數(shù)字接口可以方便的和單片機(jī)引腳連接;它的優(yōu)點(diǎn)是價(jià)格低,壽命長(zhǎng),對(duì)電壓電流的要求低以 及容易實(shí)現(xiàn)多路等,因而在單片機(jī)應(yīng)用系統(tǒng)中獲得了廣泛的應(yīng)用,所以在此設(shè)計(jì) 中我首先選用了 LED乍為顯示器件。如圖3-10所示:潮姬勞肉皆癇嫦脛汆。4.程序設(shè)計(jì)本方案中的程序設(shè)計(jì)采用了模塊化設(shè)計(jì),各部分程序都分別進(jìn)行獨(dú)立的設(shè)計(jì), 最后主程序通過(guò)調(diào)用各模塊程序來(lái)運(yùn)行,編程中所使用的語(yǔ)言全部都是C語(yǔ)言,可以利用keil軟件進(jìn)行靈活的編譯,編譯完成后也可生成 HEX文件,利

18、用ISP 編程軟件通過(guò)用口寫(xiě)到單片機(jī)中。本方案程序設(shè)計(jì)中部分包括主程序模塊、液晶 顯示模塊、功能按鍵和控制輸出等部分。下面僅僅敘述了各部分程序設(shè)計(jì)的基本 思想和流程圖,詳細(xì)程序請(qǐng)參閱附錄。底翱T滅縈歡壕爵詢。4.1 讀鍵輸入程序流程圖為了實(shí)現(xiàn)鍵盤(pán)的數(shù)據(jù)輸入功能和命令處理功能,每個(gè)鍵都有其處理子程序, 為此每個(gè)鍵都對(duì)應(yīng)一個(gè)碼一一鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識(shí) 別按鍵。列掃描信號(hào)進(jìn)行讀入行的信號(hào)判斷該列是否有列的輸出一一是則進(jìn)行按 照行列計(jì)算鍵盤(pán)的值,查表取得鍵碼并返回若否則進(jìn)行再次掃描。鯊胃輸出襁金甲灑懵統(tǒng)ML程序框圖如下41圖:21鍵盤(pán)輸入流程圖4 1碩頑詒攆樽哮數(shù)。4.2 LE

19、D顯示程序流程圖設(shè)計(jì)LE躁碼管要正常顯示,就要用驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯 示出我們需要的數(shù)位,因此根據(jù) LED數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式 和動(dòng)態(tài)式兩類。闋擻旗翳t遷擇植秘H。A、靜態(tài)顯示驅(qū)動(dòng):靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè) 單片機(jī)的I/O埠進(jìn)行驅(qū)動(dòng),或者使用如 BCDK二-十進(jìn)位*器*進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū) 動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用 I/O埠多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜 態(tài)顯示則需要5X8=40根I/O埠來(lái)驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O埠 才32個(gè)呢。故實(shí)際應(yīng)用時(shí)必須增加*驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬體電路的復(fù)雜性。

20、氨嚕螂鼠貿(mào)懇彈演頷泉。B、動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示介面是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃a,b,c,d,e,f,g,dp 的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極 COMt曾加位元選通控制電路,位元選通由各自獨(dú)立的 I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究 竟是哪個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位元選通CO嗣電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi),該位元就會(huì)顯示出字形,沒(méi)有 選通的數(shù)碼管就不會(huì)亮。透過(guò)分時(shí)輪流控制各個(gè)LED數(shù)碼管的COMB,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯

21、示過(guò)程中,每位元數(shù)碼 管的點(diǎn)亮?xí)r間為12m由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極體的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一 組穩(wěn)定的顯示資料,不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠 節(jié)省大量的I/O埠,而且功耗更低。缸循瓷B剌孫流W贅。綜上所述我們?cè)诒驹O(shè)計(jì)方案中選用了動(dòng)態(tài)顯示。6位LED顯示的程序框圖如圖4-2所示:圖4-2 LED顯示流程圖4.3 主程序設(shè)計(jì)主程序進(jìn)行程序中用到的一些存儲(chǔ)單元的初始化, 數(shù)值顯示和4*4鍵盤(pán)掃描。 首先,進(jìn)行存儲(chǔ)單元初始化,給數(shù)碼管顯示單元30H-33H賦予“0000”字形數(shù)據(jù), 將數(shù)值計(jì)數(shù)單元,存儲(chǔ)單元,2

22、3H-25H,34H-37H,38H,39H,3AH,3BH,3CH賦予初值 零。之后,調(diào)用鍵盤(pán)掃描子程序,和數(shù)碼管顯示數(shù)據(jù)轉(zhuǎn)換程序,數(shù)碼管動(dòng)態(tài)顯示 子程序。主程序不斷進(jìn)行鍵盤(pán)掃描,數(shù)碼管顯示數(shù)據(jù)轉(zhuǎn)換子程序和動(dòng)態(tài)顯示子程 序。慫闡官爵t逕醇嘯重晨涼。首先初始化參數(shù),送LED位顯示“0”,功能鍵(“+”、丁、 “+” )位不顯示。然后掃描鍵盤(pán)看是否有鍵輸入,若有,讀取鍵碼。判斷鍵碼是數(shù)字鍵、清零鍵還是“ +” 、“一” 、 “/ ,是數(shù)值鍵則送LED顯示 并保存數(shù)值,是清零鍵則做清零處理,是功能鍵則又判斷是“=”還是運(yùn)算鍵,若是“二”則計(jì)算最后結(jié)果并送LED顯示,若是運(yùn)算鍵則保存相對(duì)運(yùn)算程序的首

23、地址諺辭擔(dān)諂動(dòng)律瀉類短運(yùn)算主程序框圖如4-3所小:數(shù)值送顯示緩沖圖4-3運(yùn)算主程序框圖4.4 仿真與調(diào)試在程序設(shè)計(jì)方法上,模塊化程序設(shè)計(jì)是單片機(jī)應(yīng)用中最常用的程序設(shè)計(jì)方 法。設(shè)計(jì)的中心思想是把一個(gè)復(fù)雜應(yīng)用程序按整體功能劃分成若干相對(duì)獨(dú)立的程 序模塊,各模塊可以進(jìn)行單獨(dú)的設(shè)計(jì)、編程和調(diào)試,然后組合起來(lái)。這種方法便 于設(shè)計(jì)和調(diào)試,容易實(shí)現(xiàn)多個(gè)程序共存,但各個(gè)模塊之間的連接有一定的難度。 根據(jù)需要我們可以采取自上而下的程序設(shè)計(jì)方法,此方法先從主程序開(kāi)始設(shè)計(jì),然后再編制各從屬程序和子程序,層層細(xì)化逐步完成,最終完成一個(gè)復(fù)雜程序的 設(shè)計(jì)。這種方法比較符合人們的日常思維,缺點(diǎn)是一級(jí)的程序錯(cuò)誤會(huì)對(duì)整個(gè)程序

24、產(chǎn)生影響。 啜覲言圭緣砌囁俱觸鈴鑄。功能和操作:加減乘除運(yùn)算和顯示。A:上電后,屏幕初始化,按下“ ON/C鍵。B:計(jì)算。按下數(shù)字鍵,屏幕顯示要運(yùn)算的第一個(gè)數(shù)字,再按下符號(hào)鍵,然后再按下數(shù)字鍵,屏幕顯示要運(yùn)算的第二個(gè)數(shù)字,最后按下工”號(hào)鍵,屏幕上顯示出計(jì)算結(jié)果。C:如果要再次計(jì)算,可以按下ON/C”鍵清零,或者按下單片機(jī)的復(fù)位鍵,重 新初始化。硬件聯(lián)系圖如下圖:U11352 2r?r牌1判JP 口 VJW1口碘2XT煙swa HbM* ,口彌5 Ml超遇賴ra.rwmPHI幅a iifP23MJ F23TA11P7,工融 1.MUTZ purrPJDfKP 3710P12F1JfiwhFUP3

25、.*TO陽(yáng),T1P1JS.口彳廊PITATffiS eTEKP88B88888壬不3321aZ1J*2$再方定flBCDEFG DP更IM 羽m叫 口1000|D1 LEDIW二RE ACEDB硬件連線圖4.45結(jié)論課程設(shè)計(jì)是培養(yǎng)學(xué)生運(yùn)用所學(xué)的專業(yè)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問(wèn) 題,鍛煉實(shí)際動(dòng)手能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察, 隨著科學(xué)技術(shù)日新月異的發(fā)展,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng) 域,在生活中可以說(shuō)遍布我們生活之中。 受紿劇幅齦庫(kù)。這次設(shè)計(jì)進(jìn)一步端正了我的學(xué)習(xí)態(tài)度,學(xué)會(huì)了實(shí)事求是,嚴(yán)謹(jǐn)?shù)淖黠L(fēng),對(duì)自 己要嚴(yán)格要求。急于求成是不好的,通過(guò)此次畢業(yè)設(shè)計(jì)我深

26、有體會(huì)。如果省略了 那些必要的步驟,急于求成,不僅會(huì)浪費(fèi)時(shí)間,還會(huì)適得其反。我覺(jué)得動(dòng)手之前, 應(yīng)該有清楚的步驟,這一步是很重要的。就目前來(lái)說(shuō),我的動(dòng)手能力雖然還有差 距,但我知道,通過(guò)我的不懈努力,在動(dòng)手方面,我會(huì)得到提高。這一點(diǎn),我堅(jiān) 信0 !漬蟆俾閱剜鯽胃暹藏。在此次的課程設(shè)計(jì)中我最大的體會(huì)就是進(jìn)一步認(rèn)識(shí)到了理論聯(lián)系實(shí)踐的重 要性。一份耕耘,一份收獲。通過(guò)這段時(shí)間的設(shè)計(jì),讓我明白科學(xué)的思維方法和 學(xué)習(xí)方法是多么重要,只有這樣才能夠有很高的效率,才能夠讓自己的工作更完 美??偠灾?,此次畢業(yè)設(shè)計(jì)讓我學(xué)到了好多平時(shí)在課堂上學(xué)不到的東西,增加 了我的知識(shí)運(yùn)用能力,增強(qiáng)我的實(shí)際操作能力。謝謝老師給

27、我們提供這么好的機(jī) 會(huì),為我們之后走向社會(huì)奠定了 一個(gè)好的基礎(chǔ)。封憂藕氯僦B躁憫鷲。在我做課程設(shè)計(jì)的整個(gè)過(guò)程中,無(wú)論是在設(shè)計(jì)的選題、構(gòu)思和資料的收集 方面,還是在設(shè)計(jì)的研究方法以及成文定稿方面,或是在論文的寫(xiě)作過(guò)程中,都 得到了許多同學(xué)的寶貴建議,在此一并致以誠(chéng)摯的謝意。感謝所有關(guān)心、支持、 幫助過(guò)我的同學(xué)。穎芻蟆悖億頓裳賠洸。6元件清單元件數(shù)量單價(jià)(元)12M晶振11STC89C52E 片14輕觸按鍵200.1排阻10.5四位一體公陰數(shù)碼管21.5電阻什0.5杜邦線400.1排針400.1電容0.5總計(jì)19.5附錄1簡(jiǎn)易計(jì)算器源程序#include #define uchar unsigne

28、d char#define uint unsigned int# define duan P0/數(shù)碼管顯示段選定義# define wei P2/微碼管顯示位選定義# define key P3/盤(pán)接 口定義sbit OFF = P1A0;/關(guān)機(jī)鍵定義unsigned long int shu1,shu2;/進(jìn)行運(yùn)算的兩個(gè)變量數(shù)uchar num;/鍵盤(pán)掃描返回值char flag1,flag_shu,flag_fuhao,fuhao,newkey;/flagl開(kāi)機(jī)標(biāo)志ncwkcy新按鍵標(biāo)志,fuhao運(yùn)算符char key_shu;/R 鍵值unsigned char code Wela=0xdf,0xef,0xf7,0xfb,0xfd,0xfe;濫嬲詹明歌翅寢聰。/六位數(shù)碼管的位選unsigned char code Duan0x3f,0x06,0x5b,/0120x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;/ 3456789無(wú)顯示共陰極數(shù)碼管uchar keyscan();/犍盤(pán)掃描函數(shù)void display(unsigned long int );/數(shù)碼管顯示函數(shù)vo

溫馨提示

  • 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)論