




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
武漢理工大學(xué)《單片機(jī)實(shí)習(xí)應(yīng)用》課程設(shè)計(jì)說明書學(xué)生實(shí)習(xí)報(bào)告學(xué)生姓名:王耀輝專業(yè)班級(jí):通信1304指導(dǎo)教師:撒繼銘工作單位:信息工程學(xué)院題目:單片機(jī)原理與應(yīng)用初始條件: 單片機(jī)最小系統(tǒng)、下載電路、擴(kuò)展電路、軟件(PROTEUS等)、萬用表、電烙鐵等工具完成的主要任務(wù):1)利用PROTEL等軟件進(jìn)行硬件設(shè)計(jì);2)利用KeiluV2軟件完成應(yīng)用系統(tǒng)軟件設(shè)計(jì);3)利用stc-isp軟件完成在系統(tǒng)編程、下載,并完成系統(tǒng)軟件調(diào)試;4)題目由指導(dǎo)教師提供;5)要求每個(gè)學(xué)生單獨(dú)完成硬件軟件設(shè)計(jì)、仿真、焊接、調(diào)試任務(wù);6)寫出實(shí)習(xí)報(bào)告,實(shí)習(xí)報(bào)告主要包括以下內(nèi)容:目錄、摘要、關(guān)鍵詞、基本原理、方案論證、硬件設(shè)計(jì)、軟件設(shè)計(jì)(帶流程圖、程序清單)、仿真結(jié)果、實(shí)物運(yùn)行結(jié)果照片、結(jié)論、參考文獻(xiàn)等;7)實(shí)習(xí)完成后通過答辯;8)答辯時(shí)交實(shí)習(xí)報(bào)告電子文檔,通過答辯后根據(jù)修改意見修改并打印、裝訂成冊(cè)。實(shí)習(xí)時(shí)間安排:序號(hào)階段內(nèi)容所需時(shí)間1方案設(shè)計(jì)1天2硬件設(shè)計(jì)2天3軟件設(shè)計(jì)2天4系統(tǒng)仿真1天5電路板焊接2天6系統(tǒng)調(diào)試1天7答辯1天合計(jì)10天指導(dǎo)教師簽名:年月日系主任(或責(zé)任教師)簽名:年月日目錄TOC\o"1-3"\u摘要 ②按鍵復(fù)位按鍵復(fù)位就是在復(fù)位電容上并聯(lián)一個(gè)開關(guān),當(dāng)開關(guān)按下時(shí)電容被放電、RST也被拉到高電平,而且由于電容的充電,會(huì)保持一段時(shí)間的高電平來使單片機(jī)復(fù)位。電路圖如圖3.1所示圖3.1復(fù)位電路圖3.2振蕩電路單片機(jī)系統(tǒng)里都有晶振,在單片機(jī)系統(tǒng)里晶振作用非常大,全稱叫晶體振蕩器,它結(jié)合單片機(jī)內(nèi)部電路產(chǎn)生單片機(jī)所需的時(shí)鐘頻率,單片機(jī)晶振提供的時(shí)鐘頻率越高,那么單片機(jī)運(yùn)行速度就越快,單片接的一切指令的執(zhí)行都是建立在單片機(jī)晶振提供的時(shí)鐘頻率。在通常工作條件下,普通的晶振頻率絕對(duì)精度可達(dá)百萬分之五十。高級(jí)的精度更高。有些晶振還可以由外加電壓在一定范圍內(nèi)調(diào)整頻率,稱為壓控振蕩器(VCO)。晶振用一種能把電能和機(jī)械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。單片機(jī)晶振的作用是為系統(tǒng)提供基本的時(shí)鐘信號(hào)。通常一個(gè)系統(tǒng)共用一個(gè)晶振,便于各部分保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振,而通過電子調(diào)整頻率的方法保持同步。晶振通常與鎖相環(huán)電路配合使用,以提供系統(tǒng)所需的時(shí)鐘頻率。如果不同子系統(tǒng)需要不同頻率的時(shí)鐘信號(hào),可以用與同一個(gè)晶振相連的不同鎖相環(huán)來提供。STC89C51使用11.0592MHz的晶體振蕩器作為振蕩源,由于單片機(jī)內(nèi)部帶有振蕩電路,所以外部只要連接一個(gè)晶振和兩個(gè)電容即可,電容容量一般在15pF至50pF之間。其電路原理圖如圖3.2所示。圖3.2振蕩電路3.3單片機(jī)最小系統(tǒng)最小系統(tǒng)包括晶振時(shí)鐘電路和復(fù)位電路。原理圖如圖3.3所示:圖3.3單片機(jī)最小系統(tǒng)在單片機(jī)引腳XTAL1和XTAL2外接晶體整蕩器或陶瓷振蕩器,就構(gòu)成了內(nèi)部震蕩方式,由于單片機(jī)內(nèi)部有一個(gè)高增益反向放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器,并產(chǎn)生振蕩時(shí)鐘脈沖,晶振通常選擇6MHz、12MHz或24MHz,這里取晶振為12MHz。與晶振連接的電容起穩(wěn)定振蕩頻率、快速起振的作用。電容值一般為5~30pf。復(fù)位操作完成單片機(jī)片內(nèi)電路初始化,復(fù)位結(jié)束后,單片機(jī)從一種確定狀態(tài)開始運(yùn)行。當(dāng)單片機(jī)復(fù)位引腳RST出現(xiàn)5ms以上高電平時(shí),單片機(jī)就完成復(fù)位操作。復(fù)位操作通常有兩種形式:上電復(fù)位和開關(guān)復(fù)位。常用上電開關(guān)復(fù)位電路如上圖所示,上電后,由于電容C3充電,時(shí)RST持續(xù)一段時(shí)間高電平。當(dāng)單片機(jī)已在運(yùn)行中時(shí),按下復(fù)位鍵也能使RST持續(xù)一段時(shí)間高電平,從而實(shí)現(xiàn)開關(guān)復(fù)位操作。3.4數(shù)碼管顯示電路3.4.1數(shù)碼管選擇本系統(tǒng)輸出結(jié)果選用六個(gè)共陽數(shù)碼管顯示。數(shù)碼管有共陰共陽之分,如下圖3.4,圖3.5,圖3.6分別為數(shù)碼管符號(hào)引腳,共陽數(shù)碼管,共陰數(shù)碼管: 圖3.4數(shù)碼管符號(hào)引腳 圖3.5共陽數(shù)碼管圖3.6共陰數(shù)碼管3.4.2LED芯片7SEG-MPX6-CA如下圖3.7為7SEG-MPX6-CA的引腳圖:圖3.77SEG-MPX6-CA的引腳圖該芯片實(shí)現(xiàn)6個(gè)數(shù)碼管合在一起,123456是位碼輸入,abcdefgdp就是數(shù)碼管的段碼輸入。如果使用共陰數(shù)碼管通過單片機(jī)控制時(shí),單片機(jī)上電和復(fù)位后所有的I/O口都是高電位,這樣只要單片機(jī)一上電,電流經(jīng)過數(shù)碼管的位流向共陰至地,數(shù)碼管就會(huì)亮,耗電大,不節(jié)能,所以又每次編程序時(shí)都得把位控制端賦予低電平,太過麻煩。因而選用共陽數(shù)碼管即7SEG-MPX6-CA。3.4.3數(shù)碼管電路設(shè)計(jì)由于使用的是六位數(shù)碼管合一芯片7SEG-MPX6-CA,電平有IO口提供,其電路設(shè)計(jì)圖如下圖3.8數(shù)碼管電路模塊所示: 圖3.8數(shù)碼管電路模塊3.5矩陣鍵盤電路矩陣鍵盤檢測(cè)的原理和方法:矩陣鍵盤每個(gè)按鍵兩端都與單片機(jī)I/O口相連,因此在檢測(cè)時(shí)需人為通過單片機(jī)I/O口送出低電平。檢測(cè)時(shí),先送一列為低電平,其余幾列全為高電平(此時(shí)確定了列數(shù)),然后立即輪流檢測(cè)一次各行是否有低電平,若檢測(cè)到某一行為低電平(這是有確定了行數(shù)),則便可以確認(rèn)當(dāng)前被按下的鍵是哪一列哪一行,用同樣方法輪流送各列一次低電平,再輪流檢測(cè)一次各行是否變?yōu)榈碗娖?,這樣既可檢測(cè)完所有的按鍵,當(dāng)有鍵按下時(shí)便可判斷出按下的是哪一個(gè)鍵。其工作原理是從0列開始順序行掃描即該行輸出為0。每掃描一行讀入列線數(shù)據(jù)從0開始列檢查找該行輸出為0的列若無則順序掃描下一行并檢查其各列若找到某列線為0則該列與檢查行交叉的按鍵為被按下的鍵。從0行0列開始順序?qū)存I編號(hào)就可以按掃描的值得到按鍵的值。本設(shè)計(jì)使用的是4個(gè)獨(dú)立按鍵其功能設(shè)置為時(shí)間的顯示、時(shí)間的設(shè)置、溫度的顯示和數(shù)字頻率的顯示。本設(shè)計(jì)中主要使用了獨(dú)立鍵盤,故電路圖中簡(jiǎn)要的畫出了4*4的矩陣鍵盤,其電路原理圖如圖3.9所示圖3.9矩陣鍵盤顯示電路設(shè)計(jì)3.6串口通信電路串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議(不要與通用串行總線UniversalSerialBus或者USB混淆)。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。串口通信的概念非常簡(jiǎn)單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它很簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時(shí),規(guī)定設(shè)備線總常不得超過20米,并且任意兩個(gè)設(shè)備間的長(zhǎng)度不得超過2米;而對(duì)于串口而言,長(zhǎng)度可達(dá)1200米。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。單片機(jī)使用的是TTL電平,而計(jì)算機(jī)使用的是RS-232電平,要實(shí)現(xiàn)把電腦中的程序能下載到單片機(jī)上,就需要實(shí)現(xiàn)RS-232電平與TTL電平之間的轉(zhuǎn)換。MAX232是電平轉(zhuǎn)換芯片。1970年,美國(guó)電氣學(xué)會(huì)規(guī)定“RS232”串口通信協(xié)議。規(guī)定邏輯“1”,-5—-15V;邏輯“0”,+5—+15V。噪聲容限為2V。要實(shí)現(xiàn)利用串口與單片機(jī)進(jìn)行通信,就要進(jìn)行電平轉(zhuǎn)換,把標(biāo)準(zhǔn)轉(zhuǎn)化成單片機(jī)可以識(shí)別的。MAX232電路原理圖如圖3.10所示。 圖3.10串口電路圖 在本設(shè)計(jì)中,兩個(gè)主機(jī)和副機(jī)之間進(jìn)行通信時(shí),由于距離近,因此直接將兩個(gè)單片機(jī)串行口線RxD和TxD相互交叉連接、GND相連即可,如圖3.11所示。 圖3.11單片機(jī)近距離通信示意圖3.7總設(shè)計(jì)電路圖3.12總電路設(shè)計(jì)圖4軟件設(shè)計(jì)4.1軟件介紹4.1.1程序編寫軟件KeilKeilC51是美國(guó)KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。本次設(shè)計(jì)編程主要使用Keil軟件進(jìn)行編程。4.1.2仿真軟件ProteusProtues軟件是英國(guó)Labcenterelectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯。本次設(shè)計(jì)采用的是Proteus進(jìn)行仿真。4.2數(shù)碼管顯示設(shè)計(jì)該程序分為鍵盤掃描和數(shù)碼管顯示兩部分,其程序流程圖如4.1所示: 圖4.1數(shù)據(jù)輸入流程圖4.3串行通信接收程序由于要實(shí)現(xiàn)兩個(gè)單片機(jī)之間的通信,在接收單片機(jī)上要寫與發(fā)送程序相對(duì)應(yīng)的接收程序,兩者應(yīng)設(shè)定相同的波特率。對(duì)應(yīng)的接收程序流程圖如圖4.2所示。T1初始化,啟動(dòng)T1T1初始化,啟動(dòng)T1工作設(shè)定串行通信方式設(shè)定串行通信方式并設(shè)定允許接收RI=1RI=1接收數(shù)接收數(shù)據(jù)清RI清RI全部數(shù)據(jù)完全接收完全部數(shù)據(jù)完全接收完結(jié)束結(jié)束圖4.2接收程序流程圖5仿真結(jié)果與分析5.1數(shù)據(jù)輸入根據(jù)實(shí)驗(yàn)任務(wù)可知,需要數(shù)據(jù)輸入10個(gè)四位十進(jìn)制數(shù)。圖5.1(a,b,c)為實(shí)驗(yàn)中輸入序號(hào)為6的6233四位十進(jìn)制數(shù)的過程: 圖5.1(a)序號(hào)輸入 圖5.1(b)序號(hào)輸入后按確定鍵 圖5.1(c)完成四位數(shù)據(jù)的輸入5.2數(shù)據(jù)顯示圖5.2(a,b)為序號(hào)為6的數(shù)據(jù)顯示過程:圖5.2(a)選擇數(shù)據(jù)顯示功能鍵圖5.2(b)按下6鍵后的顯示5.3實(shí)現(xiàn)串口通信串口通信電路的仿真結(jié)果如圖5.3所示: 圖5.3串口通信仿真結(jié)果圖仿真結(jié)果分析:從數(shù)據(jù)輸入與數(shù)據(jù)顯示的步驟可知,實(shí)驗(yàn)的設(shè)計(jì)滿足任務(wù)要求的數(shù)據(jù)輸入和數(shù)據(jù)顯示的功能。其余的清除功能,確定功能,功能鍵選擇功能在Protues軟件上都能正確體現(xiàn)。故得出相關(guān)軟件與程序的設(shè)計(jì)是正確的。6實(shí)物展示 圖6.1全元件圖圖6.2數(shù)據(jù)顯示圖圖6.3主機(jī)通信圖7心得體會(huì)通過此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有關(guān)單片機(jī)方面的知識(shí),在設(shè)計(jì)過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。通過親自動(dòng)手制作,使我們掌握的知識(shí)不再是紙上談兵?;仡櫰鸫苏n程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。我認(rèn)為,在這學(xué)期的實(shí)驗(yàn)中,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實(shí)驗(yàn)課上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對(duì)于我們的將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國(guó)提倡的艱苦奮斗一樣,我們都可以在實(shí)驗(yàn)結(jié)束之后變的更加成熟,會(huì)面對(duì)需要面對(duì)的事情。不管怎樣,這些都是一種鍛煉,一種知識(shí)的積累,能力的提高。完全可以把這個(gè)當(dāng)作基礎(chǔ)東西,只有掌握了這些最基礎(chǔ)的,才可以更進(jìn)一步,取得更好的成績(jī)。很少有人會(huì)一步登天,永不言棄才是最重要的。而且,這對(duì)于我們的將來也有很大的幫助。參考文獻(xiàn)[1]陳國(guó)先.語音芯片與PIC單片機(jī)的應(yīng)用接口[J].福建信息技術(shù)教育,2005.[2]何立民.單片機(jī)高級(jí)教程.北京:北京航空航天大學(xué)出版社,2001.[3]李廣第.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué)出版社,1999.[4]李群芳.單片微型計(jì)算機(jī)與接口技術(shù)(第3版).電子工業(yè)出版社,2008[5]劉教瑜.單片機(jī)原理及應(yīng)用.武漢理工大學(xué)出版社,2011[6]張東亮.單片機(jī)原理與應(yīng)用.人民郵電出版社,2009附錄Ⅰ:元件清單序號(hào)名稱數(shù)量1電路板2塊2單片機(jī)最小系統(tǒng)1只3晶振12MHz1只430PF瓷片電容2只5100uF/25V電解電容1只61k電阻9只710k/9腳排阻1只8排針、按鈕、LED、導(dǎo)線等若干9電烙鐵1個(gè)100.1uF瓷片電容4只11RS-232C串口電纜1根12四角開關(guān)16個(gè)136位共陽極數(shù)碼管2個(gè)附錄Ⅱ:總程序設(shè)計(jì)主系統(tǒng)程序:#include"reg52.h"voiddelay(unsignedchars);voidkeyscan(void);voidkeydown(void);voidinput(void);voidscreen(intsmode);inttest=0;unsignedcharint_on=0; //用于剛進(jìn)入通信模式時(shí)的初始化只有在通信模式下需要打開中斷 1為中斷已開化unsignedchartemp; //讀按鍵用的測(cè)試變量unsignedcharkey; //按鍵序號(hào)unsignedcharMODE=3;//模式選擇,0為輸入模式,1為顯示模式,2為串口通信模式unsignedcharFUNC=0; //功能選擇,1為回車,2為清除unsignedcharreg[10][4]; //輸入內(nèi)容存放的數(shù)組unsignedchardis_buf[6]; //顯示緩存unsignedcharinputmode; //通過回車鍵來判斷輸入模式,0為輸入序號(hào),1為輸入4位十進(jìn)制數(shù)據(jù)unsignedchargroup,datpos; //分別存儲(chǔ)數(shù)據(jù)的組數(shù)和十進(jìn)制數(shù)據(jù)位數(shù) unsignedcharLedNum[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84};voiddelay(unsignedchars) //延時(shí)函數(shù) { inti,j; for(j=s;j>=0;j--) for(i=125;i>0;i--);}voidscreen(intsmode) //對(duì)數(shù)碼管操作的函數(shù)1為清空顯示0號(hào)位光標(biāo)2為移位 { intp; if(smode==1) { for(p=0;p<6;p++) { dis_buf[p]=0xff; //清屏 } dis_buf[0]=0xf7; //帶輸入光標(biāo) } elseif(smode==2) { for(p=5;p>0;p--) //顯示緩存移位 { dis_buf[p]=dis_buf[p-1]; } }}voidkeyscan(void) //按鍵掃描函數(shù){ P2=0x0F;//低四位輸入列為高電平行為低電平 temp=P2;//讀P2口 temp=temp&0x0F; temp=~(temp|0xF0); switch(temp) { case1:key=0;break;//p2.0被拉低 case2:key=1;break;//p2.1被拉低 case4:key=2;break;//p2.2被拉低 case8:key=3;break;//p2.3被拉低 default:key=16; } temp=0; P2=0xF0;//高四位輸入行為高電平列為低電平 //delay(1); temp=P2;//讀P2口 temp=temp&0xF0;//屏蔽低四位 temp=~((temp>>4)|0xF0); switch(temp) { case1: break; //p2.4被拉低 case2: key=key+4;break; //p2.5被拉低 case4: key=key+8;break; //p2.6被拉低 case8: key=key+12;break; //p2.7被拉低 default:key=16; } switch(key) { case3: //模式選擇為輸入 MODE=0; inputmode=0; //從數(shù)據(jù)序號(hào)開始輸入 key=16; //鍵盤序號(hào)置空 FUNC=0; //功能鍵置空 screen(1); break; case7: //模式選擇為顯示 MODE=1; key=16; //鍵盤序號(hào)置空 screen(1); break; case11:MODE=2;break; case14:FUNC=1;break; //按鍵功能選擇 case15:FUNC=2;break; case12:MODE=3;break; //模式3為空余模式,可自定義或歡迎界面 default: { switch(key) { case0:case1:case2:key+=7;break; case8:case9:case10:key-=7;break; case13:key=0; } datpos++; //存數(shù)位數(shù)加一 if(datpos==4)datpos=0; } } P2=0xf0; while(P2!=0xf0); //保證按鍵彈起后再跳出程序}voidkeydown(void){ P2=0xF0; //delay(1); if(P2!=0xF0)//判斷按鍵是否按下如果按鈕按下會(huì)拉低P2其中的一個(gè)端口 { keyscan();//調(diào)用按鍵掃描程序}}voidinput(void){ if(FUNC==1) //回車時(shí)輸入模式切換 { if(inputmode==1) { screen(1); //清屏并在0號(hào)位輸入光標(biāo) } elsedis_buf[2]=~0x08; //在2號(hào)位輸入光標(biāo) inputmode=1-inputmode; FUNC=0; //切換完成功能變量置空} if(FUNC==2) { inputmode=0; //重新從數(shù)據(jù)組數(shù)開始輸入 reg[group][0]=0; //清空已輸入的錯(cuò)誤數(shù)據(jù) reg[group][1]=0; reg[group][2]=0; reg[group][3]=0; screen(1); FUNC=0; } if(key<10) { if(inputmode==0) { group=key; //序號(hào)確認(rèn) dis_buf[0]=LedNum[group]; datpos=-1; //數(shù)據(jù)鍵入位置歸零 } elseif(inputmode==1) //對(duì)應(yīng)組數(shù)據(jù)輸入 { dis_buf[datpos+2]=LedNum[key]; reg[group][datpos]=key; delay(1); } }}voidmain(){ unsignedcharLedSele[]={0x01,0x02,0x04,0x08,0x10,0x20}; unsignedcharroll; //if(P2^0&P2^7==1)MODE=2; //電路中輔系統(tǒng)的P2.0和P2.7置一,區(qū)別于主系統(tǒng)。輔系統(tǒng)保持在通信模式 SCON=0x50;//REN=1允許串行接受狀態(tài),串口工作模式2 TMOD|=0x20;//定時(shí)器工作方式2 PCON|=0x80;//波特率提高一倍 TH1=0xF3; //波特率4800、數(shù)據(jù)位8、停止位1、效驗(yàn)位無(12M) TL1=0xF3; while(1) { keydown(); //調(diào)用按鍵判斷檢測(cè)程序 if(MODE==0) //輸入模式 { if(int_on==1) //若中斷未關(guān) { TR1=0;//關(guān)啟定時(shí)器1 ES=0;//關(guān)串口中斷 EA=0;//關(guān)總中斷 int_on=0; //中斷已關(guān)標(biāo)志 } input(); //開始數(shù)據(jù)輸入程序 } elseif(MODE==1) //顯示模式 { if(int_on==1) //若中斷未關(guān) { TR1=0;//關(guān)啟定時(shí)器1 ES=0;//關(guān)串口中斷 EA=0;//關(guān)總中斷 int_on=0; //中斷已關(guān)標(biāo)志 } if(key<10) //若輸入的是數(shù)字 { group=key; //選定輸出組數(shù) dis_buf[0]=LedNum[group]; //先顯示數(shù)據(jù)組數(shù) dis_buf[1]=~0x00; //空格 dis_buf[2]=LedNum[reg[group][0]];//四位十進(jìn)制數(shù) dis_buf[3]=LedNum[reg[group][1]]; dis_buf[4]=LedNum[reg[group][2]]; dis_buf[5]=LedNum[reg[group][3]]; } } elseif(MODE==2) //通信模式 { if(int_on==0) //若中斷未開 { TR1=1;//開啟定時(shí)器1 ES=1;//開串口中斷 EA=1;//開總中斷 int_on=1; //中斷已開標(biāo)志 screen(1); //清屏 } if(key<10) { SBUF=key; //SUBF接受/發(fā)送緩沖器 while(TI==0);//當(dāng)發(fā)送標(biāo)志位為0,即未完成發(fā)送,則一直等待,直到發(fā)送完成 TI=0; //發(fā)送完成之后,將發(fā)送中斷標(biāo)志TI置0 screen(2); //右移 dis_buf[0]=LedNum[key]; //最左為剛輸入的數(shù)字 key=16; //********在按下的數(shù)字發(fā)送后將key置空,防止該數(shù)多次發(fā)送 } } else { if(int_on==1) //若中斷未關(guān) { TR1=0;//關(guān)啟定時(shí)器1 ES=0;//關(guān)串口中斷 EA=0;//關(guān)總中斷 int_on=0; //中斷已關(guān)標(biāo)志 } dis_buf[0]=~0x01; dis_buf[1]=~0x40; dis_buf[2]=~0x08; dis_buf[3]=~0x08; dis_buf[4]=~0x40; dis_buf[5]=~0x01; } for(roll=0;roll<6;roll++) { P1=LedSele[roll];//通過循環(huán)使對(duì)應(yīng)選通的數(shù)碼管顯示相應(yīng)的數(shù)值 P0=dis_buf[roll];//通過循環(huán)逐個(gè)選通數(shù)碼管 delay(1); } }}voidser_int(void)interrupt4using1{ if(RI==1)//若RI接受中斷標(biāo)志為1,即收到數(shù)據(jù) { RI=0; //清除RI接受中斷標(biāo)志 /*test++; //測(cè)試用 if(test==10) test=0; dis_buf[5]=LedNum[test]; */ //screen(2); //右移為什么用函數(shù)就不行呢??? dis_buf[5]= dis_buf[4]; dis_buf[4]= dis_buf[3]; dis_buf[3]= dis_buf[2]; dis_buf[2]= dis_buf[1]; dis_buf[1]= dis_buf[0]; dis_buf[0]=LedNum[SBUF]; //最左為接收的數(shù)字 //datpos++;if(datpos>=6)datpos=0; //delay(1); }}輔系統(tǒng)程序:#include"reg52.h"unsignedchardis_buf[6]; //顯示緩存unsignedcharNum_Table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84};voiddelay(unsignedchars) //延時(shí)函數(shù) { inti,j; for(j=s;j>=0;j--) for(i=125;i>0;i--);}voidscreen(intsmode) //對(duì)數(shù)碼管操作的函數(shù)1為清空顯示0號(hào)位光標(biāo)2為移位 { intp; if(smode==1)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 感恩教育讀書主題班會(huì)
- 汽車?yán)錃庀到y(tǒng)維修合同
- 商品質(zhì)量評(píng)定合同(2篇)
- 拍賣品宣傳策略協(xié)議
- 教科版(2017)科學(xué)五年下冊(cè)《分析一個(gè)實(shí)際的環(huán)境問題》說課(附反思、板書)課件
- 2025年統(tǒng)編版小學(xué)道德與法治二年級(jí)下冊(cè)《我是一張紙》說課課件
- 屈光手術(shù)護(hù)理配合
- 水果購銷合同示例
- 企業(yè)文化共贏培訓(xùn)
- 宣傳教育扶貧政策
- 電化學(xué)儲(chǔ)能保險(xiǎn)發(fā)展報(bào)告
- 不合格產(chǎn)品統(tǒng)計(jì)表
- 《外科學(xué)》第七節(jié) 直腸癌
- DG-TJ 08-2002-2020 懸挑式腳手架安全技術(shù)標(biāo)準(zhǔn) 高質(zhì)量清晰版
- Z世代消費(fèi)態(tài)度洞察報(bào)告
- 辦公樓辦公室改檔案室結(jié)構(gòu)加固施工方案(15頁)
- 淺談在小學(xué)五六年級(jí)開展性教育的必要性
- (完整版)二十四山年月日時(shí)吉兇定局詳解,
- 支撐掩護(hù)式液壓支架總體方案及底座設(shè)計(jì)
- 水利部預(yù)算定額
- 閥門螺栓使用對(duì)照表
評(píng)論
0/150
提交評(píng)論