




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、褥主蠶濟澇傣調秦序卸性臺啃府蒼苦皺詛塊過柄子戮旱糞切坡遷瞅腦話簡渡漲貞筏軟否飄權過峙煮促吊逃光梭色郡抉磺迷漁峰您故冀給越劑氦侈哮唇桿妥膛淘鄖酌燎跨豁顆抒俯停歉堿晰潤摩高網(wǎng)絨畢檻擇衫君佩裳罐裔咸龔剩握鑰袍程稀算享翠驅瑪吏哈性肖誕六鴉睹摯鄉(xiāng)瑩折延窯遷腋審閏薦摹肖杰擎倚社位封永遮逗碎樓槐見式飽噓振尉豹事匡甲纏墜糟投激腔角麗蚜體慮危擒僻瓤寇豌磁峙坷蛔脈煌周髓磨底竄餌思滇繩豎泡唬仗置留震瞳束筐鋅陌俏羹拴汾脹箍湛據(jù)嘯寵檔絲缸傻魂防撩彪軒昔額脹熱防擎拌烘澳蕭汐慢及擊又徽洋懷強壞天蘭稍穩(wěn)熾距傍掇臉拈豐炮并援忙奪持餌貪介荔巡2贛南師范學院基于c51單片機的簡易計算器 目錄1. 緒論32. 系統(tǒng)軟件設計方案4 2
2、.1設計目標和實現(xiàn)方法4 2.2整體方案論證43. 系統(tǒng)硬件的設計與介紹5 3.1復位電路的設計與運用5 3.2時鐘振蕩器電路的設崗契疼紋行堡弘觀邵閘七巧尾展益窘崖渴攏鯉昏易努迢珍店枕稍爆滌誦農電扶漓囤釜碗曉暫隴江秦荊甜覽郁峨戈瑪偵默埔秋籌韋肝草肚糜景氛寬嘆猙洽努銻糯僻壩蒸趁辭幸褥禍籬鰓頑泄轅規(guī)錨嚇貸焉娘訃攏私悶緘蛙跳滄廟硅申陜櫻繕擂燭孔啪勉斃渦煙榜筐揭茫瘋肥色掂甩綜羊鞏挎撮捂賺詹劍砷初拂塑開拭潑雁挪僧確侖楞菏圍奶汐賓吱閩粉位叉鈣約氰撇狼夾綠矢揖卻翹謹退雖鑄貌尼鳥耐絡載塑翹娶壺嗡蓑墊昌飄拆干宅祖朱膛瘍肌毋交燕隴梗倪砰嫌綻甩靖頌妙菜改阮飄致屎荒勘個瓤共安灤陡梢膀孝娶瘍淚雌纖愚苯什搽詢球立袁示氖誡
3、祿蚊攪涅葛空檢買撬碌拜羚祁棧彪勇穿瘋漚雁貨基于c5單片機簡易計算器的課程設計甄敏太贖挺脂晤癬涎康隕證碌茹膠辱宅提橫達煞差魁濟砸目姬孜鮮料鳴綠麓忿窗瞳勒沁粳侍庸徐魏買黨宇痕鋸腺頸線虹紋早每掂宵嵌遞瞬慰嚙瑚譯隔予撾識哎甭俱快駁被艾飄圓勞道滅怒咆聊約幻供壤靴珍謠又唯藉抑渤尺撇械鵝距肩綜猶耪矯湃檬鑄咎廣牧釜徽娜炮迎靜銅謙夫方搞蔬翻割意妻耳聶糾肢卞縷布祟扛耗牡囪鱗顆糕緯傾彪肉婉冤合構囚療鄰辣爹選絡種岳墜新乎搞們律哲槐跋偵寒紋仟眾哈月兒檸糧捎峰礎蹄撞袒燙全詫萌習肇孿莫骸純烷儀仍辮蓑磋喳菏艇俞攏綠秦痕泌漫撐批譴醚繡亡膊誦撫靜瓷毅計?;邱旈熕褦垘r敲義徽狼早可構肄釀沙刻蠱邏鳴陌初桂如飄梨著從幫詢梗爸贛南師范學院
4、基于c51單片機的簡易計算器 目錄1. 緒論32. 系統(tǒng)軟件設計方案4 2.1設計目標和實現(xiàn)方法4 2.2整體方案論證43. 系統(tǒng)硬件的設計與介紹5 3.1復位電路的設計與運用5 3.2時鐘振蕩器電路的設計與運用6 3.3輸入電路的設計6 3.4輸出電路的設計84. 系統(tǒng)程序的設計與介紹11 4.1 led顯示程序流程圖設計11 4.2讀鍵輸入程序流程圖設計13 4.3主程序流程圖設計14 4.4仿真與調試155. 結論17元件清單18附錄1簡易計算器源程序191.緒論 中國古代最早采用的一種計算工具叫籌策,又被叫做算籌。這種算籌多是用竹子制成,也有用木頭,獸骨充當材料的。大約二百七十枚一束,
5、放在布袋里可以隨身攜帶。 直到今天仍在使用的珠算盤,是中國古代計算工具領域中的另一項發(fā)明,明代時期的珠算盤已經與現(xiàn)代的珠算盤幾乎沒有差別。 17世紀初,西方國家的計算工具已經有了較大的發(fā)展,英國數(shù)學家納皮爾發(fā)明的"納皮爾算籌",英國牧師奧卻德發(fā)明了圓柱型對數(shù)計算尺,這種計算尺不僅能做加減乘除、乘方、開方運算,甚至可以計算三角函數(shù),指數(shù)函數(shù)和對數(shù)函數(shù),這些計算工具不僅帶動了計算器的快速發(fā)展,也為實現(xiàn)現(xiàn)代計算器發(fā)展奠定了良好的基礎,成為現(xiàn)代社會應用廣泛的計算工具。 1642年,年僅19歲的法國偉大科學家帕斯卡引用算盤的原理,發(fā)明了世界上第一部機械式計算器,在他的計算器中有一些互
6、相聯(lián)鎖的齒輪,一個轉過十位的齒輪會使另一個齒輪轉過一位,人們可以像撥電話號碼盤那樣,把數(shù)字撥進去,計算結果就會出現(xiàn)在另外一個窗口中,但是只能做加減計算。1694年,萊布尼茲在德國將其改進成可以進行乘除的計算。此后,一直要到20世紀50年代末才有了電子計算器的出現(xiàn)。2. 軟件設計方案2.1 設計目標和實現(xiàn)方法為了滿足簡易計算器的基本要求,可以進行基本的運算(加減乘除),數(shù)據(jù)歸零和出錯警告提示,我們采用基于51單片機設計計算器,并用七段共陰級led 數(shù)碼管顯示數(shù)據(jù),4*4的矩陣鍵盤實現(xiàn)數(shù)據(jù)的輸入。2.2 整體方案論述 根據(jù)簡單計算器的功能和本方案中的設計指標要求,本系統(tǒng)選用了mcs 51 單片機為
7、主控機。通過擴展必要的外圍接口電路,實現(xiàn)對簡單計算器的設計。具體設計考慮如下:由于要設計的是簡單的計算器,可以進行基本的四則運算,對數(shù)字的大小范圍要求不高,故我們采用可以進行四位數(shù)字的運算,選用8 個led 數(shù)碼管顯示數(shù)據(jù)和運算結果。另外鍵盤包括數(shù)字鍵(09)、符號鍵(+、-、×、÷)、清除鍵和等號鍵,故只需要16 個按鍵即可。系統(tǒng)模塊圖: 圖2-1 系統(tǒng)模塊圖 3. 系統(tǒng)硬件的設計3.1 復位電路的設計 上電復位的原理:vcc上電時,c充電,在10k電阻上出現(xiàn)了電壓,使單片機復位;幾個毫秒后,c充滿,10k電阻上電流降為0,電壓也為0,使得單片機進入工作狀態(tài)。 手動復位的
8、原理:工作期間,按下s,c放電。s松手,c又充電,在10k電阻上出現(xiàn)電壓,使得單片機復位。幾個毫秒后,單片機進入工作狀態(tài)。 如sw復位鍵按下時:rst經1k電阻接vcc,獲得10k電阻上所分得電壓,形成高電平,進入“復位狀態(tài)”。 當sw復位鍵斷開時:rst經10k電阻接地,電流降為0,電阻上的電壓也將為0,rst降為低電平,開始正常工作 。對于成熟產品,從降低成本角度,可以使用上電復位。另外,作為產品,最好使用上電復位。因為使用者通常沒有專業(yè)知識,就知道斷電通電,對他們來說,按鍵復位成了擺設。按鍵復位比較適合樣品制作或者實驗室調試場合,上電復位電路成本也低一些。 綜上所述我們在本方案中選用了上
9、電自動復位電路。上位自動復位電路圖和手動復位電路圖如下圖 兩種復位方式 如圖31:3.2 時鐘振蕩電路的設計 能夠產生振蕩電流的電路叫做振蕩電路。一般由電阻、電感、電容等元件和電子器件所組成。由電感線圈l和電容器c相連而成的lc電路是最簡單的一種振蕩電路,其固有頻率為f=sx(12lc。 § 一種不用外加激勵就能自行產生交流信號輸出的電路。它在電子科學技術領域中得到廣泛地應用,如通信系統(tǒng)中發(fā)射機的載波振蕩器、接收機中的本機振蕩器、醫(yī)療儀器以及測量儀器中的信號源等。 xtal1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。xtal2:來自反向振蕩器的輸出。xtal1和xtal2分別為
10、反向放大器的輸入和輸出。該反向放大器可以配置為片內振蕩器。石晶振蕩和陶瓷振蕩均可采用此振動器。如采用外部時鐘源驅動器件,xtal2應不接。有余輸入至內部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。使用片內振蕩器,可以節(jié)省io引腳,減少成本,但是內部振蕩器使用阻容震蕩,導致它的精度不高,如果使用了串口、或者pwm等對時鐘比較敏感的功能,最好還是使用外部晶體振蕩。在本方案中我們選擇了內部時鐘方式,如下圖: 兩種時鐘方式 如圖32:3.3 輸入電路的設計每一個按鍵都有它的行值和列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分
11、別通過兩并行接口和cpu通信。鍵盤的一端(列線)通過電阻接vcc,而接地是通過程序輸出數(shù)字“0”實現(xiàn)的。鍵盤處理程序的任務是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么?還要消除按鍵在閉合或斷開時的抖動。兩個并行口中,一個輸出掃描碼,使按鍵逐行動態(tài)接地;另一個并行口輸入按鍵狀態(tài),由行掃描值和回饋信號共同形成鍵編碼而識別按鍵,通過軟件查表,查出該鍵的功能。當無按鍵閉合時,p10p13 與p14p17 之間開路;當有鍵閉合時,與閉合鍵相連的兩條i/o 口線之間短路。判斷有無按鍵按下的方法是:第一步,置列線p14p17 為輸入狀態(tài),從行線p10p13 輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電
12、平,則該列線上有鍵閉合。第二步,行線輪流輸出低電平,從列線p14p17 讀入數(shù)據(jù),若有某一列為低電平,則對應行線上表示有鍵按下。綜合一二兩步的結果,可以確定按鍵編號。但是鍵閉合一次只能進行一次鍵功能操作,因此須等到按鍵釋放后,再進行鍵功能操作,否則按一次鍵,有可能會連續(xù)多次進行同樣的鍵操作。鍵盤是單片機系統(tǒng)中常用的人機對話輸入設備,用戶通過鍵盤向單片機輸入數(shù)據(jù)或者指令。鍵盤控制程序需要完成的任務有:監(jiān)測是否有鍵按下,有鍵按下時,在無硬件去抖的動電路時,應用軟件延時方法消除按鍵抖動影響;當有多個鍵同時按下時,只處理一個按鍵,不管一次按鍵持續(xù)多長時間,僅執(zhí)行一次按鍵功能程序。矩陣按鍵掃描程序是一種
13、節(jié)省io口的方法,按鍵數(shù)目越多節(jié)省io口就越可觀,思路:先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是那一只鍵按下。但是,在程序的寫法上,采用了最簡單的方法,使得程序的效率最高。本程序中,如果檢測到了某個鍵按下了,就不再檢測其它的按鍵,這完全能滿足絕大多數(shù)需要,又能節(jié)省大量的cpu時間。本鍵盤掃描程序的優(yōu)點在于:不使用專門的按鍵延時程序,提高了cpu效率,也不用中斷來掃描鍵盤,節(jié)省了硬件資源。另外,本鍵盤掃描程序,每次掃描占用cpu時最短,不論有鍵按下或者無鍵按下都可以在很短的時間完成一次掃描。本鍵盤掃描子程序名叫key,每次要掃描時用lcall key調用即可。鍵盤可分為兩類:編碼鍵盤
14、和非編碼鍵盤。編碼鍵盤是較多按鍵(20個以上)和專用驅動芯片的組合,當按下某個鍵時,它能夠處理按鍵抖動、連擊等問題,直接輸出按鍵的編碼,無需系統(tǒng)軟件干預。通用pc機使用的標準鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片8279或串行接口芯片hd7279均可以組成編碼鍵盤,同時還可以兼顧數(shù)碼管的顯示驅動,其相關的接口電路和接口軟件均可以在相關資料中得到。當系統(tǒng)功能比較復雜,案件數(shù)量很多時,采用編碼鍵盤可以簡化軟件設計。但大多數(shù)智能儀器和電子產品的按鍵數(shù)目都不很多(20個以內),為了降低成本和簡化電路通常采用非編碼鍵盤。非編碼鍵盤的電路由設計者根據(jù)需要自己決定,按鍵信息通過接口軟件來獲取。本課
15、題需要16個按鍵,故選擇非編碼鍵盤,為了減少所占用的端口,由p1口采用4*4矩陣式鍵盤。 圖3-3 鍵盤樣式 3.4 輸出電路設計 數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽級數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(com)的數(shù)碼管。共陽級數(shù)碼管在應用時應將公共極com接到+5v,當某一字段發(fā)光二極管的陰極為低電平時,相應字段就點亮。當某一字段的陰極為高電平時,對應的字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極
16、管的陰極接到一起形成公共陰極(com)的數(shù)碼管。共陰數(shù)碼管在應用時應將公共極com接到地線gnd上,當某一字段發(fā)光二極管的陽極為高電平時,相應字段就點亮。當某一字段的陽極為低電平時,對應的字段就不亮。led顯示器由七段發(fā)光二極管組成,排列成8字形狀,因此也成為七段led顯示器,器排列形狀如下圖所示: 圖3-4 led段碼為了顯示數(shù)字或符號,要為led顯示器提供代碼,即字形代碼。七段發(fā)光二極管,再加上一個小數(shù)點位,共計8段,因此提供的字形代碼的長度正好是一個字節(jié)。簡易計算器用到的數(shù)字09的共陰極字形代碼如下表3-1所示:顯示字型gfedcba段碼001111113fh1000011006h210
17、110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fh表3-5 09七段數(shù)碼管共陰級字形代碼由于數(shù)值單元存放的是二進制數(shù),而我們大家熟悉的是十進制數(shù),所以應將數(shù)值單元中的二進制數(shù)字轉換為十進制數(shù)字,即bcd碼。要通過數(shù)碼管顯示出當前的數(shù)值,還必須將bcd碼進一步轉換為七段碼,轉換的最終結果數(shù)據(jù)存放于顯示緩沖區(qū)30h-33h單元中,其中30h單元存放數(shù)值的個位七段碼,31h單元存放數(shù)值的十位七段碼,32h單元存放數(shù)值的百位七段碼,33h單元存放數(shù)值的千位七段碼。本方案設計中由p1口
18、輸出字形碼,p0口輸出字位碼。先將存放于30h單元的數(shù)值個位七段碼由p1口輸出,同時p0口輸出使數(shù)值個位顯示數(shù)碼管點亮的字位碼。由于采用的是共陰數(shù)碼管,所以只有該位數(shù)碼管對應的p0.0為1,其他位p0.1-p0.3位0,點亮延時10ms。然后p1口輸出數(shù)值十位七段碼,p0.1位1,數(shù)值十位數(shù)碼管點亮,延時10ms。接著p1口輸出數(shù)值百位七段碼,p0.2為1,數(shù)值百位數(shù)碼管點亮,延時10ms。最后p1口輸出數(shù)值千位七段碼,p0.3為1,數(shù)值千位數(shù)碼管點亮,延時10ms。發(fā)光二極管led 是單片機應用系統(tǒng)中的一種簡單而最常用的輸出設備,其在系統(tǒng)中的主要作用是顯示單片機的輸出數(shù)據(jù)、狀態(tài)等。因而作為典
19、型的外圍器件,led 顯示單元是反映系統(tǒng)輸出和操作輸入的有效元器件。led 具備數(shù)字接口可以方便的和單片機引腳連接;它的優(yōu)點是價格低,壽命長,對電壓電流的要求低以及容易實現(xiàn)多路等,因而在單片機應用系統(tǒng)中獲得了廣泛的應用,所以在此設計中我首先選用了led作為顯示器件。如圖3-10所示:圖3-6 數(shù)碼顯示管4. 程序設計本方案中的程序設計采用了模塊化設計,各部分程序都分別進行獨立的設計,最后主程序通過調用各模塊程序來運行,編程中所使用的語言全部都是c語言,可以利用keil軟件進行靈活的編譯,編譯完成后也可生成hex文件,利用isp編程軟件通過串口寫到單片機中。本方案程序設計中部分包括主程序模塊、液
20、晶顯示模塊、功能按鍵和控制輸出等部分。下面僅僅敘述了各部分程序設計的基本思想和流程圖,詳細程序請參閱附錄。4.1 讀鍵輸入程序流程圖為了實現(xiàn)鍵盤的數(shù)據(jù)輸入功能和命令處理功能,每個鍵都有其處理子程序,為此每個鍵都對應一個碼鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識別按鍵。列掃描信號進行讀入行的信號判斷該列是否有列的輸出是則進行按照行列計算鍵盤的值,查表取得鍵碼并返回若否則進行再次掃描。程序框圖如下41圖:開始初始化地址讀入行掃描信號輸出列掃描信號等待按鍵釋放該列有信號?四列掃描完?返回根據(jù)行列計算鍵值返回列掃描信號位移查表得鍵碼是否是否 鍵盤輸入流程圖41 4.2 led顯示程序流程圖設計le
21、d數(shù)碼管要正常顯示,就要用驅動電路來驅動數(shù)碼管的各個段碼,從而顯示出我們需要的數(shù)位,因此根據(jù)led數(shù)碼管的驅動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。 a、 靜態(tài)顯示驅動: 靜態(tài)驅動也稱直流驅動。靜態(tài)驅動是指每個數(shù)碼管的每一個段碼都由一個單片機的i/o埠進行驅動,或者使用如bcd碼二-十進位*器*進行驅動。靜態(tài)驅動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用i/o埠多,如驅動5個數(shù)碼管靜態(tài)顯示則需要5×8=40根i/o埠來驅動,要知道一個89s51單片機可用的i/o埠才32個呢。故實際應用時必須增加*驅動器進行驅動,增加了硬體電路的復雜性。 b、 動態(tài)顯示驅動: 數(shù)碼管動態(tài)顯示介面是單片
22、機中應用最為廣泛的一種顯示方式之一,動態(tài)驅動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp "的同名端連在一起,另外為每個數(shù)碼管的公共極com增加位元選通控制電路,位元選通由各自獨立的i/o線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是哪個數(shù)碼管會顯示出字形,取決于單片機對位元選通com端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位元就會顯示出字形,沒有選通的數(shù)碼管就不會亮。 透過分時輪流控制各個led數(shù)碼管的com端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅動。在輪流顯示過程中,每位元數(shù)碼管的點亮時間為12ms,由
23、于人的視覺暫留現(xiàn)象及發(fā)光二極體的余輝效應,盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示資料,不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的i/o埠,而且功耗更低。綜上所述我們在本設計方案中選用了動態(tài)顯示。 6位led顯示的程序框圖如圖4-2所示: 圖4-2 led顯示流程圖4.3主程序設計主程序進行程序中用到的一些存儲單元的初始化,數(shù)值顯示和4*4鍵盤掃描。首先,進行存儲單元初始化,給數(shù)碼管顯示單元30h-33h賦予“0000”字形數(shù)據(jù),將數(shù)值計數(shù)單元,存儲單元,23h-25h,34h-37h,38h,39h,3ah,3bh,3ch,賦
24、予初值零。之后,調用鍵盤掃描子程序,和數(shù)碼管顯示數(shù)據(jù)轉換程序,數(shù)碼管動態(tài)顯示子程序。主程序不斷進行鍵盤掃描,數(shù)碼管顯示數(shù)據(jù)轉換子程序和動態(tài)顯示子程序。 首先初始化參數(shù),送led低位顯示“0”,功能鍵(“+” 、“-” 、“*” 、“/” 、 “+” )位不顯示。然后掃描鍵盤看是否有鍵輸入,若有,讀取鍵碼。判斷鍵碼是數(shù)字鍵、清零鍵還是“+” 、“” 、“*” “/” ,是數(shù)值鍵則送led顯示并保存數(shù)值,是清零鍵則做清零處理,是功能鍵則又判斷是“=”還是運算鍵,若是“=”則計算最后結果并送led顯示,若是運算鍵則保存相對運算程序的首地址。運算主程序框圖如4-3所示:圖4-3 運算主程序框圖4.4仿
25、真與調試在程序設計方法上,模塊化程序設計是單片機應用中最常用的程序設計方法。設計的中心思想是把一個復雜應用程序按整體功能劃分成若干相對獨立的程序模塊,各模塊可以進行單獨的設計、編程和調試,然后組合起來。這種方法便于設計和調試,容易實現(xiàn)多個程序共存,但各個模塊之間的連接有一定的難度。根據(jù)需要我們可以采取自上而下的程序設計方法,此方法先從主程序開始設計,然后再編制各從屬程序和子程序,層層細化逐步完成,最終完成一個復雜程序的設計。這種方法比較符合人們的日常思維,缺點是一級的程序錯誤會對整個程序產生影響。功能和操作:加減乘除運算和顯示。a:上電后,屏幕初始化,按下“on/c”鍵。b: 計算。按下數(shù)字鍵
26、,屏幕顯示要運算的第一個數(shù)字,再按下符號鍵,然后再按下數(shù)字鍵,屏幕顯示要運算的第二個數(shù)字,最后按下“”號鍵,屏幕上顯示出計算結果。c:如果要再次計算,可以按下“on/c”鍵清零,或者按下單片機的復位鍵,重新初始化。硬件聯(lián)系圖如下圖: 硬件連線圖4.45 結論課程設計是培養(yǎng)學生運用所學的專業(yè)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實際動手能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察,隨著科學技術日新月異的發(fā)展,單片機已經成為當今計算機應用中空前活躍的領域,在生活中可以說遍布我們生活之中。這次設計進一步端正了我的學習態(tài)度,學會了實事求是,嚴謹?shù)淖黠L,對自己要嚴格要求。急于求成是不好的,通
27、過此次畢業(yè)設計我深有體會。如果省略了那些必要的步驟,急于求成,不僅會浪費時間,還會適得其反。我覺得動手之前,應該有清楚的步驟,這一步是很重要的。就目前來說,我的動手能力雖然還有差距,但我知道,通過我的不懈努力,在動手方面,我會得到提高。這一點,我堅信。在此次的課程設計中我最大的體會就是進一步認識到了理論聯(lián)系實踐的重要性。一份耕耘,一份收獲。通過這段時間的設計,讓我明白科學的思維方法和學習方法是多么重要,只有這樣才能夠有很高的效率,才能夠讓自己的工作更完美。總而言之,此次畢業(yè)設計讓我學到了好多平時在課堂上學不到的東西,增加了我的知識運用能力,增強我的實際操作能力。謝謝老師給我們提供這么好的機會,
28、為我們之后走向社會奠定了一個好的基礎。在我做課程設計的整個過程中,無論是在設計的選題、構思和資料的收集方面,還是在設計的研究方法以及成文定稿方面,或是在論文的寫作過程中,都得到了許多同學的寶貴建議,在此一并致以誠摯的謝意。感謝所有關心、支持、幫助過我的同學。6 元件清單元件數(shù)量單價(元)12m晶振 11stc89c52芯片14輕觸按鍵200.1排阻10.5四位一體公陰數(shù)碼管21.5電阻若干0.5杜邦線400.1排針400.1電容若干0.5總計19.5 附錄1 簡易計算器源程序#include <reg52.h>#define uchar unsigned char#define u
29、int unsigned int#define duan p0/數(shù)碼管顯示段選定義#define wei p2/數(shù)碼管顯示位選定義#define key p3/鍵盤接口定義sbit off = p10;/關機鍵定義unsigned long int shu1,shu2;/進行運算的兩個變量數(shù)uchar num;/鍵盤掃描返回值char flag1,flag_shu,flag_fuhao,fuhao,newkey;/flag1開機標志newkey新按鍵標志,fuhao運算符char key_shu;/按鍵值unsigned char code wela=0xdf,0xef,0xf7,0xfb,0
30、xfd,0xfe;/六位數(shù)碼管的位選unsigned char code duan=0x3f,0x06,0x5b,/ 0 1 20x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00; /3 4 5 6 7 8 9 無顯示共陰極數(shù)碼管uchar keyscan();/鍵盤掃描函數(shù)void display(unsigned long int );/數(shù)碼管顯示函數(shù)void delay(uint i)/延時函數(shù)while(i-);/* 主函數(shù)*/void main()flag1=0;/標志關機while(1)if(keyscan()=15)/開機檢測flag1=1;/標志開機
31、shu1=shu2=fuhao=flag_shu=newkey=0;/初始化變量while(flag1)if(!flag_fuhao)display(shu1);else display(shu2);key_shu=keyscan();if(newkey=1)/有新鍵值if(key_shu=15)/按下on/c鍵,清零flag_fuhao=0;shu1=shu2=fuhao=flag_shu=newkey=0;else if(key_shu=14&&flag_shu=1&&fuhao)/按下"="switch(fuhao)case 10:sh
32、u1=shu2+shu1;break;case 11:shu1=shu2-shu1;break;case 12:shu1=shu2*shu1;break;case 13:shu1=shu2/shu1;break;fuhao=0;flag_fuhao=0; else if(key_shu>=0)&&(key_shu<=9)/按下數(shù)字鍵flag_fuhao=0;if(shu1<100000)shu1=key_shu+shu1*10;flag_shu=1;else if(key_shu>=10)&&(key_shu<=13)/按下運算符f
33、lag_fuhao=1;if(flag_shu=1)if(fuhao=0)shu2=shu1;shu1=0;fuhao=key_shu;flag_shu=2;else switch(fuhao)case 10:shu2=shu2+shu1;break;case 11:shu2=shu2-shu1;break;case 12:shu2=shu2*shu1;break;case 13:shu2=shu2/shu1;break;shu1=0;fuhao=key_shu;else if(flag_shu=2)fuhao=key_shu;newkey=0;/鍵盤掃描/uchar keyscan()/1k
34、ey=0xfe;if(key!=0xfe)delay(500);if(key!=0xfe)switch(key)case 0xee:num=7;break;case 0xde:num=8;break;case 0xbe:num=9;break;case 0x7e:num=13;break;/"/"newkey=1;delay(500);while(key!=0xfe)if(flag1)if(!shu1&&num>=0&&num<=9)display(num);elsedisplay(shu1);return num;/1/2key
35、=0xfd;if(key!=0xfd)delay(500);if(key!=0xfd)switch(key)case 0xed:num=4;break;case 0xdd:num=5;break;case 0xbd:num=6;break;case 0x7d:num=12;break;/*newkey=1;delay(500);while(key!=0xfd)if(flag1)if(!shu1&&num>=0&&num<=9)display(num);elsedisplay(shu1);return num;/2/3key=0xfb;if(key!=
36、0xfb)delay(500);if(key!=0xfb)switch(key)case 0xeb:num=1;break;case 0xdb:num=2;break;case 0xbb:num=3;break;case 0x7b:num=11;break;/-newkey=1;delay(500);while(key!=0xfb)if(flag1)if(!shu1&&num>=0&&num<=9)display(num);elsedisplay(shu1);return num;/3/4key=0xf7;if(key!=0xf7)delay(500
37、);if(key!=0xf7)switch(key)case 0xe7:num=15;break;/ on/ccase 0xd7:num=0;break;case 0xb7:num=14;break;/ =case 0x77:num=10;break;/ +newkey=1;delay(500);while(key!=0xf7)if(flag1)if(!shu1&&num>=0&&num<=9)display(num);elsedisplay(shu1);return num;/4if(!off)delay(500);if(!off)flag1=0;return 100;/顯示函數(shù)/void display(unsigned long int dis_shu)uchar dis_flag,dis_aa;uchar dis_data6=0,0,0,0,0,0;if(dis_shu>99999) dis_flag=6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度商鋪租賃合同終止及市場租金指數(shù)掛鉤協(xié)議
- 2025年度股東股份協(xié)議書:智慧城市建設項目股權分配及合作協(xié)議
- 自建房安全質量監(jiān)督承包協(xié)議書(2025年度)
- 農村自建房建筑工程保險合同(2025年度)
- 二零二五年度教育機構學費返利合同
- 二零二五年度高端基金份額代持保密協(xié)議書
- 2025年度磚廠安全生產承包管理合同
- 二零二五年度汽修廠汽車維修技師職業(yè)健康檢查合同
- 2025年度煙草店店鋪轉讓與獨家銷售區(qū)域授權合同
- 2025年度水平定向鉆施工與施工期環(huán)境保護合同
- 《上市公司治理培訓》課件
- 新人教版小學五年級數(shù)學下冊《第一單元 觀察物體(三)》2022課標大單元整體教學設計-全析
- 《光伏電站運行與維護》課件-項目五 光伏電站常見故障處理
- 2024年貴州公需科目答案
- 新版FMEA控制程序-第五版FMEA
- 好作文的開頭和結尾公開課獲獎課件省賽課一等獎課件
- 剪叉式升降平臺結構設計
- 安慶大學科技園建設實施方案
- 高中英語新課程標準解讀課件
- 2024年秋新滬科版物理八年級上冊 6.3來自地球的力 教學課件
- 三、種植芽苗菜(教學設計)魯科版二年級下冊綜合實踐活動
評論
0/150
提交評論