freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于at89c51單片機(jī)的電子琴系統(tǒng)設(shè)計(jì)-文庫(kù)吧

2025-01-03 14:49 本頁(yè)面


【正文】 中斷0) /INT1 (外部中斷1) T0 (記時(shí)器0外部輸入) T1 (記時(shí)器1外部輸入) /WR (外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通) /RD (外部數(shù)據(jù)存儲(chǔ)器讀選通)P3 口同時(shí)為閃存編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪(fǎng)問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX, M0VC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指令期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(OOOOHFFFFH), 不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET。當(dāng)/EA 端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來(lái)自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。其余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,必須保證脈沖的高低電平要求的寬度。 芯片擦除整個(gè)PER0M陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms來(lái)完成。在芯片擦除操作中,代碼陣列全被寫(xiě)“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。 矩陣式鍵盤(pán)的識(shí)別和顯示 矩陣式鍵盤(pán)的結(jié)構(gòu)與工作原理在鍵盤(pán)中按鍵數(shù)量較多時(shí),為了減少I(mǎi)/O 口的占用,通常將按鍵排列成矩陣 形式。在矩陣式鍵盤(pán)中,每條水平線(xiàn)和垂直線(xiàn)在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1 口)就可以構(gòu)成44=16個(gè)按鍵,比之直接將端口線(xiàn)用于鍵盤(pán)多出了一倍,而且線(xiàn)數(shù)越多,區(qū)別越明顯,比如再多加一條線(xiàn)就可以構(gòu)成20鍵的鍵盤(pán),而直接用端口線(xiàn)則只能多出一鍵(9鍵)。由此可見(jiàn),在需要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤(pán)是合理的。矩陣式結(jié)構(gòu)的鍵盤(pán)顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,列線(xiàn)通過(guò)電阻接正電源,并將行線(xiàn)所接的單片機(jī)的I/O 口作為輸出端,而列線(xiàn)所接的I/O口則作為輸入。這樣,到按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線(xiàn)輸出是低電平,一旦有鍵按下,則輸入線(xiàn)就會(huì)被拉低,這樣,通過(guò)讀入輸入線(xiàn)的狀態(tài)就可得知是否有鍵按下了。具體的識(shí)別及編程方法如下所述。 矩陣式鍵盤(pán)的按鍵識(shí)別方法確定矩陣式鍵盤(pán)上何鍵被按下介紹一種“行掃描法”。行掃描法又稱(chēng)為逐行(或列)掃描查詢(xún)法,是一種最常用的按鍵識(shí)別方法,介紹過(guò)程如下。(1)判斷鍵盤(pán)中有無(wú)鍵按下將全部行線(xiàn)置低電平,然后檢測(cè)列線(xiàn)的狀態(tài)。只要有一列的電平為低,則表示鍵盤(pán)中有鍵被按下,而且閉合的鍵位于低電平線(xiàn)與4根行線(xiàn)相交叉的4個(gè)按鍵之中。若所有列線(xiàn)均為高電平,則鍵盤(pán)中無(wú)鍵按下。(2)判斷閉合鍵所在的位置在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。其方法是依次將行線(xiàn)置為低電平,即在置某根行線(xiàn)為低電平時(shí),其它線(xiàn)為高電平。在確定某根行線(xiàn)位置為低電平后,再逐行檢測(cè)各列線(xiàn)的電平狀態(tài)。若 某列為低,則該列線(xiàn)與置為低電平的行線(xiàn)交叉處的按鍵就是閉合的按鍵。 鍵盤(pán)接口必須具有的4個(gè)基本功能(1) 去抖動(dòng):每個(gè)按鍵在按下或松開(kāi)時(shí),都會(huì)產(chǎn)生短時(shí)間的抖動(dòng)。抖動(dòng)的持續(xù)時(shí)間與鍵的質(zhì)量相關(guān),一般為5—20mm。所謂抖動(dòng)是指在識(shí)別被按鍵是必須避開(kāi)抖動(dòng)狀態(tài),只有處在穩(wěn)定接通或穩(wěn)定斷開(kāi)狀態(tài)才能保證識(shí)別正確無(wú)誤。去抖問(wèn)題可通過(guò)軟件延時(shí)或硬件電路解決。(2) 防串鍵:防串鍵是為了解決多個(gè)鍵同時(shí)按下或者前一按鍵沒(méi)有釋放又有新的按鍵按下時(shí)產(chǎn)生的問(wèn)題。常用的方法有雙鍵鎖定和N鍵輪回兩種方法。雙鍵鎖定,是當(dāng)有兩個(gè)或兩個(gè)以上的按鍵按下時(shí),只把最后釋放的鍵當(dāng)作有效鍵并產(chǎn)生相應(yīng)的鍵碼。N鍵輪回,是當(dāng)檢測(cè)到有多個(gè)鍵被按下時(shí),能根據(jù)發(fā)現(xiàn)它們的順序依次產(chǎn)生相應(yīng)鍵的鍵碼。(3) 被按鍵識(shí)別:如何識(shí)別被按鍵是接口解決的主要問(wèn)題,一般可通過(guò)軟硬結(jié)合的方法完成。常用的方法有行掃描法和線(xiàn)反轉(zhuǎn)法兩種。行掃描法的基本思想是,由程序?qū)︽I盤(pán)逐行掃描,通過(guò)檢測(cè)到的列輸出狀態(tài)來(lái)確定閉合鍵,為此,需要設(shè)置入口、輸出口一個(gè),該方法在微機(jī)系統(tǒng)中被廣泛使用。線(xiàn)反轉(zhuǎn)法的基本思想是通過(guò)行列顛倒兩次掃描來(lái)識(shí)別閉合鍵,為此需要提供兩個(gè)可編程的雙向輸 入/輸出端口。(4) 鍵碼產(chǎn)生:為了從鍵的行列坐標(biāo)編碼得到反映鍵功能的鍵碼,一般在內(nèi)存區(qū)中建立一個(gè)鍵盤(pán)編碼表,通過(guò)查表獲得被按鍵的鍵碼。用AT89C51的并行口 P0接44矩陣鍵盤(pán),以P0. 0—P0. 3作輸入線(xiàn),以P0. 4一P0. 7作輸出線(xiàn);在數(shù)碼管上顯示每個(gè)按鍵的“0—F”序號(hào)。 LED數(shù)碼管 數(shù)碼管的分類(lèi)數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多 一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極 數(shù)碼管。共陽(yáng)極數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管。共陽(yáng)極數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰極數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰極數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線(xiàn)GND上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就不亮。如圖 32所示:圖 32 7段數(shù)碼管 數(shù)碼管的驅(qū)動(dòng)方式數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類(lèi)。(1) 靜態(tài)顯示驅(qū)動(dòng):靜態(tài)驅(qū)動(dòng)也稱(chēng)直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的 I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二—十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要58 =40根I/O端口來(lái)驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O端口才32個(gè),實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。(2) 動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯 示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃a,b, c, d, e, f, g, dp的同 名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線(xiàn)控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi),該位就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1?2ms,由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。 硬件設(shè)計(jì)圖圖 33 利用PROTEUS仿真設(shè)計(jì)的硬件電路圖圖中的矩陣鍵盤(pán),從上到下,從左到右,依次為鍵盤(pán)的015,在數(shù)碼管上顯示時(shí)順序?yàn)?9和AF,在按功能鍵時(shí),圖上的兩個(gè)指示燈會(huì)根據(jù)功能的不同實(shí)現(xiàn)亮/滅狀態(tài)的切換。在播放內(nèi)置音樂(lè)時(shí),指示燈在一定程度上能指示出曲目的音符。 第 4 章 章軟件設(shè)計(jì) 整體程序處理流程圖圖 41 整體程序處理流程圖在電子琴開(kāi)始工作時(shí),系統(tǒng)默認(rèn)電子琴處于彈奏狀態(tài),歌曲選擇功能鍵的目的是賦予矩陣鍵盤(pán)第二功能,即對(duì)系統(tǒng)內(nèi)置的歌曲進(jìn)行選擇,在放歌時(shí)能且只能 通過(guò)彈奏/停止鍵來(lái)結(jié)束放歌,選歌時(shí)必須先按下歌曲選擇功能鍵,在通過(guò)矩陣 鍵盤(pán)來(lái)選擇和切換曲目。 I/O并行口直接驅(qū)動(dòng)LED顯示把“AT89C51”—P2. 7/A15端口用8芯排線(xiàn)連接到一位數(shù)碼管的a—h端口上要求:,P2. 1/A9與b相連,P2. 2/A10與c相連……P2. 7/A15與h相連。表 41字形碼表及對(duì)應(yīng)的音符10x3f低5 SO90x7f中6 LA20x06低6 LAA0x6f中7 SI30x5b低7 SIb0x77高1 DO40x4f中1 DOC0x7c高2 RE50x66中2 RED0x39高3 M60x6d中3 ME0x5e高4 FA70x7d中4 FAF0x79高5 SO80x07中5 SO00x71高6 LA本設(shè)計(jì)中,數(shù)碼管的顯示通過(guò) P2=DSY_CODE[k] 這句語(yǔ)言來(lái)查表并輸出,實(shí)現(xiàn)音符的顯示。 音樂(lè)播放設(shè)計(jì)一首音樂(lè)是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂(lè)了,當(dāng)然對(duì)于單片機(jī)來(lái)產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)半周期時(shí)間,每當(dāng)計(jì)時(shí)終止后就將 ,然后重復(fù)計(jì)時(shí)再反相。就可在P3. 7引腳上得到此頻率的脈沖。利用AT89C51的內(nèi)部定時(shí)器使其工作計(jì)數(shù)器模式(M0DE1)下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523Hz,其周期T= 1/523= 1912μs,因此只要令計(jì)數(shù)器計(jì)時(shí)956μs/lμs=956,每計(jì)數(shù)956次時(shí)將I/O反相,就可得到中音DO (523Hz)。計(jì)數(shù)脈沖值與頻率的關(guān)系式是:N=fi247。2247。fr ( 41 )式中,N是計(jì)數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12MHz時(shí),其頻率為1MHz); fr是想要產(chǎn)生的頻率。其計(jì)數(shù)初值T的求法如下:T=65536—N=65536—fi247。2247。fr例如:設(shè) K=65536,fi =1MHz,求低音 DO (261Hz)、中音 D0 (523Hz)、 高音DO (1046Hz)的計(jì)數(shù)值。T=65536—N=65536—fi247。2247。fr=65536—1000000247。2247。fr =65536—500000/fr低音DO的T=65536—500000/262=63628 中音DO的T=65536—500000/523=64580 高音DO的T=65536—500000/1046=65058 單片機(jī)12MHz晶振,高中低音符與計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如表 42所示 表 42 音符頻率表音符頻率(HZ)簡(jiǎn)譜碼(T值)音符頻率(HZ)簡(jiǎn)譜碼(T值)休止00中4 FA69864820低1 D026263628中5 SO78464898低2 RE29463835中6 LA88064968低3 M33064021中7 SI98865030低4 FA34964103高1 D0104665058低5 S039264260高2 RE117565110低6 LA44064400高3 M131865157低7 SI49464524高4 FA139765178中1 D052364580高5 S0156865217中2 RE58764684高6 LA176065252中3 M65964777高7 SI196765283我們要為這個(gè)音符建立一個(gè)表格,單片機(jī)通過(guò)查表的方式來(lái)獲得相應(yīng)的數(shù)據(jù) uint code tab[ ]={0,63628,63835,64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217,65252,65283,}音樂(lè)的音拍,一個(gè)節(jié)拍為單位(C調(diào))如表 43所示:表 43 曲調(diào)值表曲調(diào)值DELAY曲調(diào)值DELAY調(diào)4/4125ms調(diào)4/462ms調(diào)3/4187ms調(diào)3/494ms調(diào)2/4250ms調(diào)2/4125ms對(duì)于不同的曲調(diào)我們也可以用單片機(jī)的另外一個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成。在這個(gè)程序中用到了兩個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成的。其中T0用來(lái)產(chǎn)生音符頻率,
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1