




已閱讀5頁,還剩9頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
嵌入式系統二課程設計報告 計算器系統的設計設計日期:2011年07月4日 至 2011年07月8日設計題目: 計算器系統的設計 設計的主要內容及目標:基于2410試驗箱實現計算器功能,通過輸入輸出端口擴展鍵盤的方法,將按鍵鍵值在數碼管中顯示,可實現帶括號以及優先級的計算器,可運算加減乘除等基本運算。指導教師: 2011年7月4日教師評閱意見書:評閱教師: 2011 年 月 日摘 要基于JXARM9-2410實驗箱實現計算器功能,通過了解鍵盤接口原理以及輸入輸出端口擴展鍵盤的方法,編寫矩陣鍵盤的掃描程序,將按鍵鍵值在數碼管中顯示,可運算加減乘除等基本運算,也可實現帶括號以及優先級的運算。計算時可顯示-999999+999999之間的任何數,由于鍵盤數量有限,只能進行加法和乘法兩種運算。系統硬件主要分為處理器模塊、LED模塊、鍵盤模塊。軟件主要由主模塊、顯示模塊、按鍵處理模塊組成。關鍵詞:JXARM9-2410試驗箱,處理模塊,LED模塊,鍵盤模塊1 目的及意義計算器是我們日常生活和生產工作中重要的工具,能極大的提高我們的計算速度,通過本次課程設計,對計算器能有更深程度的了解,對今后的學習生活一定會有很大的幫助。2 系統的基本原理及設計思想2.1 基本原理1鍵盤原理JXARM9-2410教學實驗系統的鍵盤電路由一塊74HC273鎖存器和74LVCH244緩沖器完成鍵盤識別。在沒有按鍵的情況下,ROW0-ROW3通過上拉來保持高電平。檢測時通過將COL0-COL3中的某一列輸入低電平,如果該列沒有鍵按下時,通過74LVCH244讀取到的行值應該為高電平,如果該列某行位置有鍵按下,那么該行讀到的值應為低電平。因此,采用輪詢方式檢測鍵盤的方法為:循環往各列輸入低電平,然后讀取行值,如果為高電平,則判斷下一列,否則,該行有鍵按下,此時已經讀取到了按鍵的行值和列值,然后根據行值和列值得到鍵碼。2LED原理JXARM9-2410擁有六位7段數碼管。要在某位數碼管上顯示一個段碼表中的字符,需要使用地址空間0x10000006選擇位碼,并將待顯示的數據存儲在地址空間0x10000004中。表1 JXARM9-2410教學實驗系統段碼表字符01234567段碼0xc00xf90xa40xb00x990x920x820xf8字符89ABCDEF段碼0x800x900x880x830xc60xa10x860x8e表2 JXARM9-2410教學實驗系統位碼表位數123456位碼0x3e0x3d0x3b0x370x2f0x1f表3 JXARM9-2410教學實驗系統地址空間分配地址空間說明數據寬度讀/寫(屬性)0x10000004數碼管數據寄存器8位W0x10000006數碼管掃描控制寄存器8位W3計算原理 定義一個操作數棧Opnd,一個操作符棧Optr。 思想是:置操作數棧為空,操作符棧壓入元素“#”(它具有最高優先級),依次讀入表達式中的每個字符CH,如果CH是操作數,則CH壓入操作數棧,如果CH是操作符,那么將CH和操作數棧頂元素進行優先級比較(如X優先級高于+)。 如果優先級大于當前棧頂元素,那么將其壓棧,如果優先級小于當前棧頂元素,那么執行op=optr.pop();(取當前棧頂操作符),a=opnd.pop()(取當前棧頂操作數存入臨時變量a);b=opnd,pop()(取當前棧頂操作數存入臨時變量b);c=計算(a op b);opnd.push(c);如果優先級相等,則當前操作符出棧。 重復上述操作直到表達式處理完畢。 最后操作數棧剩余的操作數就是計算的最終結果。2.2設計思想1.系統結構框圖本系統由小鍵盤模塊,處理模塊,顯示模塊組成。其結構框圖如圖1所示:小鍵盤模塊處理模塊顯示模塊鍵盤鍵值待顯示數值圖1 系統結構框圖2系統設計思想 小鍵盤模塊:計算器的輸入部分,用于得到用戶輸入的表達式,該模塊調用系統提供的Key_GetKeyPoll();函數,得到當前采集到的鍵值的ASCII碼,并將ASCII碼傳遞到處理模塊。處理模塊:計算器的核心部分,該模塊接收小鍵盤模塊傳遞的ASCII碼值,進行處理,將待顯示數值的段碼和位碼傳遞到顯示模塊。顯示模塊:計算器的顯示部分,用于顯示計算機的中間數據和最終結果,該模塊接收處理模塊待顯示的數據,將有效數據顯示在LED上。完成計算機器的功能。3設計方案 方案一:小鍵盤模塊和顯示模塊采用上述方法,處理模塊采用單棧結構的逆波蘭式算法。 方案二:小鍵盤模塊和顯示模塊采用上述方法,處理模塊采用運算符號觸發。4用戶說明 計算器鍵盤說明:123+456789CE0()=系統采用JXARM9-2410教學實驗箱提供的4*4鍵盤,布局如圖,由于數量限制,故只能進行加法和乘法兩種算法。 計算器LED顯示部分說明: 系統采用JXARM9-2410教學實驗箱提供的6位7段數碼管,計算式可顯示-999999+999999之間的任何數。3 核心程序設計調用按鍵函數,判斷相應按鍵鍵值,調用相應的子程序,通過計算將最后結果顯示在數碼管上,具體流程圖如圖2。開始調用CH=Key_GetkeyPoll()函數CH=0&CH=0&ch=65&ch999999)for(i=0;i=5;i+)*(U8*) 0x10000006) = SEG1;*(U8*) 0x10000004) = seg7table14;Delay(DELAYTIME);*(U8*) 0x10000006) = SEG0;*(U8*) 0x10000004) = seg7table14;Delay(DELAYTIME);else for(i=0;i=5;i+) flag=0;if(cur=(num/100000)%10)flag=1;*(U8*) 0x10000006) = SEG5;*(U8*) 0x10000004) = seg7tablecur;Delay(DELAYTIME);if(cur=(num/10000)%10) | flag)flag=1;*(U8*) 0x10000006) = SEG4;*(U8*) 0x10000004) = seg7tablecur;Delay(DELAYTIME);if(cur=(num/1000)%10) | flag)flag=1;*(U8*) 0x10000006) = SEG3;*(U8*) 0x10000004) = seg7tablecur;Delay(DELAYTIME);if(cur=(num/100)%10) | flag)flag=1;*(U8*) 0x10000006) = SEG2;*(U8*) 0x10000004) = seg7tablecur;Delay(DELAYTIME);if(cur=(num/10)%10) | flag)flag=1;*(U8*) 0x10000006) = SEG1;*(U8*) 0x10000004) = seg7tablecur;Delay(DELAYTIME);*(U8*) 0x10000006) = SEG0;*(U8*) 0x10000004) = seg7tablenum%10;Delay(DELAYTIME);/*-棧處理-*/void Push(int * stack,int * top,int val)if(stack=Num)PRINTF(PUSH val %dn,val);else PRINTF(PUSH sym %cn,val);if(*top = STACK_SIZE) return;stack(*top)+ = val;int Po
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學美術學科培訓
- ICU護理學習文獻匯報
- 電梯安全知識教育
- 建筑企業質量安全月培訓
- 海關監管體系課件
- 個人舞蹈教室租賃合同模板
- 罐頭食品HACCP體系評估與優化合同
- 企業股權收購撤銷及利益分配合同
- 餐飲行業食品安全事故處理協議
- 知名餐飲品牌總經理任職及品牌推廣合同
- 留學宣講活動策劃方案
- 林下種植中藥材的可行性方案
- GB/T 43543-2023漱口水
- 鋼廠燒結機安裝施工組織設計
- 國家開放大學電大專科《憲法學》2025期末試題及答案
- 電信營業廳規章制度范文(2篇)
- 火龍罐療法經典課件
- 德國司法鑒定培訓心得
- xxxx智能化工程施工進度計劃表
- 汽車修理廠管理制度
- 孫正聿《哲學通論》(修訂版)配套題庫【考研真題精選+專項題庫】
評論
0/150
提交評論