版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、簡易電子琴助教器課題意義: 伴隨著電子信息技術(shù)的快速發(fā)展,越來越多電子產(chǎn)品也已經(jīng)走進我們?nèi)粘I钪校@些產(chǎn)品也它們獨特的優(yōu)勢開始逐步替代其它產(chǎn)品。這些電子產(chǎn)品往往價格低廉、應用方便,很容易為使用者接受??紤]到現(xiàn)在要求人才發(fā)展的全面性以及精神文化生活的需求,音樂學習已成為很多小孩以及學生的一種追求,基于此我們設計了一款功能完備、應用簡單、價格實惠的電子琴,以滿足社會的需要。設計方案:方案一:利用plc來完成設計。目前利用plc的技術(shù)已經(jīng)比較成熟。plc有其優(yōu)點,其性能優(yōu)異,體積小,可靠性和精度比較好,在電子琴的設計中可采用plc來完成硬件的控制,但是用plc實現(xiàn)編程比較復雜,對于電子琴這種小型設
2、計來說成本過高。方案二:采用eda技術(shù)來完成設計。eda是電子設計的發(fā)展趨勢,利用eda工具可以代替設計者完成電子系統(tǒng)設計中的大部分工作。應用范圍已涉及多個領(lǐng)域,對于電子琴的設計可以運用不同的分頻器來對信號進行不同程度的分頻,但由于元器件種類、個數(shù)繁多,而過于復雜的硬件電路也容易引起系統(tǒng)的精度不高、體積過大等不利因素。方案三:用單片機來完成設計??捎胊t89c52單片機通過zlg7289a的擴展控制鍵盤的和數(shù)碼管來實現(xiàn)。目前單片機的體積小功能強、價格低廉,集成度日益增高且控制比較容易,因而得到廣泛應用。因此利用單片機的設計可以克服其他方案中的問題,本設計就采用第三種方案。系統(tǒng)設計:1、 總體設
3、計 本設計以at89c52單片機為核心,通過zlg7289a來擴展外接鍵盤和led數(shù)碼管。聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個口線不斷的輸出“高”“低”電平,則在該口線上就能產(chǎn)生一定頻率的方波,將該方波接上喇叭就能發(fā)出一定頻率的聲音,若再利用程序控制“高”“低”電平的持續(xù)時間,就能改變輸出波形的頻率,從而改變音調(diào)。樂曲中,每一音符對應著確定的頻率,如果單片機某個口線輸出“高”“低”電平的頻率和某個音符的頻率一樣,那么將此口線接上喇叭就可以發(fā)出此音符的聲音。本系統(tǒng)就是根據(jù)此原理設計,對于at89c52單片機來說要產(chǎn)生一定頻率的方波大致是先將某口線輸出高電平然后延時一段時
4、間再輸出低電平,如此循環(huán)的輸出就會產(chǎn)生一定頻率的方波,通過改變延時的時間就可以改變輸出方波的頻率,而單片機延時主要有兩種方法:第一種方法是使用循環(huán)語句來實現(xiàn)延時,讓單片機循環(huán)的執(zhí)行某條指令然后根據(jù)單片機每條指令運行的時間以及循環(huán)的次數(shù)來計算延時時間。第二種方法是使用單片機的定時計數(shù)器延時。at89c2051單片機內(nèi)部有兩個16位的定時計數(shù)器t0和t1,單片機的定時計數(shù)器實際上是個計數(shù)裝置它既可以對單片機的內(nèi)部晶振驅(qū)動時鐘計數(shù)也可以對外部輸入的脈沖計數(shù),對內(nèi)部晶振計數(shù)時稱為定時器,對外部時鐘計數(shù)時稱為計數(shù)器。當對單片機的內(nèi)部晶振驅(qū)動時鐘計數(shù)時,每個機器周期定時計數(shù)器的計數(shù)值就加1,當計數(shù)值達到計
5、數(shù)最大值時計數(shù)完畢并通知單片機的cpu;對外部輸入的時鐘信號計數(shù)時,外部時鐘的每個時鐘上升沿定時計數(shù)器的計數(shù)值就加1,當計數(shù)值達到計數(shù)最大值時計數(shù)完畢并通知單片機的cpu。因此,如果知道單片機的機器周期或者外部輸入時鐘信號的周期,單片機就可以根據(jù)定時器的計數(shù)值計算出定時的時間。用此方法定時十分準確,想得到多大的延時時間就可以給定時器賦一定的計數(shù)初值,定時器從預先設置的計數(shù)初值開始不斷增1當增加到計數(shù)最大值時計數(shù)完畢,調(diào)整計數(shù)初值的大小就可以調(diào)整定時器定時的時間,從而達到準確的延時。本系統(tǒng)中就采用第二種方法通過定時/計數(shù)器延時。2、 硬件設計at89c52單片機:at89c52是51系列單片機的
6、一個型號,它是atmel公司生產(chǎn)的。at89c52是一個低電壓,高性能cmos 8位單片機,片內(nèi)含8k bytes的可反復擦寫的flash只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(ram),器件采用atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標準mcs-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和flash存儲單元,功能強大的at89c52單片機可提供許多較復雜系統(tǒng)控制應用場合。at89c52有40個引腳,32個外部雙向輸入/輸出(i/o)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2個讀寫口線,at89c52可以按照常規(guī)方法進行編程,但不可以
7、在線編程(s系列的才支持在線編程)。其將通用的微處理器和flash存儲器結(jié)合在一起,特別是可反復擦寫的flash存儲器可有效地降低開發(fā)成本。zlg7289a是一片具有串行接口的,可同時驅(qū)動8位共陰式數(shù)碼管(或64只獨立led)的智能顯示驅(qū)動芯片,該芯片同時還可連接多大64鍵的鍵盤矩陣,單片即可完成led顯示、鍵盤接口的全部功能。zlg7289a內(nèi)部含有譯碼器,可直接接受bcd碼或16進制碼,并具有2種譯碼方式,此外,還具有多種控制命令,如消隱、閃爍、左移、右移、段尋址等。zlg7289a具有片選信號,可方便地實現(xiàn)多于8位的顯示或多于64鍵的鍵盤接口。程序設計中將zlg7289a封裝成頭文件形式
8、,通過子程序調(diào)用即可達到程序開發(fā)目的,使用非常方便。電路連接圖:3、 軟件設計(一)定時計數(shù)器的工作方式及控制字特殊功能寄存器中tmod和tcon是定時器的方式控制寄存器。圖2為tmod寄存器的內(nèi)部結(jié)構(gòu),圖3為tcon寄存器的內(nèi)部結(jié)構(gòu)。tmod和tcon是寄存器的名稱,我們在寫程序時就可以直接用這個名稱來指定它們,當然也可以直接用它們的地址89h和88h來指定它們。用于t1用于t0gatec/tm1m0gatec/tm1m0圖2 tmon用于定時/計數(shù)器用于中斷tf1tr1tf0tr0ie1it1ie0it0圖3 tcon單片機定時計數(shù)器有四種工作方式,方式0、方式1、方式2、方式3,除方式3
9、外,t0和t1有完全相同的工作狀態(tài)1工作方式0定時器,計數(shù)器的工作方式o稱之為13位定時計數(shù)方式。它由tl(10)的低5位和th(0/1)的8位構(gòu)成13位的計數(shù)器,此時tl(10)的高3位未用。對于定時器的工作模式可以根據(jù)定時器的寄存器tmod來設置:m1m0:定時計數(shù)器共有四種工作方式,就是用m1m0來控制的,2位正好是四種組合。ct:定時計數(shù)器即可作定時用也可用計數(shù)用,如果c/t為o就是用作定時器(開關(guān)往上打),如果ct為1就是用作計數(shù)器(開關(guān)往下打)。一個定時計數(shù)器同一時刻要么作定時用,要么作計數(shù)用,不能同時用的。gate:當我們選擇了定時或計數(shù)工作方式后,定時計數(shù)脈沖卻不一定能到達計數(shù)
10、器端,中間還有一個開關(guān),顯然這個開關(guān)不合上,計數(shù)脈沖就沒法過去,那么開關(guān)什么時候過去呢?有兩種情況gate=0,分析一下邏輯,gate非后是1,進入或門,或門總是輸出1,和或門的另一個輸入端int1無關(guān),在這種情況下,開關(guān)的打開、合上只取決于tr1,只要tr1是1,開關(guān)就合上,計數(shù)脈沖得以暢通無阻,而如果tr1等于0則開關(guān)打開,計數(shù)脈沖無法通過,因此定時計數(shù)是否工作,只取決于tr1。gate=1,在此種情況下,計數(shù)脈沖通路上的開關(guān)不僅要由tr1來控制,而且還要受到int1引腳的控制,只有trl為1,且int1引腳也是高電平,開關(guān)才合上,計數(shù)脈沖才得以通過。這個特性可以用來測量一個信號的高電平的
11、寬度。2工作方式1工作方式1是16位的定時計數(shù)方式,將m1m0設為01即可,其它特性與工作方式0相同。3:工作方式28位自動裝入時間常數(shù)方式。由tl1構(gòu)成8位計數(shù)器,th1僅用來存放時間常數(shù)??磮D5所示,每當計數(shù)溢出,就會打開t(0/1)的高、低8位之間的開關(guān),計預置數(shù)進入低8位。這是由硬件自動完成的,不需要由人工干預。通常這種式作方式用于波特率發(fā)生器,用于這種用途時,定時器就是為了提供一個時間基準。計數(shù)溢出后不需要做事情,要做的僅僅只有一件,就是重新裝入預置數(shù),再開始計數(shù),而且中間不要任何延遲,可見這個任務用工作方式2來完成是最妙不過了。4工作方式32個8位的計數(shù)器,只適合于定時器0。這種式
12、作方式之下,定時計數(shù)器0被拆成2個獨立的定時計數(shù)器來用。其中,tl0可以構(gòu)成8位的定時器或計數(shù)器的工作方式,而tho則只能作為定時器來用。我們知道作定時、計數(shù)器來用需要控制位tr0,計滿后溢出需要有溢出標記tf0。t0被分成兩個來用,那就要兩套控制及溢出標記,tlo還是用原來的t0的標記,而th0則借用t1的標記。如此t1就無標記、控制可用因此一般只有在t1以工作方式2運行(當波特率發(fā)生器用)時,才讓t0工作于方式3的。(二)定時器計數(shù)器的定時計數(shù)范圍工作方式o:13位定時計數(shù)方式,因此,最多可以計到213,也就是8192次。對于12mhz的晶振,單片機的機器周期是1us。則工作方式0最大定時
13、時間是8.192us。工作方式1:16位定時計數(shù)方式,因此,最多可以計到216,也就是65536次。對于12mhz晶振,工作方式1最大定時時間是65536s。工作方式2和工作方式3,都是8位的定時計數(shù)方式,因此,最多可以計到28,也說是256次。對于12mhz晶振,工作方式1最大定時時間是256s。計數(shù)初值的計算方法:用最大計數(shù)量減去需要的計數(shù)次數(shù)即可。例:如果t0運行于定時狀態(tài),單片機的晶振是12mhz,要求定時loous,那么定時器要計100個機器周期,當to工作在工作方式o時計數(shù)初值應該是8192100=8092;工作在方式1時的計數(shù)初值應該是65536-100=65436;工作在方式2
14、,3時的計數(shù)初值應該是256100=156。音符和音拍與單片機定時器/計數(shù)器t0的對應關(guān)系:音樂的音符利用單片機的定時器/計數(shù)器t0產(chǎn)生不同頻率的方波信號,設單片機的晶振頻率為12mhz,則高、中、低音符于單片機定時器/計數(shù)器t0的數(shù)值對應關(guān)系如下表所示:音符頻率(hz)數(shù)值音符頻率(hz)數(shù)值音符頻率(hz)數(shù)值低1do26263628中1do52364580高1do104665058#1do#27763731#1do#55464663#1do#110965085低2re29463835中2er58764684高2re117565110#2re#31163928#2er#62264732#2
15、re#124565134低3m33064021中3m65964777高3m131865157低4fa34964103中4fa69864820高4fa139765178#4fa#37064185#4fa#74064860#4fa#148065198低5so39264260中5so78464898高5so156865217#5so#41564331#5so#83164934#5so#166165235低6la44064400低6la88064968高6la176065252#6la#46664463#6la#93264994#6la#186565268低7si49464524中7si9886503
16、0高7si196765283音樂的節(jié)拍利用單片機的定時器/計數(shù)器t1的延時功能還可以產(chǎn)生音樂不同的節(jié)拍,以c調(diào)為例,音拍與延時的對應關(guān)系如下表:音拍延時時間調(diào)4/4125調(diào)3/4187調(diào)2/4250系統(tǒng)軟件流程圖如圖所示實物圖: 彈奏樂曲如下圖: 播放樂曲及顯示相應聲調(diào)如下圖:參考文獻:1、 李朝青,單片機原理及接口技術(shù)(第3版),北京:北京航空航天大學出版社,2005.2、 姚燕南,姚向華,喬瑞萍,微型計算機原理(第五版),西安:西安電子科技大學出版社,2008.3、 周亞軍,張衛(wèi),電氣控制與plc原理及應用,西安:西安電子科技大學出版社,2008.4、 潘松,黃繼業(yè),eda技術(shù)與vhdl(
17、第2版),北京:清華大學出版社,2007.5、 楊路明,c語言程序設計,北京:北京郵電大學出版社,2005.6、 百度文庫網(wǎng)站 附件:程序段:/51單片機c語言程序和音樂采燈程序/本程序的單片機晶振采用#include#define uint unsigned int#define uchar unsigned charsbit speaker=p37;unsigned char timer0h,timer0l,m=0,k=0,i=0,zz,zz1,zz2,zz3,zz4,j=0,led=1,key2=0,key3=0,we=0x80,time=1;unsigned char flagd=0;
18、 code unsigned char sszymmh= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1, 6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1, 6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 ; /世上只有媽媽好? code unsigned char sb=
19、5,2,2, 3,2,1, 5,2,1, 1,3,4, 6,2,2, 1,3,2, 5,2,4, 5,2,2, 1,2,1, 2,2,1, 3,2,2, 2,2,1, 1,2,1, 2,2,6, 5,2,2, 3,2,1, 5,2,1, 1,3,2, 7,2,2, 6,2,2, 1,3,2, 5,2,4, 5,2,2, 2,2,1, 3,2,1, 4,2,2, 7,1,2, 1,2,8, 6,2,2, 1,3,2, 1,3,4, 7,2,2, 6,2,1, 7,2,1, 1,3,4, 6,2,1, 7,2,1, 1,3,1, 6,2,1, 6,2,1, 5,2,1, 3,2,1, 1,2,1,
20、 2,2,8, 5,2,2, 3,2,1, 5,2,1, 1,3,2, 7,2,2, 6,2,2, 1,3,2, 5,2,4, 5,2,2, 2,2,1, 3,2,1, 4,2,2, 7,1,2, 1,2,8 ; /送別code unsigned char dfh=5,2,2, 5,2,1, 6,2,1, 2,2,2, 1,2,2, 1,2,1, 6,1,1, 2,2,2, 5,2,2, 5,2,2, 6,2,1, 1,3,1, 6,2,1, 5,2,1, 1,2,2, 1,2,1, 6,1,1, 2,2,2, 5,2,2, 2,2,2, 1,2,2, 7,1,1, 6,1,1, 5,1,1,
21、 5,2,2, 2,2,2, 3,2,1, 2,2,1, 1,2,1, 1,2,1, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 2,2,1, 1,2,1, 7,1,1, 6,1,1, 5,1,1 ;/東方紅code unsigned char xyxy=6,2,2, 1,3,2, 7,2,1, 6,2,1, 5,2,1, 6,2,1, 3,2,6, 6,2,1, 5,2,1, 6,2,2, 1,3,2, 7,2,2, 6,2,1, 7,2,1, 1,3,6, 1,3,1, 2,3,1, 3,3,1, 3,3,1, 3,3,1, 3,3,1, 2,3,4, 1,3,1
22、, 7,2,1, 6,2,1, 7,2,1, 5,2,2, 6,2,2, 1,3,2, 7,2,2, 6,2,1, 5,2,1, 6,2,6, 6,2,2, 6,2,1, 1,3,1, 7,2,2, 5,2,2, 6,2,8, 6,2,4, 3,2,1, 5,2,1, 6,2,2, 3,3,2, 2,3,1, 1,3,1, 7,2,1, 1,3,1, 1,3,6, 1,3,1, 7,2,1, 6,2,2, 6,2,1, 6,2,1, 5,2,1, 5,2,1, 6,2,2, 3,2,6, 3,2,1, 5,2,1, 6,2,2, 3,3,2, 2,3,1, 1,3,1, 7,2,1, 1,3,
23、1, 1,3,6, 1,3,1, 7,2,1, 6,2,2, 6,2,2, 5,2,2, 7,2,2, 6,2,8;/星語心愿code unsigned char yxdcb=5,1,1, 1,2,1, 3,2,2, 5,2,1, 3,2,2, 2,2,1, 1,2,1, 1,2,1, 1,2,1, 1,2,1, 6,1,1, 5,1,1, 5,1,1, 1,2,1,3,2,2, 5,2,2, 5,2,1, 5,2,1, 6,2,1, 5,2,1, 5,2,1, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 2,2,1, 2,2,2, 6,2,1, 5,2,1, 3,2,2, 5,2
24、,2, 5,2,1, 5,2,1, 6,2,1, 5,2,1, 3,2,1, 2,2,1, 1,2,1, 2,2,1, 6,1,2, 5,1,1, 6,1,1, 1,2,2, 2,2,1, 3,2,1, 2,2,2, 3,2,1, 1,2,1, 1,2,4, 5,1,1, 1,2,1, 1,2,4, 3,2,1, 5,2,1, 1,3,2, 7,2,1, 1,3,1, 7,2,2, 6,2,1, 5,2,1, 6,2,1, 1,3,1, 3,2,1, 2,2,1, 1,2,2, 1,2,1, 1,2,1, 1,2,1, 1,3,2, 5,2,1, 6,2,1, 5,2,1, 2,2,1, 3,
25、2,1, 2,2,1, 1,2,1, 2,2,1, 2,2,4,13,2,1, 5,2,1, 1,3,2, 7,2,1, 1,3,1, 7,2,2, 6,2,1, 5,2,1, 6,2,1, 1,3,1, 3,2,1, 2,2,1, 1,2,2, 1,2,1, 1,2,1, 1,2,1, 1,3,2, 5,2,1, 6,2,1, 5,2,1, 2,2,1, 3,2,1, 2,2,1, 1,2,4, ; code unsigned char freqh= 0xf2,0xf3,0xf5,0xf5,0xf6,0xf7,0xf8, 0xf9,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,
26、 /1,2,3,4,5,6,7,8,i 0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe, 0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff,0;/ 音階頻率表高八位code unsigned char freql= 0x42,0xc1,0x17,0xb6,0xd0,0xd1,0xb6, 0x21,0xe1,0x8c,0xd8,0x68,0xe9,0x5b, /1,2,3,4,5,6,7,8,i 0x8f,0xee,0x44,0x6b,0xb4,0xf4,0x2d, 0x47,0x77,0xa2,0xb6,0xda,0xfa,0x16,0;/ 音階頻率表
27、低八位void delay(unsigned char t)unsigned char t1; unsigned long t2;for(t1=0;t1t;t1+)for(t2=0;t2800;t2+); tr0=0; void delay1(unsigned char t)unsigned char t1; unsigned long t2; for(t1=0;t1t;t1+) for(t2=0;t28000;t2+); tr0=0; void timer0() interrupt 1tr0=0;speaker=!speaker;th0=timer0h;tl0=timer0l; tr0=1;
28、 void song()th0=timer0h;tl0=timer0l;tr0=1; void main()ea=1;ex0=1;/開外部中斷0et0=1;tmod=0x11;/置ct0定時th1=(65536-50000)/256;tl1=(65536-50000)%256;it0=1;/外部中斷0觸發(fā)類型zlg7289_init(5); /7289初始化ll1:zlg7289_reset();/7289復位while(1) key2=zlg7289_key(); if(key2!=255) key3=key2;switch(key3)case 0:k=1+7*i-1;zlg7289_cmd
29、_dat(we,1);p1=0xfe;break;case 1:k=2+7*i-1;zlg7289_cmd_dat(we,2);p1=0xfd;break;case 2:k=3+7*i-1;zlg7289_cmd_dat(we,3);p1=0xfb;break;case 3:k=4+7*i-1;zlg7289_cmd_dat(we,4);p1=0xf7;break;case 4:k=5+7*i-1;zlg7289_cmd_dat(we,5);p1=0xef;break;case 5:k=6+7*i-1;zlg7289_cmd_dat(we,6);p1=0xdf;break;case 6:k=7
30、+7*i-1;zlg7289_cmd_dat(we,7);p1=0xbf;break;case 7:k=8+7*i-1;zlg7289_cmd_dat(we,8);p1=0x7f;break;case 11:k=28;break;case 12:i=0;we=0x80;zlg7289_reset();zlg7289_flash(0xef);zlg7289_cmd_dat(0xcc,0x0c);break;case:i=1;we=0x81;zlg7289_reset();zlg7289_flash(0xdf);zlg7289_cmd_dat(0xcd,0x0d);break;case 14:i=
31、2;we=0x82;zlg7289_reset();zlg7289_flash(0xbf);zlg7289_cmd_dat(0xce,0x0e);break;case15:i=3;we=0x83;zlg7289_reset();zlg7289_flash(0x7f);zlg7289_cmd_dat(0xcf,0x0f);break;default:break; if(key3=8) zz=0;zlg7289_reset();zlg7289_cmd_dat(0x80,5);zlg7289_cmd_dat(0x81,0);zlg7289_cmd_dat(0x82,0);zlg7289_segoff
32、(19);zlg7289_cmd_dat(0x83,8);zlg7289_segoff(26); while(time) key2=zlg7289_key(); if(key2!=255) key3=key2;while(key3=9) key2=zlg7289_key(); if(key2!=255) key3=key2;while(key3=10) goto ll1;if(key3=0) zz1=0;zz2=0;zz3=0;switch(sszymmhzz+1)case 0:we=0x84;zlg7289_hide(0x1f);break;case 1:we=0x85;zlg7289_hi
33、de(0x2f);break;case 2:we=0x86;zlg7289_hide(0x4f);break;case 3:we=0x87;zlg7289_hide(0x8f);break; switch(sszymmhzz)case 1:zlg7289_cmd_dat(we,1);p1=0xfe;break;case 2:zlg7289_cmd_dat(we,2);p1=0xfd;break;case 3:zlg7289_cmd_dat(we,3);p1=0xfb;break;case 4:zlg7289_cmd_dat(we,4);p1=0xf7;break;case 5:zlg7289_
34、cmd_dat(we,5);p1=0xef;break;case 6:zlg7289_cmd_dat(we,6);p1=0xdf;break;case 7:zlg7289_cmd_dat(we,7);p1=0xbf;break; k=sszymmhzz+7*sszymmhzz+1-1; time=sszymmhzz+2; zz=zz+3;else if(key3=1) zz=0;zz2=0;zz3=0;switch(sbzz1+1)case 0:we=0x84;zlg7289_hide(0x1f);break;case 1:we=0x85;zlg7289_hide(0x2f);break;ca
35、se 2:we=0x86;zlg7289_hide(0x4f);break;case 3:we=0x87;zlg7289_hide(0x8f);break; switch(sbzz1)case 1:zlg7289_cmd_dat(we,1);p1=0xfe;break;case 2:zlg7289_cmd_dat(we,2);p1=0xfd;break;case 3:zlg7289_cmd_dat(we,3);p1=0xfb;break;case 4:zlg7289_cmd_dat(we,4);p1=0xf7;break;case 5:zlg7289_cmd_dat(we,5);p1=0xef
36、;break;case 6:zlg7289_cmd_dat(we,6);p1=0xdf;break;case 7:zlg7289_cmd_dat(we,7);p1=0xbf;break; k=sbzz1+7*sbzz1+1-1; time=sbzz1+2; zz1=zz1+3;else if(key3=2) zz=0;zz1=0;zz3=0;switch(dfhzz2+1)case 0:we=0x84;zlg7289_hide(0x1f);break;case 1:we=0x85;zlg7289_hide(0x2f);break;case 2:we=0x86;zlg7289_hide(0x4f
37、);break;case 3:we=0x87;zlg7289_hide(0x8f);break; switch(dfhzz2)case 1:zlg7289_cmd_dat(we,1);p1=0xfe;break;case 2:zlg7289_cmd_dat(we,2);p1=0xfd;break;case 3:zlg7289_cmd_dat(we,3);p1=0xfb;break;case 4:zlg7289_cmd_dat(we,4);p1=0xf7;break;case 5:zlg7289_cmd_dat(we,5);p1=0xef;break;case 6:zlg7289_cmd_dat
38、(we,6);p1=0xdf;break;case 7:zlg7289_cmd_dat(we,7);p1=0xbf;break; k=dfhzz2+7*dfhzz2+1-1; time=dfhzz2+2; zz2=zz2+3;else if(key3=3) zz=0;zz1=0;zz2=0;switch(xyxyzz3+1)case 0:we=0x84;zlg7289_hide(0x1f);break;case 1:we=0x85;zlg7289_hide(0x2f);break;case 2:we=0x86;zlg7289_hide(0x4f);break;case 3:we=0x87;zl
39、g7289_hide(0x8f);break; switch(xyxyzz3)case 1:zlg7289_cmd_dat(we,1);p1=0xfe;break;case 2:zlg7289_cmd_dat(we,2);p1=0xfd;break;case 3:zlg7289_cmd_dat(we,3);p1=0xfb;break;case 4:zlg7289_cmd_dat(we,4);p1=0xf7;break;case 5:zlg7289_cmd_dat(we,5);p1=0xef;break;case 6:zlg7289_cmd_dat(we,6);p1=0xdf;break;cas
40、e 7:zlg7289_cmd_dat(we,7);p1=0xbf;break; k=xyxyzz3+7*xyxyzz3+1-1; time=xyxyzz3+2; zz3=zz3+3; else if(key3=4) zz=0;zz1=0;zz2=0;zz3=0;switch(yxdcbzz4+1)case 0:we=0x84;zlg7289_hide(0x1f);break;case 1:we=0x85;zlg7289_hide(0x2f);break;case 2:we=0x86;zlg7289_hide(0x4f);break;case 3:we=0x87;zlg7289_hide(0x
41、8f);break; switch(yxdcbzz4)case 1:zlg7289_cmd_dat(we,1);p1=0xfe;break;case 2:zlg7289_cmd_dat(we,2);p1=0xfd;break;case 3:zlg7289_cmd_dat(we,3);p1=0xfb;break;case 4:zlg7289_cmd_dat(we,4);p1=0xf7;break;case 5:zlg7289_cmd_dat(we,5);p1=0xef;break;case 6:zlg7289_cmd_dat(we,6);p1=0xdf;break;case 7:zlg7289_
42、cmd_dat(we,7);p1=0xbf;break; k=yxdcbzz4+7*yxdcbzz4+1-1; time=yxdcbzz4+2; zz4=zz4+3; timer0h=freqhk; timer0l=freqlk; song(); delay1(time); if(zz=99) zz=0; if(zz1=174) zz1=0; if(zz2=120) zz2=0; if(zz3=222) zz3=0; if(zz4=70) zz4=0; timer0h=freqhk; timer0l=freqlk; song(); delay(1); key3=11;void inter0()
43、 interrupt 0;2.zlg7289頭文件封裝/*zlg7289.h數(shù)碼管顯示與鍵盤管理芯片zlg7289 的標準80c51 驅(qū)動程序頭文件copyright (c) 2005,廣州周立功單片機發(fā)展有限公司all rights reserved.本程序僅供學習參考,不提供任何可靠性方面的擔保;請勿用于商業(yè)目的。*/#ifndef _zlg7289_h_#define _zlg7289_h_#include /定義i/o 接口sbit zlg7289_pincs = p05; /片選信號,低電平有效sbit zlg7289_pinclk = p06; /時鐘信號,上升沿有效sbit zl
44、g7289_pindio = p07; /數(shù)據(jù)信號,雙向sbit zlg7289_pinint = p32; /鍵盤中斷請求信號,低電平(負邊沿)有效/執(zhí)行zlg7289 純指令extern void zlg7289_cmd(char cmd);/執(zhí)行zlg7289 帶數(shù)據(jù)指令extern void zlg7289_cmd_dat(char cmd, char dat);/以下是zlg7289 的用戶指令集/復位(清除)指令#define zlg7289_reset() zlg7289_cmd(0xa4)/測試指令#define zlg7289_test() zlg7289_cmd(0xbf)
45、/左移指令#define zlg7289_shl() zlg7289_cmd(0xa0)/右移指令#define zlg7289_shr() zlg7289_cmd(0xa1)/循環(huán)左移指令#define zlg7289_rol() zlg7289_cmd(0xa2)/循環(huán)右移指令#define zlg7289_ror() zlg7289_cmd(0xa3)/下載數(shù)據(jù)extern void zlg7289_download(unsigned char mod, char x, bit dp, char dat);/閃爍控制/ x 的8 個位分別對應數(shù)碼管的8 個位,0閃爍,1不閃爍#define zlg7289_flash(x) zlg7289_cmd_dat(0x88,(x)/消隱控制/ x 的8 個位分別對應數(shù)碼管的8 個位,0消隱,1顯示#define zlg7289_hide(x) zlg7289_cmd_dat(0x98,(x)/段點亮指令/seg=063,8 只數(shù)碼管被看成64 只獨立的led/每只數(shù)碼管中各段的點亮順序按照“g,f,e,d,c,b,a,dp”進行#define zlg7289_segon(seg) zlg7289_cmd_dat(0xe0,(seg)/段關(guān)閉指令/seg=063,8 只數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 焊接課程設計計算
- 美術(shù)單元課程設計幼兒園
- 有關(guān)于幼兒課程設計
- 中考英語作文范文共50篇
- 《經(jīng)濟危機與》課件
- 軟件開發(fā)管理制度
- 智能創(chuàng)業(yè)課程設計
- 金融行業(yè)保安工作的總結(jié)與優(yōu)化計劃
- 流利閱讀課程設計
- 水上樂園前臺接待總結(jié)
- SAP WM模塊前臺操作詳解(S4版本)
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設計規(guī)范
- 《中華民族共同體概論》考試復習題庫(含答案)
- 【綠色評價】發(fā)展綠色指標評價測試五年級《英語》第一學期上冊期末試卷及答案解析
- 30課時羽毛球教案
- 客服部相關(guān)報表解
- 全踝關(guān)節(jié)置換術(shù)ppt課件
- 學術(shù)英語寫作范文17篇
- 任發(fā)改委副主任掛職鍛煉工作總結(jié)范文
- 中華任姓字輩源流
- 2021年人事部年度年終工作總結(jié)及明年工作計劃
評論
0/150
提交評論