版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、作者:夏路易,電子工業(yè)出版社所有,第7章 掃描數(shù)碼管、鍵盤與點陣顯示 7.1 掃描數(shù)碼管顯示 (1)直接掃描數(shù)碼管 采用單獨的引腳輸出段碼與位碼,占用I/O引腳少,引腳數(shù)量等于8位(段碼)加數(shù)碼管的數(shù)量(位碼),節(jié)省電源功率,但是浪費CPU時間,因為必須定時更換段碼與位碼,保證顯示的連續(xù)性。需要點亮一個數(shù)碼管一段時間(持續(xù)1ms以上),再切換到另外一個。 例如三個數(shù)碼管組成的顯示器,數(shù)碼管的工作點電流為10mA,2V壓降,則可以采用30mA,33%占空比的電流工作,若是每個數(shù)碼管顯示時間為5ms,需要15ms完成一次顯示,則每個數(shù)碼管的閃爍頻率為66Hz。若是增加數(shù)碼管數(shù)量,則占空比降低,若要
2、保證亮度需要增加電流,但是最大不要超過100mA。圖所示的是共陰極數(shù)碼管的掃描工作接線圖。,作者:夏路易,電子工業(yè)出版社所有,段驅(qū)動連接器IDATA與51單片機的P0口相連,位驅(qū)動連接器IDS與P2口相連,段驅(qū)動信號高電平有效,驅(qū)動晶體三極管9013的信號也是高電平有效。,作者:夏路易,電子工業(yè)出版社所有,例題7-1 直接掃描數(shù)碼管 8位共陰極數(shù)碼管,采用掃描方式。輸出1、2、3、4、5、6、7、8。 #include unsigned char code table1=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f;
3、/段碼,高電平有效 unsigned char code table3=0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0 x40,0 x80; /位碼,高電平有效 unsigned char i; /i是數(shù)碼管掃描變量 unsigned char a,b; /a、b是循環(huán)變量,void main(void) while(1) for(i=0;i0;a-) /循環(huán)延時 for(b=248;b0;b-); ,作者:夏路易,電子工業(yè)出版社所有,(2)總線法掃描數(shù)碼管 采用兩個8D鎖存器74373分時鎖存段碼與位碼,則可以節(jié)省I/O引腳,例如8位數(shù)碼管掃描顯示可以采用10個I
4、/O口實現(xiàn)。其中8位用來分時送段碼與位碼,另外2位用于連接74373的鎖存控制端,分別控制鎖存段碼與位碼。,圖中的D0D7信號與P3口相連,LE1與LE2與P2_0和P2_1引腳相連。D0D7信號分時送出段碼與位碼。 74373功能為: OE是輸出使能控制,OE=1時,輸出高阻,OE=0時,輸出等于鎖存器輸出。 LE為鎖存控制端,LE=1時,鎖存器輸出與輸入相同,LE=0時,鎖存器鎖存輸入信號。,作者:夏路易,電子工業(yè)出版社所有,例題7-2 采用總線法掃描數(shù)碼管,8位共陰極數(shù)碼管,顯示輸出數(shù)字1、2、3、4、5、6、7、8。 源程序如下: #include unsigned char code
5、 table1=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /段碼,高電平有效 unsigned char code table3=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f; /位碼,低電平有效 unsigned char i; /i是數(shù)碼管掃描變量 unsigned char a,b; /a、b是循環(huán)變量 void main(void) while(1) for(i=0;i0;a-) /延時 for(b=248;b0;b-); ,作者:夏路易,電子工業(yè)出版社所
6、有,7.2 掃描鍵盤 掃描式鍵盤又叫行列式鍵盤或矩陣式鍵盤。用I/O口線組成行列結(jié)構(gòu),按鍵設(shè)置在行列的交點上。例如用22的行、列結(jié)構(gòu)可構(gòu)成4個鍵的鍵盤,44的行列結(jié)構(gòu)可構(gòu)成16個鍵的鍵盤。因此,在按鍵數(shù)量較多時,可以節(jié)省I/O口引腳。,作者:夏路易,電子工業(yè)出版社所有,行、列線分別連接到按鍵開關(guān)的兩端。行線通過上拉電阻接到電源VCC,被鉗位在高電平狀態(tài)。 鍵盤中有無按鍵按下的判斷方法是:將列線的所有I/O線均置成低電平,然后將行線電平狀態(tài)讀入。如果有鍵按下,總會有一根行線電平被拉至低電平,從而使行輸入不全為1。若是列線為高4位,則可以判斷低4位,如果低4位不全為1,則有按鍵按下。 鍵盤中哪個鍵
7、按下的判斷方法是:由列線逐列置低電平后,檢查行輸入狀態(tài)而確定的。其方法是:依次給列線送低電平,然后查所有行線狀態(tài),如果全為1,則所按下的鍵不在此列;如果不全為1,則所按下的鍵必在此列。而且是在此列與電平為0的行線相交的交點上的那個鍵。一旦找到哪個按鍵按下,就可以賦鍵值。,作者:夏路易,電子工業(yè)出版社所有,例題7-3 4x4掃描鍵盤 如下的鍵盤掃描程序,對圖7-3所示的鍵盤進行掃描。P3高4位(P3_4P3_5)為列掃描(KL0KL3),順序輸出低電平;P3低4位為行掃描(Kh0Kh3),順序讀入數(shù)據(jù),檢測哪一行為0; 源程序如下: #include unsigned char code tab
8、le=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90 ,0 x88,0 x83,0 xc6,0 xA1,0 x86,0 x8e; /共陽數(shù)碼管的十六進制-7段譯碼表 unsigned char temp; /暫存變量 unsigned char key; /鍵值變量 unsigned char i,j; /循環(huán)變量,作者:夏路易,電子工業(yè)出版社所有,void main(void) while(1) P3=0 xff; /使P3口輸出高電平,準備接收輸入信號 P3_4=0; /使P3_4為0,然后檢測鍵盤,如果低4位不等于F
9、,表示鍵盤按下 temp=P3; /將P3口數(shù)值保存在變量temp temp=temp ,作者:夏路易,電子工業(yè)出版社所有,switch(temp) /根據(jù)低4位的值,用分支語句確定鍵值 case 0 x0e: /如果P3低4位為1110,所以1110 1110 key=7; break; case 0 x0d: /如果P3低4位為1101,所以1110 1101 key=8; break; case 0 x0b: /如果P3低4位為1011,所以1110 1011 key=9; break; case 0 x07: /如果P3低4位為0111,所以1110 0111 key=10; brea
10、k; temp=P3; P1_0=P1_0; P0=tablekey; /P0口相連的數(shù)碼管顯示鍵值 temp=temp ,作者:夏路易,電子工業(yè)出版社所有,P3=0 xff; P3_5=0; /使P3_5為0,然后檢測鍵盤,如果低4位不等于F,表示鍵盤按下 temp=P3; temp=temp ,作者:夏路易,電子工業(yè)出版社所有,switch(temp) case 0 x0e: /如果P3低4位為1110,所以1101 1110 key=4; break; case 0 x0d: /如果P3低4位為1101,所以1101 1101 key=5; break; case 0 x0b: /如果P
11、3低4位為1011,所以1101 1011 key=6; break; case 0 x07: /如果P3低4位為0111,所以1101 0111 key=11; break; temp=P3; P1_0=P1_0; P0=tablekey; temp=temp ,作者:夏路易,電子工業(yè)出版社所有,P3=0 xff; P3_6=0; /使P3_6為0,然后檢測鍵盤,如果低4位不等于F,表示鍵盤按下 temp=P3; temp=temp ,作者:夏路易,電子工業(yè)出版社所有,switch(temp) case 0 x0e: /1011 1110 key=1; break; case 0 x0d:
12、/1011 1101 key=2; break; case 0 x0b: /1011 1011 key=3; break; case 0 x07: /1011 0111 key=12; break; temp=P3; P1_0=P1_0; P0=tablekey; temp=temp ,作者:夏路易,電子工業(yè)出版社所有,P3=0 xff; P3_7=0; /使P3_7為0,然后檢測鍵盤,如果低4位不等于F,表示鍵盤按下 temp=P3; temp=temp ,作者:夏路易,電子工業(yè)出版社所有,switch(temp) case 0 x0e: / 0111 1110 key=0; break;
13、case 0 x0d: /0111 1101 key=13; break; case 0 x0b: /0111 1011 key=14; break; case 0 x07: /0111 0111 key=15; break; temp=P3; P1_0=P1_0; P0=tablekey; /顯示按鍵值 temp=temp ,作者:夏路易,電子工業(yè)出版社所有,7.3 發(fā)光二極管點陣顯示 點陣發(fā)光二極管器件內(nèi)部如圖所示。 若是行加高電平,列加低電平,則行列交叉點的發(fā)光二極管亮,其實可以把每一行相連的8個發(fā)光二極管看作一個數(shù)碼管的8個段,列相當于段,行相當于行,若是列加段碼,行加位碼,就與共陽極
14、掃描數(shù)碼管顯示的情況相同。,作者:夏路易,電子工業(yè)出版社所有,如圖所示,若要顯示數(shù)字1,則需要8個列碼為:0 xff,0 xff,0 xff,0 xff,0 xde,0 x80,0 xfe,0 xff。因為使共陽接線方式,所以列碼為0(低電平)的位置,發(fā)光二極管亮。,作者:夏路易,電子工業(yè)出版社所有,例題7-4 發(fā)光二極管點陣定時順序顯示數(shù)字09。 公共端為陽極(行),連接PNP型晶體管9102的集電極,9012基極信號為低電平有效。列控制低電平有效。每給定一次列數(shù)據(jù),就掃描1行,列數(shù)據(jù)值為零的發(fā)光二極管,由于在行公共端上加高電平,會被點亮。對應(yīng)8列數(shù)據(jù),掃描8次,完成1次顯示。 單片機的P0
15、口輸出行掃描信號,順序輸出低電平;P2口輸出列數(shù)據(jù)。,作者:夏路易,電子工業(yè)出版社所有,#include unsigned char code tab=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f; /行掃描表,低電平有效(驅(qū)動9012) unsigned char code digittab108=0 xff,0 xff,0 xc1,0 xbe,0 xbe,0 xbe,0 xc1,0 xff, /0 0 xff,0 xff,0 xff,0 xff,0 xde,0 x80,0 xfe,0 xff, /1 0 xff,0 xff,0 xd8,0
16、xba,0 xba,0 xba,0 xc6,0 xff, /2 0 xff,0 xff,0 xff,0 xb6,0 xb6,0 xb6,0 xc9,0 xff, /3 0 xff,0 xff,0 xf3,0 xeb,0 xdb,0 x80,0 xfb,0 xff, /4 0 xff,0 xff,0 x8d,0 xae,0 xae,0 xae,0 xb1,0 xff, /5 0 xff,0 xff,0 xc1,0 xb6,0 xb6,0 xb6,0 xd9,0 xff, /6 0 xff,0 xff,0 xbf,0 xbf,0 xbf,0 xb0,0 x8f,0 xff, /7 0 xff,0
17、xff,0 xc9,0 xb6,0 xb6,0 xb6,0 xc9,0 xff, /8 0 xff,0 xff,0 xcd,0 xb6,0 xb6,0 xb6,0 xc1,0 xff; /9, /字型碼,8個列數(shù)據(jù)組成一個數(shù)字,低電平有效 unsigned int timecount; /每個數(shù)字顯示時間變量 unsigned char cnta; /行數(shù)據(jù)掃描變量 unsigned char wdn; /更換顯示數(shù)字的字變量,作者:夏路易,電子工業(yè)出版社所有,void main(void) TMOD=0 x01; /定時器0,模式1 TH0=(65536-3000)/256; /設(shè)置初值 T
18、L0=(65536-3000)%256; TR0=1; /啟動定時器 ET0=1; /允許定時器中斷 EA=1; /允許所有中斷 while(1); /無限空循環(huán) ,作者:夏路易,電子工業(yè)出版社所有,void t0(void) interrupt 1 using 0 /定時器中斷服務(wù)程序 TH0=(65536-3000)/256; /重置初值 TL0=(65536-3000)%256; /重置初值 P0=tabcnta; /每次中斷掃描一行(接9012基極)低電平有效 P2=digittabwdncnta; /從字變量wdn值選擇的8個列數(shù)據(jù)中,由cnta選擇一個顯示 cnta+; /行掃描變量加1 if(cnta=8) /如果8個行掃描完畢,相當于8個列數(shù)據(jù)順序輸出完畢 cnta=0; /返回第1行,重新進行行掃描 timecount+; /對中斷計數(shù) if(timecount=333) /每333次中斷,更換一個被顯示的數(shù)字 timecount=0; wdn+; /字變量加1 , if(wdn=10) /字變量等于10,相當于分為10次分別輸出了10個數(shù)字09。 wdn=0; /字變量歸0,作者:夏路易,電子工業(yè)出版社所有,本章參考文獻:914 第7章 習(xí)題 1.
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年涉縣招教考試備考題庫含答案解析(奪冠)
- 2025年交口縣招教考試備考題庫帶答案解析
- 2025年環(huán)縣招教考試備考題庫附答案解析
- 2025年正安縣幼兒園教師招教考試備考題庫附答案解析(奪冠)
- 2025年中山職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫附答案解析
- 2025年上海南湖職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(必刷)
- 2024年貴州輕工職業(yè)大學(xué)馬克思主義基本原理概論期末考試題帶答案解析(必刷)
- 2025屆山東省濟寧市鄒城市兗礦第一中學(xué)高三模擬測試生物試題(一)(解析版)
- 2026年教育心理學(xué)專業(yè)考試學(xué)生心理輔導(dǎo)方案設(shè)計題
- 2025年任縣幼兒園教師招教考試備考題庫含答案解析(奪冠)
- 2024年山東省濟南市中考化學(xué)試卷( 含答案)
- 建筑結(jié)構(gòu)改造設(shè)計和加固技術(shù)綜合分析的開題報告
- 管理會計學(xué) 第10版 課件 第1、2章 管理會計概論、成本性態(tài)與變動成本法
- 喪葬費用補助申請的社保授權(quán)委托書
- 2024年度初會《經(jīng)濟法基礎(chǔ)》高頻真題匯編(含答案)
- 課例研究報告
- 啤酒營銷促銷實戰(zhàn)技巧之經(jīng)銷商管理技巧知識培訓(xùn)
- 建筑工程各部門職能及各崗位職責(zé)201702
- 機柜端口對應(yīng)表
- GB/T 3934-2003普通螺紋量規(guī)技術(shù)條件
- 車輛贈與協(xié)議模板
評論
0/150
提交評論