版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機課程設(shè)計報告課題名稱 行列式鍵盤 學(xué)生姓名 xx 所在班級 xx 學(xué)生學(xué)號 xx 指導(dǎo)教師 xx 二一五年一月目錄第一章 課程簡介11.1 行列式鍵盤實現(xiàn)的功能11.2 技術(shù)指標1第二章 硬件設(shè)計22.1 最小系統(tǒng)簡介22.1.1 主要管腳說明22.2 晶振 32.3 行列式鍵盤的電路介紹42.4 共陽極數(shù)碼管的介紹52.5 發(fā)光二極管的介紹6第三章 軟件設(shè)計73.1 設(shè)計流程圖73.2 程序流程圖 8第四章 調(diào)試94.1 硬件調(diào)試94.1.1 電路電源調(diào)試94.1.2 電路下載調(diào)試94.2 軟件調(diào)試9第五章 總結(jié)105.1 課程設(shè)計總結(jié)10第六章 附錄12附錄A 原理總圖12
2、附錄B 程序代碼13附錄C 實物圖17第一章 課程簡介1.1 行列式鍵盤實現(xiàn)的功能4*4行列式鍵盤以STC89C52單片機為核心,主要由4*4行列式鍵盤電路、4位8段數(shù)碼管顯示電路、LED燈電路和數(shù)碼管位驅(qū)動電路等組成,軟件選用C語言編程,簡潔易懂。單片機將檢測到的按鍵信號轉(zhuǎn)換成數(shù)字量,由數(shù)碼管顯示4*4行列式鍵盤的行與列的數(shù)字信息。功能如下:按下S1鍵,數(shù)碼管顯示11,LED燈亮第一個,同時蜂鳴器發(fā)出響聲;按下S2鍵,數(shù)碼管顯示12,LED燈亮第二個,同時蜂鳴器發(fā)出響聲;按下S3鍵,數(shù)碼管顯示13,LED燈亮第一個和第二個,同時蜂鳴器發(fā)出響聲;以此類推,按下按鍵,數(shù)碼管顯示按鍵的行列坐標數(shù)值
3、,LED燈依照8421編碼規(guī)則進行亮滅,亮代表1,滅代表0,表示0-F這16個數(shù),同時伴隨蜂鳴器的響聲; 行列式鍵盤控制系統(tǒng)可以提高效率,是進行按鍵操作管理的有效方法,它可以提高系統(tǒng)準確性,有利于資源的節(jié)約,降低對操作者本身的要求。并能正確、實時、高效地顯示按鍵信息,以提高工作效率和資源利用率。行列式鍵盤是當今使用最為廣泛的鍵盤模式,該系統(tǒng)以N個端口連接控制N*N個按鍵,并通過單片機,顯示在LED數(shù)碼管上。單片機控制鍵盤顯示系統(tǒng),可以對不同的按鍵進行實時顯示,其核心是單片機、鍵盤矩陣電路和數(shù)碼管顯示電路。該系統(tǒng)靈活性強,易于操作,可靠性高,應(yīng)用廣泛。1.2 技術(shù)指標使用四位八段數(shù)碼管中的兩位,
4、4個LED發(fā)光二極管以及16個4*4的行列式鍵盤。整個電路使用+5V的直流電源,也可以用充電寶和筆記本電腦進行供電。第二章 硬件設(shè)計2.1 最小系統(tǒng)簡介圖2-1 最小系統(tǒng)對51系列單片機來說,最小系統(tǒng)一般應(yīng)該包括:單片機STC89C52、晶振電路、復(fù)位電路。 STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的
5、解決方案。 2.1.1 主要管腳說明 VCC(40引腳):電源電壓 VSS(20引腳):接地 P0端口(P0.0P0.7,3932引腳):P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅(qū)動8個TTL負載,對端口P0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時,P0口內(nèi)部上拉電阻有效。在Flash ROM編程時,P0端口接收指令字節(jié);而在校驗程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。 P1端口(P1.0P1.7,18引腳):P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(吸收或
6、者輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時,因為有內(nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個電流。 此外,P1.0和P1.1還可以作為定時器/計數(shù)器2的外部技術(shù)輸入(P1.0/T2)和定時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體參見下表: 在對Flash ROM編程和程序校驗時,P1接收低8位地址。 P2端口(P2.0P2.7,2128引腳):P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅(qū)動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電平,
7、這時可用作輸入口。P2作為輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸出一個電流。 在訪問外部程序存儲器和16位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX DPTR”指令)時,P2送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX R1”指令)時,P2口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū)中的P2寄存器的內(nèi)容),在整個訪問期間不會改變。 在對Flash ROM編程和程序校驗期間,P2也接收高位地址和一些控制信號。 P3端口(P3.0P3.7,1017引腳):P3是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動(吸收或輸出電流方式)4個TTL輸入
8、。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可用作輸入口。P3做輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸入一個電流。 在對Flash ROM編程或程序校驗時,P3還接收一些控制信號。 P3口除作為一般I/O口外,還有其他一些復(fù)用功能。2.2 晶振 圖2-2 晶振單片機系統(tǒng)里都有晶振,在單片機系統(tǒng)里晶振作用非常大,全稱叫晶體振蕩器,它結(jié)合單片機內(nèi)部電路產(chǎn)生單片機所需的時鐘頻率,單片機晶振提供的時鐘頻率越高,那么單片機運行速度就越快,單片機的一切指令的執(zhí)行都是建立在單片機晶振提供的時鐘頻率。通常一個系統(tǒng)共用一個晶振,便于各部分
9、保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振,而通過電子調(diào)整頻率的方法保持同步。STC89C52RC使用12MHz的晶體振蕩器作為振蕩源。2.3 行列式鍵盤的電路介紹圖2-3 行列式鍵盤 STC89C52單片機的并行口P3接4*4矩陣鍵盤,以P3.0P3.3作行輸入線,以P3.4P3.7作列輸出線;P3口輸出按鍵信息,在數(shù)碼管上顯示每個按鍵的行與列的序號。P3口的低4位控制行輸入,高4位控制列輸入當沒有按鍵按下時,P3.0P3.3與P3.4P3.7之間開路。當有鍵閉合時,與閉合鍵相連的兩條I/O口線之間短路。判斷有無按鍵按下的方法是:第一步,置行線P3.0P3.3為輸入狀態(tài),從列線P3.4
10、P3.7輸出低電平,讀入行線數(shù)據(jù),若某一行線為低電平,則該行線上有鍵閉合。第二步,列線輪流輸出低電平,從行線P3.0P3.3讀入數(shù)據(jù),若有某一行為低電平,則對應(yīng)的列線上有鍵按下。當確定了是哪一個按鍵按下后,通過軟件程序的設(shè)計,返回鍵盤掃描的鍵值,由PO口輸出給數(shù)碼管顯示。2.4 共陽極數(shù)碼管的介紹圖2-4 共陽極數(shù)碼管及位驅(qū)動這是一個四位八段的共陽極數(shù)碼管,STC89C52的P0.0P0.7為段輸出口,P2.0P2.3為位輸出口。使用ULN2003的4個輸出口作為位驅(qū)動,用來驅(qū)動8段數(shù)碼管的DS1DS4。該數(shù)碼管內(nèi)部有8個發(fā)光二極管,公共端由8個發(fā)光二極管的陽極并接而成,正常顯示時公共端接高電
11、平(VCC),各發(fā)光二極管是否點亮取決于a-dp各引腳上是否是低電平。LED數(shù)碼管的外部有12個引腳,其中6,8,9,12腳為公共端也稱位選端,其余8個引腳稱為段選端,當要使某一位數(shù)碼管顯示某一數(shù)字(0-9中的一個)必須在這個數(shù)碼管的段選端加上與數(shù)字顯示數(shù)字對應(yīng)的8位段選碼(也稱字形碼),在位選端加上高電平即可。由于系統(tǒng)要顯示的內(nèi)容比較簡單,顯示量不多,所以選用數(shù)碼管既方便又經(jīng)濟。2.5 發(fā)光二極管的介紹圖2-5 發(fā)光二極管發(fā)光二極管簡稱LED燈,是一種將電能轉(zhuǎn)化為光能的特殊二極管。發(fā)光二極管和普通的二極管一樣,由一個PN結(jié)組成。具有單向?qū)щ娦?。當發(fā)光二極管工作在正向偏置狀態(tài)下,且有一定大小的
12、電流通過發(fā)光二極管時。它就會發(fā)光。光的顏色視發(fā)光二極管的材料而定。發(fā)光二極管正向工作電壓為1.5V左右,正向電流為5-15mA.80C51引腳輸出低電平可直接驅(qū)動LED。第三章 軟件設(shè)計3.1 設(shè)計流程圖 STC89C52RC P2.0P2.3 P3.0P3.7 P0.0P0.7 P1.0P1.3 數(shù)碼管顯示行與列ULN20034*4鍵盤LED燈響應(yīng) 圖3-1 設(shè)計流程圖單片機將從程序中鍵盤按鍵初始化對應(yīng)得到的值通過數(shù)碼管顯示行與列的數(shù)值,通過LED燈顯示0-F的值并伴隨蜂鳴器的響聲。 3.2 程序流程圖 開始系統(tǒng)初始化掃描P3端口有按鍵按下Y確定鍵盤的行列值行列值正確YLED燈作用和數(shù)碼管顯
13、示按鍵行列值結(jié)束圖3.2 程序流程圖本程序?qū)ο到y(tǒng)按鍵進行了初始化,通過對按鍵的掃描結(jié)果進行判斷是否有按鍵按下,同時由數(shù)碼管顯示出當前按鍵行與列的數(shù)值,相應(yīng)的LED燈作用;沒有按鍵按下就保持原來的狀態(tài)。第四章 調(diào)試4.1 硬件調(diào)試 4.1.1 電路電源調(diào)試 在通電前,一定要檢查電源電壓的幅值和極性,否則很容易造成集成塊損壞。加電后檢查各插件上引腳的電位,一般先檢查VCC與GND之間電位,若在5V4.8V之間屬正常。若有高壓,聯(lián)機仿真器調(diào)試時,將會損壞仿真器等,有時會使應(yīng)用系統(tǒng)中的集成塊發(fā)熱損壞。 電路電源主要通過USB外部供電,輸入+5V電壓。提供單片機電源、數(shù)碼管電源和ULN2003電源。將數(shù)
14、字電源通電后測試各個數(shù)字芯片的電源電壓,即可進行電路電源的調(diào)試。 4.1.2 電路下載調(diào)試 正確連接電路,通過USB串口下載相關(guān)程序,測試數(shù)碼管是否能正確顯示數(shù)字,行列式鍵盤能否正確響應(yīng)。4.2 軟件調(diào)試第一步要根據(jù)硬件連接圖和各器件的特性選擇本次課程所需的電路,然后根據(jù)電路進行軟件編程,實現(xiàn)課程的相關(guān)要求。第二步將單片機插入40P的緊縮座,插上12M的晶振以及USB數(shù)據(jù)線。第三步在電腦上根據(jù)相關(guān)資料提示找到STC的驅(qū)動程序,進行安裝。第四步裝下載軟件加載程序,根據(jù)相關(guān)提示,選擇單片機型號,找到軟件編程程序,對軟件編程程序首先要用KEIL軟件進行編譯生成hex的格式,然后進行下載。第五步在程序
15、下載完成后,對開發(fā)板進行軟件啟動,程序就正式下載到單片機中了。第六步測試載入程序后,單片機系統(tǒng)能不能完成本次課程所需的各個要求。依次按下4×4行列式鍵盤,觀察數(shù)碼管的顯示結(jié)果。結(jié)果數(shù)碼管正確顯示出了各個按鍵的行與列的位置信息,驗證程序完全正確,不需要修改。到此,軟件調(diào)試結(jié)束。第五章 總結(jié)5.1 課程設(shè)計總結(jié)通過本次單片機課程設(shè)計,我不僅加深了對單片機理論知識的理解,學(xué)會了學(xué)以致用的重要性;而且還學(xué)會了如何去加強鍛煉創(chuàng)新精神,同時也提高了自身的動手能力,讓我深刻的意識到理論與實際結(jié)合的重要性。本次單片機課程設(shè)計,主要分為硬件焊接和軟件編寫這兩個部分。硬件焊接主要看個人的焊接水平和細心程
16、度。在焊接之前一定要了解各個元器件在整個電路系統(tǒng)中所起到的作用,這樣才能正確焊接元器件的位置,避免元器件的錯焊。由于固定思維的影響,很多同學(xué)以為排阻沒有焊接焊接方向要求導(dǎo)致了錯焊,還好我仔細看了焊接說明書,這說明焊接前一定要認真了解相關(guān)內(nèi)容,否則可能會事倍功半。本次焊接較難的就是貼片的焊接,不僅要正確焊接貼片管腳,不能使管腳相連,還要注意不能使貼片受熱時間過長,避免貼片被高溫燒壞,導(dǎo)致器件不能正常工作。焊接過程中,我最小的貼片CH340管腳焊接沒有問題,但是軟件測試時不能正常燒寫程序,我想可能就是焊接過程中溫度過高,將芯片給燒壞了,以后一定要注意。軟件編寫對我來說確實是個大問題,雖然本次課程設(shè)
17、計的題目不是很難,只要通過數(shù)碼管顯示按鍵行與列的位置。但是在實際操作過程當中遇到了不少困難,首先是通過程序判別按鍵所在的行與列,這個需要一系列的計算,還好書上有行列式鍵盤鍵值。之后是按鍵數(shù)值在LED數(shù)碼管上的顯示,確實是不會編寫,特別還是要用到位驅(qū)動。之后根據(jù)相關(guān)問題,我不斷地去查找資料,參考類似的程序和詢問可能會的同學(xué),這個過程讓我開動了自己的腦子,從而也實現(xiàn)了自我的超越,讓自己的知識能夠得到不斷地完善;同時更重要的是,在這一設(shè)計過程當中,讓我懂得了在學(xué)習的道路上會遇到很多的阻礙,但關(guān)鍵的是能做到堅持不懈,不輕易放棄,最終達到自己想要的目標。單片機的學(xué)習對于我們專業(yè)來說非常的重要,通過本次設(shè)
18、計也讓我更加清晰了對專業(yè)的了解,理論知識再豐富,沒有實際的操作經(jīng)驗也是不行的;本次設(shè)計也運用到了protel軟件進行原理圖的繪制,雖然不是單片機這門課需要掌握的內(nèi)容,但這個軟件本學(xué)期已經(jīng)在電子線路CAD這門課進行了系統(tǒng)的學(xué)習,所以這讓我意識到課與課之間是息息相關(guān)的,學(xué)好現(xiàn)如今的每一門課可能就是為下面的學(xué)習打好堅實的基礎(chǔ),掌握一些軟件的開發(fā)與應(yīng)用更是顯得尤為重要。本次課程設(shè)計我發(fā)現(xiàn)自己在很多方面都有或多或少的不足,首先是硬件的焊接,我感覺自己的焊接能力有待提高。焊接過程中,焊接速度不夠嫻熟,而且焊點不夠圓潤美觀,希望自己能在以后多多鍛煉自己的動手焊接水平,不斷提高自己的焊接工藝水準,最好能達到眼
19、到手到的境界。軟件編程確實是我的短板,一做到相關(guān)問題確實有點為難,幸好得到了同學(xué)的幫助和老師的提示,這才將符合設(shè)計要求的程序編輯出來。希望我能在寒假里能多花些時間學(xué)習單片機的軟件編程,提高自己軟件編程的能力。專業(yè)知識一定要重視,切不可渾渾噩噩的過日子,要時刻銘記自己的目標,我要學(xué)好單片機,我要朝著自己的目標做出切實可行的行動,不做語言上的巨人。在本次設(shè)計過程中,我確實學(xué)習到了很多,也對本學(xué)期自己的學(xué)習狀況有了一次深刻而具體點了解和反思,希望我能在接下來的學(xué)習生活中改變自己不好的狀態(tài),認真學(xué)習,不斷提高和充實自己,讓自己過一個充滿意義的大學(xué)生活。在設(shè)計過程中我也得到了不少同學(xué)們的幫助,要是沒有同
20、學(xué)不厭其煩的幫助,我想我一個人也不可能在短時間內(nèi)完成設(shè)計要求;所以在此我非常感謝在設(shè)計中給予我?guī)椭闹笇?dǎo)老師和同學(xué)們。第六章 附錄附錄A 原理總圖圖6-1 原理總圖附錄B 程序代碼/張凱/*功能描述:系統(tǒng)上電后,按下矩陣鍵盤的任意按鍵,蜂鳴器響,同時數(shù)碼管3、4兩位分別顯示按鍵的行和列,led燈顯示鍵值。*/#include"reg52.h"#include<intrins.h>#define DUAN P0#define LED P1sbit LED1=P23;sbit LED2=P22;sbit LED3=P21;sbit LED4=P20;int num;
21、 /鍵值int x,y; /行和列sbit BUZZER=P25;/蜂鳴器引腳unsigned char code table = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/共陽數(shù)碼管顯示0F/*系統(tǒng)初始化*/void sys_init()ET0=1;TMOD=0X01;TH0=-10000/256;TL0=-10000%256;TR0=1;EA=1;/*延時函數(shù)500us*/void delay_s()/500usunsigned char i;_nop_();i = 24
22、7;while (-i);/*延時函數(shù)500ms*/void delay()/500msunsigned char i, j, k;_nop_();i = 4;j = 205;k = 187;dodowhile (-k); while (-j); while (-i);/*蜂鳴器發(fā)聲函數(shù)*/void fmq()int i;for(i=0;i<100;i+)BUZZER=BUZZER;delay_s();/*矩陣鍵盤掃描*/unsigned char Keycan() unsigned char rcode, ccode;/rcode存臨時值,ccode存計算結(jié)果 P3 = 0xF0; /
23、 行掃描,列線輸入 rcode=P3; if(rcode != 0xF0) / 若有鍵按下 delay();/ 延時去抖動 rcode=P3; if(rcode != 0xF0) ccode=P3; /取行值 P3=0xff; /行列全部置1,否則會影響列掃描的結(jié)果 P3=0x0f; /列掃描 rcode=P3; ccode = ccode|rcode; fmq(); return (ccode); return 0;/* 按鍵鍵值轉(zhuǎn)換*/void Keychange(unsigned char key) switch(key) case 0x7e: num=0,x=1,y=1; break; case 0xbe: num=1,x=1,y=2; break; case 0xde: num=2,x=1,y=3;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國旅居康養(yǎng)行業(yè)全國市場開拓戰(zhàn)略制定與實施研究報告
- 2025-2030年中國小家電行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國壓鑄行業(yè)營銷創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國汽車經(jīng)銷行業(yè)并購重組擴張戰(zhàn)略制定與實施研究報告
- 網(wǎng)絡(luò)工程師工作總結(jié)5篇
- 建設(shè)項目環(huán)境設(shè)施竣工驗收指南
- 面向智能網(wǎng)聯(lián)汽車的成熟駕駛模型白皮書 202311
- 家政培訓(xùn)師知識點課件
- 2023-2029年中國鐵路后行業(yè)發(fā)展監(jiān)測及市場發(fā)展?jié)摿︻A(yù)測報告
- 冷鏈物流園及配套基礎(chǔ)設(shè)施建設(shè)項目資金申請報告
- 河北省石家莊市2023-2024學(xué)年高二上學(xué)期期末考試 語文 Word版含答案
- 觸電與應(yīng)急知識培訓(xùn)總結(jié)
- 代理記賬機構(gòu)自查報告范文
- 項目貸款保證函書
- 新版標準日本語(初級)上下冊單詞默寫表
- 面向5G網(wǎng)絡(luò)建設(shè)的站點供電技術(shù)應(yīng)用與發(fā)展
- 普通語文課程標準(2023年核心素養(yǎng)版)
- 洗滌劑常用原料
- 曼陀羅中毒課件
- (新版)焊工(初級)理論知識考試200題及答案
- 滿堂腳手架計算書
評論
0/150
提交評論