




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 電氣與電子信息工程學(xué)院 單片機(jī)課設(shè)設(shè)計(jì) 單片機(jī)課程設(shè)計(jì)報(bào)告(bogo)教 學(xué) 院: 專業(yè)(zhuny)班級(jí): 學(xué) 號(hào): 學(xué)生(xu sheng)姓名: 指導(dǎo)教師: 時(shí) 間: 地 點(diǎn): 單片機(jī)課程設(shè)計(jì)任務(wù)書一、課題(kt)名稱單片機(jī)課程設(shè)計(jì)二、設(shè)計(jì)(shj)目的 為了進(jìn)一步鞏固學(xué)習(xí)的理論知識(shí)(zh shi),增強(qiáng)學(xué)生對(duì)所學(xué)知識(shí)的實(shí)際應(yīng)用能力和運(yùn)用所學(xué)的知識(shí)解決實(shí)際問(wèn)題的能力,開(kāi)始為期兩周的單片機(jī)課程設(shè)計(jì)。通過(guò)實(shí)訓(xùn)使學(xué)生在鞏固所學(xué)知識(shí)的基礎(chǔ)之上具有初步的單片機(jī)系統(tǒng)設(shè)計(jì)與應(yīng)用能力。三、設(shè)計(jì)內(nèi)容設(shè)計(jì)基于51單片機(jī)的簡(jiǎn)易計(jì)算器系統(tǒng)電路,并以該電路為基礎(chǔ)進(jìn)行編程,要求能夠?qū)崿F(xiàn)099之間的數(shù)進(jìn)行加、減、乘
2、、除運(yùn)算的功能。 四、設(shè)計(jì)要求 1、設(shè)計(jì)簡(jiǎn)易計(jì)算器,要求能對(duì)099之間的數(shù)進(jìn)行加、減、乘、除運(yùn)算。2、用44的鍵盤作為輸入設(shè)備。3、用LED或LCD進(jìn)行顯示。4、編寫無(wú)符號(hào)數(shù)加、減、乘、除運(yùn)算、輸入和顯示的程序。5、對(duì)系統(tǒng)的進(jìn)行綜合和調(diào)試,使其具有對(duì)099之間的數(shù)進(jìn)行加、減、乘、除運(yùn)算的功能。6、編寫課程設(shè)計(jì)的總結(jié)五、設(shè)計(jì)進(jìn)度表序號(hào)設(shè)計(jì)內(nèi)容所用時(shí)間1布置任務(wù),學(xué)習(xí)簡(jiǎn)易計(jì)算器的工作原理以及硬件電路設(shè)計(jì)3天2完成鍵盤、顯示和計(jì)算功能的程序設(shè)計(jì)3天3制作電路板1天4答辯、撰寫設(shè)計(jì)報(bào)告書3天合 計(jì)10天六、設(shè)計(jì)報(bào)告課程設(shè)計(jì)報(bào)告的基本內(nèi)容至少包括封面、正文、附錄三部分。課程設(shè)計(jì)報(bào)告要求統(tǒng)一格式,字體工整
3、規(guī)范。1、封面封面包括“單片機(jī)課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告”、班級(jí)、姓名、學(xué)號(hào)以及完成日期等。2、正文正文是實(shí)踐設(shè)計(jì)報(bào)告的主體,具體由以下幾部分組成:(1)課程設(shè)計(jì)題目(tm);(2)課程設(shè)計(jì)任務(wù)(rn wu)與要求;(3)設(shè)計(jì)過(guò)程(包括(boku)設(shè)計(jì)方案、設(shè)計(jì)原理、創(chuàng)新點(diǎn)以及采用的新技術(shù)等);(4)方案的比較與論證;(5)硬件電路設(shè)計(jì),各個(gè)模塊的設(shè)計(jì)與器件的選擇;(6)軟件程序的設(shè)計(jì)與調(diào)試;(7)課程設(shè)計(jì)總結(jié)(包括自己的收獲與體會(huì);遇到的問(wèn)題和解決的方法;技術(shù)實(shí)現(xiàn)技巧和創(chuàng)新點(diǎn);作品存在的問(wèn)題和改進(jìn)設(shè)想等);3附錄附錄1:系統(tǒng)設(shè)計(jì)原理圖附錄2:系統(tǒng)硬件元器件清單附錄3:系統(tǒng)的程序七、考核方式與成績(jī)?cè)u(píng)
4、定辦法評(píng)定項(xiàng)目評(píng)分成績(jī)1. 設(shè)計(jì)的實(shí)物功能齊全,制作美觀(50分)2. 態(tài)度認(rèn)真、學(xué)習(xí)刻苦、遵守紀(jì)律(15分)3. 設(shè)計(jì)報(bào)告的規(guī)范化、參考文獻(xiàn)充分(不少于5篇)(20分)4. 答辯(15分)總分(100分)備注:成績(jī)等級(jí):優(yōu)(90分100分)、良(80分89分)、中(70分79分)、及格(60分69分)、60分以下為不及格。八、參考書目1李朝青.單片機(jī)原理及接口技術(shù)(簡(jiǎn)明修訂版).杭州:北京航空航天大學(xué)出版社,19982李廣弟.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué)出版社,19943閻石.數(shù)字電子技術(shù)基礎(chǔ)(第三版). 北京:高等教育出版社,19894廖常初.現(xiàn)場(chǎng)總線概述J.電工技術(shù),1999.5
5、徐仁貴等編著.單片微型計(jì)算機(jī)應(yīng)用技術(shù).北京:機(jī)械工業(yè)出版社.2001年2月第1版 6 張毅剛等編著.單片機(jī)原理及應(yīng)用. 北京:高等教育出版社.2004年1月第1版 一、課程設(shè)計(jì)任務(wù)(rn wu)與要求 設(shè)計(jì)(shj)基于51單片機(jī)的簡(jiǎn)易(jiny)計(jì)算器系統(tǒng)電路,并以該電路為基礎(chǔ)進(jìn)行編程,要求能夠?qū)崿F(xiàn)099之間的數(shù)進(jìn)行加、減、乘、除運(yùn)算的功能,并要求如下: 1、設(shè)計(jì)簡(jiǎn)易計(jì)算器,要求能對(duì)099之間的數(shù)進(jìn)行加、減、乘、除運(yùn)算; 2、用44的鍵盤作為輸入設(shè)備; 3、用LED或LCD進(jìn)行顯示; 4、使用C語(yǔ)言編寫無(wú)符號(hào)數(shù)加、減、乘、除運(yùn)算、輸入和顯示的程序; 5、對(duì)系統(tǒng)的進(jìn)行綜合和調(diào)試,使其具有對(duì)09
6、9之間的數(shù)進(jìn)行加、減、乘、除運(yùn)算的功能,還具有清零功能等; 6、編寫課程設(shè)計(jì)的總結(jié)。二、設(shè)計(jì)方案與選擇方案1、芯片1.1、方案構(gòu)思本設(shè)計(jì)中的芯片可以采用兩種方案,一種是以FPGA為核心處理芯片,配備相應(yīng)的外設(shè);另一種是以STC89C52處理器,配備相應(yīng)的外設(shè)。(1)方案一:采用FPGA控制FPGA是一種高密度的可編程邏輯器件,自從Xilinx公司1985年推出第一片F(xiàn)PGA以來(lái),F(xiàn)PGA的集成密度和性能提高很快,其集成密度最高達(dá)500萬(wàn)門/片以上,系統(tǒng)性能可達(dá)200MHz。由于FPGA器件集成密度高,方便易用,開(kāi)發(fā)和上市周期短,在數(shù)字設(shè)計(jì)和電子生產(chǎn)中得到迅速普及和應(yīng)用,并一度在高密度的可編程邏
7、輯器件領(lǐng)域中獨(dú)占鰲頭。但是基于SRAM編程的FPGA,其編程信息需存放在外部存儲(chǔ)器上,需外部存儲(chǔ)器芯片,且使用方法復(fù)雜,保密性差,而其對(duì)于一個(gè)簡(jiǎn)單的計(jì)算器而言,使用FPGA有點(diǎn)大材小用,成本太高。(2)方案二:采用AT89C51單片機(jī)是單片微型機(jī)的簡(jiǎn)稱,故又稱為微控制器MCU(Micro Control Unit)。通常由單塊集成電路芯片組成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件:中央處理器CPU,存儲(chǔ)器和I/O接口電路等。因此,單片機(jī)只要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個(gè)單片機(jī)控制系統(tǒng)。單片機(jī)廣泛應(yīng)用于智能產(chǎn)品,智能儀表,測(cè)控技術(shù),智能接口等,具有操作簡(jiǎn)單、實(shí)用方便、價(jià)格便宜等優(yōu)點(diǎn)。AT8
8、9C51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器。1.2、方案比較與選擇通過(guò)以上兩種方案的論證和比較,從設(shè)計(jì)的實(shí)用性、方便性和成本
9、等諸多方面考慮,最終選擇了以AT89C51單片機(jī)作為中央處理單元進(jìn)行計(jì)算器的設(shè)計(jì),這樣設(shè)計(jì)能夠?qū)崿F(xiàn)對(duì)六位整數(shù)、兩位小數(shù)的加、減、乘、除的四則運(yùn)算。2、輸入模塊2.1、方案(fng n)構(gòu)思(1)方案一:采用(ciyng)獨(dú)立式按鍵作為輸入模塊獨(dú)立式按鍵輸入模塊,其特點(diǎn)是:直接用I/O口構(gòu)成單個(gè)按鍵電路,接口電路配置靈活(ln hu)、按鍵識(shí)別和軟件結(jié)構(gòu)簡(jiǎn)單;但是當(dāng)鍵數(shù)較多時(shí),占用I/O口較多,比較浪費(fèi)資源。其原理圖如圖1所示。 圖 1 獨(dú)立的功能按鍵 圖 2 矩陣鍵盤輸入(2)方案二:采用矩陣式鍵盤作為輸入模塊矩陣式按鍵輸入模塊,其特點(diǎn)是:電路和軟件稍復(fù)雜,但相比之下,當(dāng)鍵數(shù)越多時(shí),越節(jié)約I/
10、O口,比較節(jié)省資源。其原理圖如圖2所示。2.2、方案比較與選擇本設(shè)計(jì)中的輸入模塊使用的是矩陣鍵盤輸入。鍵盤輸入預(yù)置用于計(jì)算,按鍵較多。若是采用獨(dú)立按鍵,需頻繁按鍵,為軟件設(shè)計(jì)增加負(fù)擔(dān),且操作界面不友好;若是采用矩陣式按鍵,可以方便地輸入一個(gè)數(shù)值,使操作界面更具有人性化,且節(jié)約了寶貴的I/O口資源。通過(guò)對(duì)比,故采用方案二作為系統(tǒng)輸入模塊。3、顯示模塊3.1、方案構(gòu)思(1)方案一:采用LED數(shù)碼管靜態(tài)顯示采用LED數(shù)碼管的靜態(tài)顯示,其特點(diǎn)是:其亮度較高;這種顯示方式接口,編程容易且管理簡(jiǎn)單;不足的是,占用的I/O的線資源較多。如果采用單片機(jī)或CPLD/FPGA來(lái)控制的話,勢(shì)必存在浪費(fèi)I/O口資源的
11、問(wèn)題。如圖3所示。圖 3 4位數(shù)碼管靜態(tài)顯示(2)方案二:采用LED數(shù)碼管動(dòng)態(tài)顯示采用LED數(shù)碼管的動(dòng)態(tài)顯示,其特點(diǎn)是:其亮度比靜態(tài)顯示的亮度要差一些;但其電路比較簡(jiǎn)單,適合于顯示位數(shù)較多的情況。如圖4所示。圖 4 4位數(shù)碼管的動(dòng)態(tài)顯示(3)方案(fng n)三:采用LCD1602液晶顯示采用LCD1602液晶顯示,其特點(diǎn)是:可以調(diào)節(jié)其背光亮度,這種顯示方式接口,編程雖然有些(yuxi)麻煩,但管理較方便,占用的I/O口資源線也不多。3.2、方案比較(bjio)與選擇本設(shè)計(jì)中的顯示模塊使用的是LCD1602液晶顯示。在計(jì)算器運(yùn)算中,需顯示的數(shù)字、符號(hào)較多,按很據(jù)個(gè)方面的特點(diǎn),而后可以發(fā)現(xiàn)LCD
12、液晶顯示,雖然在價(jià)格上的確是稍貴于LED數(shù)碼管;但數(shù)碼管在硬件設(shè)計(jì)電路中,會(huì)因線太多、線路復(fù)雜而過(guò)于繁瑣,則舍棄LED數(shù)碼管,選擇LCD液晶顯示。通過(guò)對(duì)比,故采用方案三作為系統(tǒng)顯示模塊。三、整體方案原理框圖1.1硬件與軟件系統(tǒng)設(shè)計(jì) 依據(jù)系統(tǒng)分析及實(shí)現(xiàn)功能,硬件小系統(tǒng)方框圖如圖1所示:?jiǎn)纹瑱C(jī)振蕩電路鍵盤輸入液晶顯示對(duì)比度調(diào)節(jié)復(fù)位電路圖5 依據(jù)系統(tǒng)硬件設(shè)計(jì),軟件系統(tǒng)主要包括:?jiǎn)纹瑱C(jī)控制程序模塊:作為系統(tǒng)的主控制程序模塊,用KeilC編程控制其他(qt)程序模塊的協(xié)調(diào)工作;鍵盤程序模塊:用來(lái)輸入用戶的功能,使單片機(jī)完成(wn chng)相應(yīng)的控制功能;液晶顯示模塊(m kui):使用字符型液晶顯示器
13、顯示用戶的選擇。1.2 單片機(jī)模塊 單片機(jī)控制主程序流程圖如下:開(kāi)始初始化掃描鍵盤得鍵值顯示定位顯示結(jié)束圖6 單片機(jī)外圍擴(kuò)展電路程序模塊為了節(jié)約成本,本設(shè)計(jì)中液晶顯示模塊與單片機(jī)之間采用模擬口線的方式控制,鍵盤與單片機(jī)之間采用掃描的工作方式。 鍵盤程序流程圖(掃描方式)鍵盤程序流程圖如下所示:開(kāi)始有鍵按下?鍵盤消抖掃描鍵盤得鍵值存入累加器結(jié)束有鍵按下?YYNN 圖7 LCM程序(chngx)流程圖如下所示:開(kāi)始LCD初始化LCD是否為忙?單片機(jī)向LCD寫命令單片機(jī)向LCD寫數(shù)據(jù)顯示數(shù)據(jù)結(jié)束YN圖8 本設(shè)計(jì)的軟件系統(tǒng)分別用偉福E6000和KeilC編寫及編譯。4*4鍵盤程序模塊用匯編語(yǔ)言和C語(yǔ)言
14、編寫,實(shí)現(xiàn)直接從P2口掃描(somio)得到鍵盤碼,并采用查詢方式得到與之對(duì)應(yīng)的LCD字型碼,在LCD上顯示出來(lái)。四、單元(dnyun)電路設(shè)計(jì)1.1鍵盤輸入 計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨(dú)立按鍵的方式,在這種情況下,編程會(huì)很簡(jiǎn)單,但是會(huì)占用大量的I/O口資源,因此在很多情況下都不采用這種方式。為此,我們引入了矩陣鍵盤的應(yīng)用,采用四條I/O線作為行線,四條I/O線作為列線組成鍵盤。在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤上按鍵的個(gè)數(shù)就為44個(gè)。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。矩陣(j zhn)鍵盤的工作原理:計(jì)算器的鍵盤(jinpn)
15、布局如圖5所示:一般有16個(gè)鍵組成,在單片機(jī)中正好可以用一個(gè)P口實(shí)現(xiàn)16個(gè)按鍵(n jin)功能,這種形式在單片機(jī)系統(tǒng)中也最常用。 /*-+CLC963=8520741 圖9 鍵盤布局圖圖10 矩陣(j zhn)鍵盤內(nèi)部電路圖鍵盤上的每一個(gè)按鍵都有一個(gè)鍵值。給鍵賦值的最直接辦法是將行、列線按二進(jìn)制順序排列,當(dāng)某一鍵按下時(shí),鍵盤掃描程序執(zhí)行到給該列置低電平0,若讀出各行狀態(tài)(zhungti)為非全1,這時(shí)的行、列數(shù)據(jù)組合成鍵值。鍵盤鍵值從左到右、從上到下依次是77,7B,7D,7E;B7,BB,BD,BE,E7,EB,ED,EE。這種負(fù)邏輯表示往往不夠直觀(zhgun),因而采用行、列線加反向器
16、或軟件求反的方法將鍵盤改成正邏輯。這時(shí),鍵值依次為88,84,82,81;48,44,42,41,18,14,12,11。不論是正邏輯還是負(fù)邏輯,這種鍵值表示方式分散度在且不等距,用于指令不太方便。對(duì)于不是4*4或8*4或8*8鍵盤,使用也不容易,故在許多場(chǎng)合下,采用依次排列鍵值的方法。這時(shí)的鍵值與鍵號(hào)相一致。1.2 單片機(jī)控制MCS-51單片機(jī)是在一塊芯片中集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多功能I/O等一臺(tái)計(jì)算機(jī)所需要的基本功能部件。如果按功能劃分,它由如下功能部件組成,即微處理器(CPU)、數(shù)據(jù)存儲(chǔ)器(RAM)、程序存儲(chǔ)器(ROM/EPROM)、并行I/O口、串行口、定時(shí)器/
17、計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器(SFR)。單片機(jī)是靠程序運(yùn)行的,并且可以修改。通過(guò)不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,通過(guò)使用單片機(jī)編寫的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性!因此我們采用單片機(jī)作為計(jì)算器的主要功能部件,可以進(jìn)行很快地實(shí)現(xiàn)運(yùn)算功能。 圖11 單片機(jī)控制電路的時(shí)鐘(shzhng)電路和復(fù)位電路LCD1602顯示(xinsh) 圖12 LCD1602顯示(xinsh)1602點(diǎn)陣字符液晶模塊(LCM)引腳及功能1腳(VDD/VSS):電源5V10%或接地。2腳(VSS/ VDD):接地或電源(50.5)V。3腳(VO):反視度調(diào)整。使用可變電阻調(diào)整,通常接地
18、。4腳(RS):寄存器選擇(1:選擇數(shù)據(jù)寄存器;0:選擇指令寄存器)。5腳(R/W):讀/寫選擇(1:讀;0:寫)。6腳(E):使能操作(1:LCM可做讀寫操作;0:LCM不可做讀寫操作)。7腳(DB0):雙向數(shù)據(jù)總線的第0位。8腳(DB1):雙向數(shù)據(jù)總線的第1位。9腳(DB2):雙向數(shù)據(jù)總線的第2位。10腳(DB3):雙向數(shù)據(jù)總線的第3位。11腳(DB4):雙向數(shù)據(jù)總線的第4位。12腳(DB5):雙向數(shù)據(jù)總線的第5位。13腳(DB6):雙向數(shù)據(jù)總線的第6位。14腳(DB7):雙向數(shù)據(jù)總線的第7位。15腳(VDD):背光(bigung)顯示器電源+5V。16腳(VSS):背光(bigung)顯
19、示器接地。五、實(shí)物(shw)效果圖 圖13 實(shí)物效果圖六、心得體會(huì)兩周(lin zhu)的時(shí)間(shjin),終于順利完成了單片機(jī)的課程設(shè)計(jì)。由于(yuy)自己對(duì)單片機(jī)編程還不是很熟悉,結(jié)果在設(shè)計(jì)的時(shí)候遇到了一系列問(wèn)題,程序總是調(diào)試部處理,不過(guò)還好,最后在同學(xué)的幫助下終于把程序調(diào)試出來(lái)了,雖然程序設(shè)計(jì)實(shí)現(xiàn)的功能與老師要求的不盡相同,不過(guò)勉強(qiáng)還算可以。從這里我知道了基本知識(shí)的重要性。其實(shí)進(jìn)行程序設(shè)計(jì)的時(shí)候主要是對(duì)各功能模塊的把握。計(jì)算器里面最難的一部分是矩陣鍵盤的掃描和編碼,那個(gè)費(fèi)了很大力氣。另外一點(diǎn)就是硬件焊接調(diào)試部分。焊接的時(shí)候到時(shí)輕松,一個(gè)下午就焊接好了,然后是調(diào)試部分。調(diào)試花費(fèi)的時(shí)間還是
20、比較長(zhǎng)的。不過(guò)有了上個(gè)學(xué)期數(shù)字電路焊接調(diào)試的經(jīng)驗(yàn),這次單片機(jī)調(diào)試還算是比較順利。我也是從電路板的正負(fù)電源檢測(cè)起,一步一步來(lái),最終得到了想要的結(jié)果。調(diào)試的時(shí)候主要遇到了兩個(gè)問(wèn)題。一個(gè)是鍵盤總是沒(méi)有反應(yīng),為了這個(gè)自己調(diào)試了很久,前前后后把電路板檢查了幾次,最后才發(fā)現(xiàn)是鍵盤本身的問(wèn)題,和同學(xué)們換了個(gè)好鍵盤才行。另一個(gè)問(wèn)題是總是顯示不出來(lái)1、4、7這三個(gè)數(shù)字。檢測(cè)來(lái)檢測(cè)去,發(fā)現(xiàn)來(lái)是在測(cè)試最小系統(tǒng)時(shí)在一個(gè)位選端接了高電平,對(duì)位選信號(hào)產(chǎn)生了影響。當(dāng)把那個(gè)高電平去掉后,終于得到了正確的結(jié)果??偟膩?lái)說(shuō)這次課程設(shè)計(jì)達(dá)到了完成了基本任務(wù),達(dá)到了基本要求。通過(guò)親身對(duì)程序設(shè)計(jì)和電路焊接調(diào)試的體會(huì),自己對(duì)單片機(jī)有了進(jìn)一
21、步的了解,單片機(jī)編程能力也得到了提高。電路板的焊接與調(diào)試,使自己電路調(diào)試的方法和思想進(jìn)一步加強(qiáng)了。這次單片機(jī)課程設(shè)計(jì)應(yīng)該說(shuō)是比較成功的。七、參考文獻(xiàn)1李朝青.單片機(jī)原理及接口技術(shù)(簡(jiǎn)明修訂版).杭州:北京航空航天大學(xué)出版社,19982李廣弟.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué)出版社,19943閻石.數(shù)字電子技術(shù)基礎(chǔ)(第三版). 北京:高等教育出版社,19894廖常初.現(xiàn)場(chǎng)總線概述J.電工技術(shù),1999.八、附錄1. 系統(tǒng)程序#include #define uchar unsigned char#define uint unsigned intsbit rs=P10;sbit rw=P11;s
22、bit e=P12;void write_dat(uchar dat); void write_com(uchar com);void keyscan();/* 功能說(shuō)明:顯示編碼,加上0 x30,分別為1,2,3,+,4,5,6,-,等*/uchar code table1=1,2,3,0 x2b-0 x30,4,5,6,0 x2d-0 x30,7,8,9,0 x2a-0 x30,0,0 x3d-0 x30,0 x01-0 x30,0 x2f-0 x30;uchar k=0,flag=0,num,fuhao,i;long a,b,c;void delay(uint z) uint x,y;
23、for(x=z;x0;x-) for(y=110;y0;y-);void keyscan() uchar temp; P2=0 xfe; temp=P2; temp=temp&0 xf0; while(temp!=0 xf0) delay(5); temp=P2; temp=temp&0 xf0; while(temp!=0 xf0) temp=P2; switch(temp) case 0 xee:num=0; break; case 0 xde:num=1; break; case 0 xbe:num=2; break; case 0 x7e:num=3; break; while(tem
24、p!=0 xf0) temp=P2; temp=temp&0 xf0; /*當(dāng)按下1,2,3,松手(sng shu)后執(zhí)行下面這段語(yǔ)句*/ if(num=0|num=1|num=2) if(flag=0) a=a*10+table1num;/如果沒(méi)有(mi yu)按符號(hào)鍵,符號(hào)(fho)前的數(shù)值為a else if(flag=1) b=b*10+table1num; /如果按了符號(hào)鍵,符號(hào)后的數(shù)值為b if(k=1) /如果之前按了=號(hào),再按鍵時(shí)清屏,進(jìn)行下一次計(jì)算 k=0; write_com(0 x01); else if(num=3) /判斷按下+ flag=1; fuhao=1; i=
25、table1num; /顯示按下的鍵 write_dat(0 x30+i); P2=0 xfd; temp=P2; temp=temp&0 xf0; while(temp!=0 xf0) delay(5); temp=P2; temp=temp&0 xf0; while(temp!=0 xf0) temp=P2; switch(temp) case 0 xed:num=4; break; case 0 xdd:num=5; break; case 0 xbd:num=6; break; case 0 x7d:num=7; break; while(temp!=0 xf0) temp=P2; t
26、emp=temp&0 xf0; if(num=4|num=5|num=6) /判斷(pndun)是否按下4,5,6 if(k=1) k=0; write_com(0 x01); if(flag=0) a=a*10+table1num; else if(flag=1) b=b*10+table1num; else if(num=7) flag=1; fuhao=2; i=table1num; /顯示(xinsh)按下的鍵 write_dat(0 x30+i); P2=0 xfb; temp=P2; temp=temp&0 xf0; while(temp!=0 xf0) delay(5); tem
27、p=P2; temp=temp&0 xf0; while(temp!=0 xf0) temp=P2; switch(temp) / case 0 xeb:num=8; break; case 0 xdb:num=9; break; case 0 xbb:num=10; break; case 0 x7b:num=11; break; while(temp!=0 xf0) temp=P2; temp=temp&0 xf0; if(num=8|num=9|num=10) /判斷(pndun)是否按下7,8,9 if(k=1) k=0; write_com(0 x01); if(flag=0) a=
28、a*10+table1num; else if(flag=1) b=b*10+table1num; else if(num=11) /判斷(pndun)是否按下* flag=1; fuhao=3; i=table1num; write_dat(0 x30+i); P2=0 xf7; temp=P2; temp=temp&0 xf0; while(temp!=0 xf0) delay(5); temp=P2; temp=temp&0 xf0; while(temp!=0 xf0) temp=P2; switch(temp) case 0 xe7:num=12; / 0鍵 break; case
29、0 xd7:num=13; / = break; case 0 xb7:num=14; /清零(qn ln)鍵 break; case 0 x77:num=15; / break; while(temp!=0 xf0) temp=P2; temp=temp&0 xf0; switch(num) case 12: if(k=1) k=0; write_com(0 x01); if(flag=0) a=a*10; else if(flag=1) b=b*10; write_dat(0 x30); break; case 13: /按=鍵 k=1; if(fuhao=1) /如果(rgu)符號(hào)鍵是+
30、,執(zhí)行(zhxng)+運(yùn)算 write_com(0 x80+0 x4f); write_com(0 x04); c=a+b; while(c!=0) write_dat(0 x30+c%10); c=c/10; write_dat(0 x3d); fuhao=0; a=0;b=0;flag=0; if(fuhao=2)/如果(rgu)符號(hào)鍵是-,執(zhí)行(zhxng)-運(yùn)算(yn sun) write_com(0 x80+0 x4f); write_com(0 x04); if(a=b) c=a-b; while(c!=0) write_dat(0 x30+c%10); c=c/10; else
31、if(ab) c=b-a; while(c!=0) write_dat(0 x30+c%10); c=c/10; write_dat(0 x2d); write_dat(0 x3d); a=0;b=0;flag=0;fuhao=0; if(fuhao=3) /如果符號(hào)鍵是* write_com(0 x80+0 x4f); write_com(0 x04); c=a*b; while(c!=0) write_dat(0 x30+c%10); c=c/10; write_dat(0 x3d); a=0;b=0;flag=0;fuhao=0; if(fuhao=4) /如果(rgu)符號(hào)鍵是/ i=
32、0; write_com(0 x80+0 x4f); write_com(0 x04); c=(long)(float)a/b)*1000000); /結(jié)果(ji gu)保留6位小數(shù)(xiosh) while(c!=0) write_dat(0 x30+c%10); c=c/10; i+; if(i=6) / 顯示完六位小數(shù)后,顯示 write_dat(0 x2e); if(a/b=0) write_dat(0 x30); write_dat(0 x3d); a=0;b=0;flag=0;fuhao=0; break; case 14: write_com(0 x01); a=0;b=0;flag=0;fuh
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園保健知識(shí)培訓(xùn)課件
- 金昌電梯裝修施工方案
- 干部法律知識(shí)培訓(xùn)課件
- 水塔工程施工方案
- 兒童租賃門店合同范例
- 個(gè)人勞務(wù)派遣工合同范例
- 個(gè)人田地出租合同范例
- 人工代加工合同范例
- 品牌引導(dǎo)消費(fèi)者行為的技巧計(jì)劃
- 秘書工作任務(wù)安排計(jì)劃表
- 電影院管理與運(yùn)營(yíng)服務(wù)流程手冊(cè)
- 8.2 二氧化碳的性質(zhì)和用途 同步練習(xí)
- GB/T 44536-2024CVD陶瓷涂層熱膨脹系數(shù)和殘余應(yīng)力試驗(yàn)方法
- 現(xiàn)代家政導(dǎo)論-課件 6.1.1認(rèn)識(shí)道德與職業(yè)道德
- 北京市東城區(qū)2022-2023學(xué)年高三上學(xué)期期末考試地理試卷 含答案
- 深圳益電通變頻器說(shuō)明書TD90
- 人教版初中八年級(jí)物理上冊(cè)課件-第1章-機(jī)械運(yùn)動(dòng)
- 《中小型無(wú)人駕駛航空器垂直起降場(chǎng)技術(shù)要求》編制說(shuō)明
- 國(guó)有企業(yè)內(nèi)部控制的問(wèn)題與改進(jìn)措施
- 企業(yè)員工健康管理與關(guān)懷計(jì)劃實(shí)施方案
- 爭(zhēng)做“四有好老師”-當(dāng)好“四個(gè)引路人”
評(píng)論
0/150
提交評(píng)論