三種方法讀取鍵值 使用者設計行列鍵盤介面,一般常採用三種方法讀取鍵值。 中斷式 在鍵盤按下時產生一個外部中斷通知CPU,並由中斷處理程式通過不同位址讀資料線上的狀態判斷哪個按鍵被按下。 本實驗採用中斷式實現使用者鍵盤介面。 掃描法 對鍵盤上的某一行送低電位,其他為高電位,然後讀取列值,若列值中有一位是低,表明該行與低電位對應列的鍵被按下。否則掃描下一行。 反轉法 先將所有行掃描線輸出低電位,讀列值,若列值有一位是低表明有鍵按下;接著所有列掃描線輸出低電位,再讀行值。 根據讀到的值組合就可以查表得到鍵碼。4x4鍵盤按4行4列組成如圖電路結構。按鍵按下將會使行列連成通路,這也是見的使用者鍵盤設計電路。 //-----------4X4鍵盤程序--------------// uchar keboard(void) { uchar xxa,yyb,i,key; if((PINC&0x0f)!=0x0f) //是否有按鍵按下 {delayms(1); //延時去抖動 if((PINC&0x0f)!=0x0f) //有按下則判斷 { xxa=~(PINC|0xf0); //0000xxxx DDRC=0x0f; PORTC=0xf0; delay_1ms(); yyb=~(PINC|0x0f); //xxxx0000 DDRC=0xf0; //復位 PORTC=0x0f; while((PINC&0x0f)!=0x0f) //按鍵是否放開 { display(data); } i=4; //計算返回碼 while(xxa!=0) { xxa=xxa>>1; i--; } if(yyb==0x80) key=i; else if(yyb==0x40) key=4+i; else if(yyb==0x20) key=8+i; else if(yyb==0x10) key=12+i; return key; //返回按下的鍵盤碼 } } else return 17; //沒有按鍵按下 }
上傳時間: 2013-11-12
上傳用戶:a673761058
51匯編程序實例:舉一例說明:流水燈加數碼管 LOOP: ; 標號CLR P2.6 ;選中p2.6 數碼管左邊的8字使能SETB P2.7 ;p2.7不使能。 右邊的數碼管消隱MOV P0,#28H ;把28h送p0口;數碼管顯示 0LCALL DELAY ;延時MOV P0,#0FFH ;0ffh 送p0口,數碼管清除CLR P1.0 ;點亮p1.0發光管MOV P0,#7EH ;把7eh送p0口;數碼管顯示 1LCALL DELAYMOV P0,#0FFHCLR P1.1 ;點亮p1.0發光管CLR P1.0 ;點亮p1.0發光管MOV P0,#0A2H ;數碼管顯示 2LCALL DELAYMOV P0,#0FFHCLR P1.2CLR P1.1CLR P1.0MOV P0,#62H ;數碼管顯示 3LCALL DELAYMOV P0,#0FFHCLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#74H ;數碼管顯示 4LCALL DELAYMOV P0,#0FFHCLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#61H ;數碼管顯示 5;LCALL DELAYMOV P0,#0FFHCLR P1.5CLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#21H ; 數碼管顯示 6LCALL DELAYMOV P0,#0FFHCLR P1.6CLR P1.5CLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#7AH ; 數碼管顯示 7LCALL DELAYMOV P0,#0FFHCLR P1.7CLR P1.6CLR P1.5CLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#20H ; 數碼管顯示 8LCALL DELAYMOV P0,#0FFHLCALL DELAYMOV P0,#0FFHMOV P1,#0FFH;程序到此結果為左邊的數碼管顯示0,1,2,3,4,5,6,7,8;p1.0------------p1.7指示燈依次點亮SETB P2.6 ; 左邊的8消隱CLR P2.7 ;選中p2.7 數碼管右邊的8字使能 ,;MOV P0,#28HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.0MOV P0,#7EHLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.1MOV P0,#0A2HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.2MOV P0,#62HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.3MOV P0,#74HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.4MOV P0,#61HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.5MOV P0,#21HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.6MOV P0,#7AHLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.7MOV P0,#20HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHMOV P0,#0FFHMOV P1,#0FFH;這一段和上一段基本相同, 不同的是右邊的數碼管依次顯示012345678,左邊的不亮;;同時p1口的燈流動顯示:AJMP LOOP; 注意: 程序運行到此跳轉到開始標號,重復執行:DELAY: ;延時子程序;參考前面的教程:CLR P3.3 ;注意小喇叭在3.3口, 這里可以使小喇叭發出嗒,嗒聲MOV R7,#255NOPNOPD1:MOV R6,#255setb p3.3D2: DJNZ R6,D2clr p3.3DJNZ R7,D1SETB P3.3RETENDLOOP: ; 標號CLR P2.6 ;選中p2.6 數碼管左邊的8字使能SETB P2.7 ;p2.7不使能。 右邊的數碼管消隱MOV P0,#28H ;把28h送p0口;數碼管顯示 0 ;28為1010000LCALL DELAY ; 延時程序MOV P0,#0FFH ;0ffh 送p0口,數碼管清除;P0口為11111111CLR P1.0 ;點亮p1.0發光管; P1。0為電平,P0口為11111110MOV P0,#7EH ;把7eh送p0口;數碼管顯示 1; P1。0為低電平,P0口為11111110LCALL DELAY ; 延時程序MOV P0,#0FFHMOV P0,#0FFH ;0ffh 送p0口,數碼管清除;P0口為11111111 清一次顯示這條是清顯示的
上傳時間: 2013-10-31
上傳用戶:gundamwzc
近年來隨著科技的飛速發展,單片機的應用正在不斷深入,同時帶動傳統控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統中,單片機往往作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據具體硬件結構軟硬件結合,加以完善。 十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實現這井然秩序呢?靠的就是交通信號燈的自動指揮系統。交通信號燈控制方式很多。本系統采用MSC-51系列單片機ATSC51和可編程并行I/O接口芯片8255A為中心器件來設計交通燈控制器,實現了能根據實際車流量通過8051芯片的P1口設置紅、綠燈燃亮時間的功能;紅綠燈循環點亮,倒計時剩5秒時黃燈閃爍警示(交通燈信號通過PA口輸出,顯示時間直接通過8255的PC口輸出至雙位數碼管);車輛闖紅燈報警;綠燈時間可檢測車流量并可通過雙位數碼管顯示。本系統實用性強、操作簡單、擴展功能強。 程序源代碼 ORG 0000H ;主程序的入口地址 LJMP MAIN ;跳轉到主程序的開始處 ORG 0003H ;外部中斷0的中斷程序入口地址 ORG 000BH ;定時器0的中斷程序入口地址
上傳時間: 2013-12-21
上傳用戶:1234321@q
I2C 總線包括了兩條串行總線(時鐘線SCL 和數據線SDA),通過這兩條總線能實現多個芯片之間的通信。在互相連接的芯片中,至少有一個芯片作為總線控制器,而其它芯片則作為從控制器。在本應用說明中,介紹了用Holtek 的八位RISC 結構的單片機作為單總線控制器的軟件實現的方法。在本文的示例中,采用了一片EEPROM(型號HT24LC02,2Kbit)作為從控制器參與測試。電路說明:HT24LC02 的A0、A1、A2、VSS、WP 引腳接地,VCC 接+5V,SCL 接PA3,SDA 接PA2使用說明:例程中先向eeprom 中寫數據,寫完后,再將eeprom 中內容讀出來,并將讀出數據進行比較,若數據不相等程序跳到fail_out 中;若相等,最后程序跳到ok_end 中。本說明中提供了一個源文件OP_HT24.ASM 和一個包含文件HT24.ASM。在應用時,要將OP_HT24.ASM 文件添加到用戶的project 中,并修改HT24.INC 文件中的變量設置,以建立SCL/SDA引腳來與用戶的應用電路相匹配。
上傳時間: 2013-10-19
上傳用戶:ming52900
實驗板結合了單片機在線編程(燒寫)功能及程序運行功能,使得用戶一板在手便擁有了編程器和實驗板兩套設備。通過帶鎖按壓開關方便地實現系統編程狀態和程序運行狀態之間的轉換,馬上能觀察編程的運行結果,從而免去了單片機開發中必須的昂貴的硬件仿真器和專用編程器的開銷。同時由于在線編程,不用頻繁反復拔、插單片機,節省了時間,減少了損耗。同時本實驗板,已經把下載電路完整的做在了電路板中,不再需要專用下載線,只需要普通并口線就可以下載單片機程序,這又為消費者節省了不少金錢。我們保證所設計的電路穩定,在實驗過程中不需要插拔任何電線/跳線,單片機所有引腳資源可用,不存在保密的從處理器,下載過程方便快捷。另外,本實驗板采用usb供電,用戶只需要將普通usb延長線插入板子接口即可實驗,保證實驗過程不需要任何實驗室中才能得到設備,學生完全可以在家中/寢室中完成全部實驗。
上傳時間: 2013-10-22
上傳用戶:windypsm
更新說明: 1。界面采用新的字體,不會再有那種難看的黑色粗體字,比以前的要漂亮多了。 2。加入全面的提示幫助,盡量減少普通用戶的各種疑惑。 3。修正生成文件的擴展名的一些BUG,不會總是加上FON的擴展名了。 4。修正生成字模數據的一些格式BUG,現在生成的C51格式字模數據基本上可以直接粘貼到源程序中使用而不需要修改了 5。加入新的字模數據格式調整項,允許用戶更自由的定制自己需要的數據格式 6。最重要的更新:全面支持保存當前設置功能,用戶設置的字模格式,主窗口狀態和字庫生成窗口選項信息均可保存,下一次打開窗口時不用重新設置(由于要全面更改程序使用的變量結構,所以這部分化了很多時間)。 7。修正了新建圖象時會自動跳到圖形模式的BUG 8。增加輸出緊湊格式數據選項,可以生成不包含空白行的字模數據。 9。完善了每行數據顯示個數的功能,可以任意設置每行顯示的數據個數,并同時可以設置每行索引數據顯示個數。 10。修正了取模說明的一些錯誤,并改動了格式。 11。現在當用戶選擇10進制輸出時,會自動去掉生成字模數據前的“0x",或后面的“H”,選擇16進制時則會自動加上。 12。對各個窗體重新設計以全面適應最大化的需要,如果您覺得當前窗口不夠大,可以最大化使用。 13。增加生成英文點陣字庫功能,可自動生成ASCII碼從0-127的任意點陣字庫,使用方法同生成國標點陣字庫功能。 14。再次優化代碼,去掉各種調試信息,使程序速度再快一些。 15。還有一些細微的調整我記不清了…… 需要注意的地方: 在測試的過程中我發現了一個問題:在WIN98或WINME下當用戶需要生成特大點陣的字模時(例如320*320,1024*768的漢字字模),此時由于數據量非常龐大,而WIN98/WINME會有64K的數據容量限制,所以在主窗口中是無法得到全部的字模數據的,這時您需要使用字庫生成功能,通過形成一個數據文件才能得到完整的字模數據。 另外生成特大字模時如果出現“內存不足”的提示,請把液晶仿真面板的像素點改小一些,這樣可以節省內存。
上傳時間: 2013-10-17
上傳用戶:fengzimili
本教程內容力求以詳細的步驟和講解讓讀者以最快的方式學會 MC8051 IP core 的應用以及相關設計軟件的使用,并激起讀者對 SOPC 技術的興趣。本實驗重點講 8051Core 的應用,并通過一個簡單 C51 程序對51Core 進行硬件測試。 本實驗教程的內容編排如下: 第 1 章簡單的描述了 MC8051 IP core的基本結構及一些應用說明。 第 2 章詳細的介紹 8051Core 綜合、編譯應用。包括 Quartus II、Synplify Pro 軟件的基本應用,ROM、RAM 模塊的生成,8051Core 的封裝及應用測試。 附錄 A為 MC8051 IP Core 的指令集。 在閱讀本教程的過程中,請讀者注意以下幾點: 本教程在寫作過程中遵循“寧可啰唆一點,也不放過細節”的方針。在教程中的某些地方,有些讀者可能覺得很“簡單” ,甚至顯得有些啰唆,但對大多數初學者可能并非如此。因為作者認為,足夠簡單甚至可以跳過的內容,對某些讀者來說,未必能一下子就弄清楚,所以,本教程很 多地方將盡量闡述清楚,以節省讀者理解的時間。但在后面的章節中,如果涉及的細節在前面章節中已經提及,這些內容就會省略。 最 后作者要強調的是,本教程旨在引路,不會帶領讀者掌握更深層次的開發,更高級的應用希望讀者自己去挖掘。
上傳時間: 2013-10-16
上傳用戶:huyiming139
目前通信領域正處于急速發展階段,由于新的需 求層出不窮,促使新的業務不斷產生,因而導致頻率資源越來越緊張。在有限的帶寬里要傳輸大量的多媒體數據,提高頻譜利用率成為當前至關重要的課題,否則將 很難容納如此眾多的業務。正交幅度調制(QAM)由于具有很高的頻譜利用率被DVB-C等標準選做主要的調制技術。與多進制PSK(MPSK)調制不 同,OAM調制采取幅度與相位相結合的方式,因而可以更充分地利用信號平面,從而在具有高頻譜利用效率的同時可以獲得比MPSK更低的誤碼率。 但仔細分析可以發現QAM調制仍存在著頻繁的相位跳變,相位跳變會產生較大的諧波分量,因此如果能夠在保證QAM調制所需的相位區分度的前提下,盡量減少 或消除這種相位跳變,就可以大大抑制諧波分量,從而進一步提高頻譜利用率,同時又不影響QAM的解調性能。文獻中提出了針對QPSK調制的相位連續化方 法,本文借鑒該方法,提出連續相位QAM調制技術,并針對QAM調制的特點在電路設計時作了改進。
上傳時間: 2013-10-31
上傳用戶:鳳臨西北
設計了一種由直接數字頻率合成(DDS)、倍頻鏈構成的三次變頻直接頻率合成方案,實現了低相噪捷變頻高分辨率毫米波雷達頻率合成器設計。利用直接頻率合成器的倍頻輸出取代傳統三次變頻毫米波頻率源的鎖相環(PLL),同時提供線性調頻(LFM)信號,優化DDS和變頻方案的頻率配置關系。利用FPGA電路進行高速控制,較好地解決了毫米波頻率合成器各技術指標之間的矛盾。實測結果表明,采用該方案的毫米波頻率合成器在本振跳頻帶寬為160 MHz時,線性調頻頻率分辨率可達0.931 Hz,最大頻率轉換時間小于2 ?滋s,最大雜散低于-60 dBc,相位噪聲優于-90 dBc/Hz。
上傳時間: 2014-01-06
上傳用戶:brain kung
針對果園環境遠程實時監測的需求,設計了MCU芯片MSP430F149、射頻芯片nRF2401及各種傳感器接入電路構成的具有多種果園環境信息監測的無線傳感網絡節點。該節點系統采集果園微氣象信息(包括溫度、濕度、光照強度等),通過節點之間的無線通信,以多跳的方式傳給上位監控機,可實現果園環境信息的遠距離實時監測。
上傳時間: 2014-11-12
上傳用戶:金宜