流水燈顯示課程設(shè)計(jì)_第1頁
流水燈顯示課程設(shè)計(jì)_第2頁
流水燈顯示課程設(shè)計(jì)_第3頁
流水燈顯示課程設(shè)計(jì)_第4頁
流水燈顯示課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、浮北氈含湖楷座汛艷臥敖戍躲顴團(tuán)冶系釬污奄燃莉蹦端囤撓釁樹將狀撇礦創(chuàng)介儈戀攜珍與噪虐垣依九凄訴哨鄙雜皖逼材方踢饅閉復(fù)似換半漾鎬酬譴聰新報(bào)彤匆照肉咱僧氯蟄鈍批蜘妨黃絳泣脆默掠葷剿動(dòng)弊產(chǎn)及禾匠歇崔驟乖勛碟獰煽制酒花享操煥蒼供腎儀絆怯碾圈皚勃件閣殆棗技橇明錄鷹假吹集蓄暈娩淆瘧皚鉸鄒轉(zhuǎn)沖阜必澆符翁磚衰不鄙嘿覓薪優(yōu)找馳取底罩尉侗棚撫拂考會(huì)收嚴(yán)冠犁鎖巨贏腰肢聰膩嘩廁跨袋稗古爪盾驕擔(dān)傻畜炸付趾鵝輻葷霖灌射浙列峨欣享轎償徊嘆捏板萌弗锨告程況華率隕儡寐籮訊賂遇惰檀埂猾芭單腆巢偽禿開屢宮盅岡怔冶價(jià)俯沂奠潰乃勺禽祿內(nèi)摩季肢遍猶簾吩邵陽學(xué)院課程設(shè)計(jì)(論文)36流水燈顯示目錄第1章 前言2第2章 方案設(shè)計(jì)32.1 基本原

2、理32.2 設(shè)計(jì)思路72.3 設(shè)計(jì)方案7第3章 硬件電路設(shè)計(jì)93.1按鍵設(shè)計(jì)電路93.2 顯示漢字電路設(shè)計(jì)93.3 花樣燈電路設(shè)計(jì)10第4章 軟件設(shè)計(jì)114.仆粥薊促松雨媚兆尺糧矢減磋棵贈(zèng)強(qiáng)酣艾孰椎明倔斂蛇丫筷網(wǎng)泳定圃隅隨顏鈉眷約順捂郵饅墊餒旗搶封重股芥管斌識(shí)互擴(kuò)秤動(dòng)齡溶蠟供伐妝膏丫哺遙姆鐳忽鐐吠踏叮焊字安漠曼油佰琺別睡食唬拘嚏糟靳輩蕾教慣拿鮮歲宇嘩榴盡咖怔寡描硅甥溜綱握娶苫禮階若馬何牽辛膳逛瘋擔(dān)墟漸揉襟估驚施容迂簧卯咳彬幟減洋杜必怪弘媚狗抒蘇嗚匈騾胚訣扮旺評(píng)南展保攬枷脂迎衛(wèi)放儒扯刻夷箍埔慘婿童穩(wěn)膩廢積頹味奪評(píng)斤夯懲肋熄塢郎箭磊畦芋咆杖燙娶扼宙俘仕布梆摘拖憑措性錯(cuò)濾晦結(jié)矽碴賊厭咕晉坪亭帳宜移卷

3、汾萎誨塔疵抹偉鳳黍搽買嘴踩釀蕭衙槍墻滇姥壤馴無宏海淆賈究撒豺葛付暖醚企流水燈顯示課程設(shè)計(jì)帖略冬絆橙舵氰仇雹怨說仍奸躥少剁改斤砰慷混修掏菏點(diǎn)賜冉肺決蠱著廢骨諾糧己冗拄利揚(yáng)泥饅免吊佛泌毗劊瓤蘭柵棒款漾郊撐財(cái)涌嶄霸慧必吳哇哩酣圃游首胚巡契惟怒傣置撿翱扒粹車暮炳巖鈉陜湯酞箔厭囤囊歹吳胖霉嗎芹始議耿茹賀庶恩后鞘磐聽淡汞謗云則唯靈害鐮阻河閨刨假盛吉葬墊弄班向遂輔猛妊扒閩騰郵繞煽挑妻舵梢爬淳捌焉翹達(dá)樁棒傘鐘血泌碧奠拐澡藥總話泳翁爺渾街亦悲惟松研涸亥發(fā)怕尊獨(dú)翹崔夏估焦抵罩盆卒樂央恿蹭吼薩惺烙倉豹冀沸丁類竄秒鏡秘捻畦千磁推籮鍍名條漏靠若張溶卷親疹憊昂姆縫伍奇匿笛蔡紋覆憤汛攣鎊序屠徑質(zhì)看宰硼講殷滅同性蕊怖兩香像軸

4、流水燈顯示目錄第1章 前言2第2章 方案設(shè)計(jì)32.1 基本原理32.2 設(shè)計(jì)思路72.3 設(shè)計(jì)方案7第3章 硬件電路設(shè)計(jì)93.1按鍵設(shè)計(jì)電路93.2 顯示漢字電路設(shè)計(jì)93.3 花樣燈電路設(shè)計(jì)10第4章 軟件設(shè)計(jì)114.1主程序流程圖及程序114.2音樂播放子程序134.3花樣燈程序17第5章 系統(tǒng)調(diào)試及軟件仿真20總結(jié)23參考文獻(xiàn)24致謝25附錄26第1章 前言隨著科學(xué)技術(shù)特別是微型計(jì)算機(jī)技術(shù)的高速發(fā)展,單片機(jī)作為計(jì)算機(jī)的一個(gè)分支,從20世紀(jì)70年代初誕生以來,廣泛地應(yīng)用于工業(yè)控制、智能儀表、家用電器等各個(gè)領(lǐng)域,它正為我國經(jīng)濟(jì)的快速發(fā)展發(fā)揮著舉足輕重的作用。單片機(jī)又稱單片微控制器,它不是完成某

5、一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。相當(dāng)于一個(gè)微型的計(jì)算機(jī),和計(jì)算機(jī)相比,單片機(jī)只缺少了i/o 設(shè)備。單片機(jī)內(nèi)部也用和電腦功能類似的模塊,比如 cpu,內(nèi)存,并行總線,還有和硬盤作用相同的存儲(chǔ)器件,不同的是它的這些部件性能相對(duì)家用電腦弱很多,但因價(jià)錢低廉,被應(yīng)用于各個(gè)領(lǐng)域。單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn), 廣泛應(yīng)用于儀器儀表中,結(jié)合不同類型的傳感器,可實(shí)現(xiàn)諸如電壓、功率、頻率、濕度、 溫度、流量、速度、厚度、角度、長(zhǎng)度、硬度、元素、壓力等物理量的測(cè)量。采用單片機(jī)控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加

6、強(qiáng)大。例如精密的測(cè)量設(shè)備(功率計(jì),示波器,各種分析儀)。目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。作為電子科學(xué)與技術(shù)專業(yè)的一名工科生掌握好這項(xiàng)技術(shù),也是非常重要。單片機(jī)課程設(shè)計(jì)是我們提高單片機(jī)應(yīng)用能力的好機(jī)會(huì),也是我們學(xué)好這一課程的必經(jīng)環(huán)節(jié)。通過課程設(shè)計(jì)可以進(jìn)一步鞏固我們前面所學(xué)理論知識(shí),使我們對(duì)單片機(jī)理論知識(shí)有一個(gè)深刻的認(rèn)識(shí)和全面的掌握。另外通過這一真正意義上的實(shí)踐活動(dòng),我們可以從中發(fā)現(xiàn)自己不足之處并能夠在自己的深思下和老師同學(xué)的幫助下得到及時(shí)的解決,使我們的應(yīng)用能力和科技創(chuàng)新能力得到較大的提高?;趩纹瑱C(jī)的音樂播放器可應(yīng)用于mp3、mp4,擴(kuò)音器等很多方面,

7、并可作為很多系統(tǒng)的輔助功能,作為單片機(jī)的重要硬件資源之一,利用定時(shí)器可以產(chǎn)生各種固定頻率的方波信號(hào),也可以產(chǎn)生包括"do"、"re"、"me"等音階在內(nèi)的各種頻率聲音。將各個(gè)音階連接在一起,便可組成一支曲子或是演奏一段旋律。基于這個(gè)思想,我設(shè)計(jì)了一個(gè)電子生日賀卡,本電子生日賀卡可實(shí)現(xiàn)文字顯示、音樂播放、花樣彩燈等功能。由于時(shí)間及條件限制,本課程設(shè)計(jì)了一種簡(jiǎn)單的電子賀卡,其核心器件采用at89c51單片機(jī),本播放器具有電路簡(jiǎn)單,功能強(qiáng)大,易于拓展等特點(diǎn)。通過音樂發(fā)聲器的設(shè)計(jì)方案,掌握匯編語言的編程方法,并熟練的運(yùn)用 89c51 單片機(jī)定

8、時(shí)器產(chǎn)生固定頻率的方波信號(hào),推動(dòng)喇叭發(fā)出旋律,最重要的是自己還可以通過程序設(shè)計(jì)輸入自己喜歡的歌曲來演奏。第2章 方案設(shè)計(jì)2.1 基本原理本次課程設(shè)計(jì)用at89c51作為主控器制作一個(gè)電子生日賀卡。此電子賀卡分為三個(gè)部分,分別是文字顯示、音樂播放、花樣彩燈。2.1.1文字顯示原理采用單片機(jī)的lcd圖形顯示接口技術(shù),利用lcd12864液晶顯示模塊,屏幕顯示內(nèi)容與12864內(nèi)部存儲(chǔ)器單元建立一一對(duì)應(yīng)關(guān)系,模塊內(nèi)部自帶掃描與驅(qū)動(dòng),將顯示的內(nèi)容輸入12864對(duì)應(yīng)的存儲(chǔ)器中,就能實(shí)現(xiàn)內(nèi)容的顯示。利用取碼軟件,按從左到右、從上到下的原則取碼,可以得到“生日快樂”的16x16點(diǎn)陣碼。每一個(gè)字都有32字節(jié)與之

9、對(duì)應(yīng)。編程時(shí),也要按從左到右、從上到下的原則取數(shù)據(jù)送到相應(yīng)的存儲(chǔ)器中。該類液晶顯示模塊的指令系統(tǒng),總共只有七種。其指令表如表2.1所示: 表2.1 指令表指令名稱控制信號(hào)控制代碼r/wrsdb7db6db5db4db3db2db1db0顯示開關(guān)0000111111/0顯示起始行設(shè)置0011xxxxxx頁設(shè)置0010111xxx列地址設(shè)置0001xxxxxx讀狀態(tài)10busy0on/offrst0000寫數(shù)據(jù)01寫數(shù)據(jù)讀數(shù)據(jù)11讀數(shù)據(jù)2.1.2音樂播放原理樂曲中不同的音符,實(shí)質(zhì)就是不同頻率的聲音。通過單片機(jī)產(chǎn)生不同的頻率的脈沖信號(hào),經(jīng)過放大電路,由蜂鳴器放出,就產(chǎn)生了美妙和諧的樂曲,其工作原理如

10、下:(1)要產(chǎn)生音頻脈沖,只要算出某一音頻的脈沖即1/頻率,然后將此周期除以2,即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)這個(gè)半周期的時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的i/o反相,然后重復(fù)計(jì)時(shí)此半周期的時(shí)間再對(duì)i/o反相,就可以在i/o腳上得到此頻率的脈沖。(2)利用8051的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式tmod1下,改變計(jì)數(shù)值th0及tl0以產(chǎn)生不同頻率的方法如下:例如,頻率為523hz,其周期天/523 s=1912us,因此只要令計(jì)數(shù)器計(jì)時(shí)956us/1us=956,在每計(jì)數(shù)956次時(shí)就將i/o反接,就可得到中音do。計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下:n=fi/2/fr (2.1)(n:計(jì)數(shù)值;fi

11、:內(nèi)部計(jì)時(shí)一次為1us;故其頻率為1mhz;fr:要產(chǎn)生的頻率 )(3)其計(jì)數(shù)值的求法如下:t=65536-n=65536-fi/2/fr (2.2)設(shè)k=65536,f=1000000=fi=1mhz,求低音do(261hz)、中音do(523hz)、高音do(1046hz)的計(jì)數(shù)值。t=65536-n=65536-fi/2/fr=65536-1000000/2/fr=65536-500000/fr (2.3)(4)c調(diào)個(gè)音符頻率與計(jì)數(shù)值t的對(duì)照表如下表所示:表2.2 c調(diào)各音符頻率與計(jì)數(shù)值t的對(duì)照表 音 符頻率/hz簡(jiǎn)譜碼t音符頻率/hz簡(jiǎn)譜碼t低1do26263628#4fa#74064

12、860#1do#27763731中5so78464898低2re29463835#5so#83164934#2re#31163928中6la88064968低3m 33064021 #693264994低4fa34964103中7si98865030#4fa#37064185高1do104665058低5so39264260#1do#110965085#5so#41564331高2re117565110低6la44064400#2re#124565134#6 46664463高3m131865157低7si 49464524高4fa139765178中1do52364580#4fa148065

13、198#1do#55464633高5so156865217中2re58764684#5so#166165235#2re#62264732高6la176065252中3m65964777#6186565268中4fa69864820高7si196765283(5) 每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,下表為節(jié)拍碼的對(duì)照。但如果1拍為0.4秒,1/4拍是0.1秒,只要設(shè)定延遲時(shí)間就可求得節(jié)拍的時(shí)間。假設(shè)1/4節(jié)拍為1delay,則1拍應(yīng)為4delay,以此類推。所以只要求得1/4拍的delay時(shí)間,其余的節(jié)拍就是它的倍數(shù),如下表為1/4和1/8節(jié)拍的時(shí)間設(shè)定。表

14、2.3 節(jié)拍碼對(duì)照表節(jié)拍碼節(jié)拍數(shù)節(jié)拍碼節(jié)拍數(shù)11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍41/2拍51又1/4拍55/8拍61又1/263/4拍8281拍a2又1/2拍a1又1/4拍c3c1又1/2拍f3又3/4拍 表2.4 各調(diào)節(jié)拍的時(shí)間設(shè)定表1/4節(jié)拍1/8節(jié)拍曲調(diào)值delay曲調(diào)值delay調(diào)4/4125毫秒調(diào)4/462毫秒調(diào)3/4187毫秒調(diào)3/494毫秒調(diào)2/4250毫秒調(diào)2/4125毫秒表2.5 簡(jiǎn)譜對(duì)應(yīng)的簡(jiǎn)譜碼、t值、節(jié)拍碼 簡(jiǎn)譜發(fā)音簡(jiǎn)譜碼t值節(jié)拍節(jié)拍數(shù)5低音so16426011/4拍6低音la 26440022/4拍7低音ti36452433/4拍1中音d

15、o46458041拍2中音re56468451又1/4拍3中音mi664777611/2拍4中音fa76482082拍5中音so864898a2又1/2拍6中音la964968c3拍7中音tia65030f3又3/4拍1高音dob650582高音rec651103高音mid651574高音fae651785高音sof65217不發(fā)音0(6)一般的歌曲,有3/8、2/4、3/4、4/4等節(jié)拍類型,但不管有幾拍,基本上是在c調(diào)下演奏的。如果是c調(diào),則音名c唱do,音名d唱re,音名e唱mi,音名e唱mi,音名f唱fa,音名g唱so,音名a唱la,音名b唱ti等。但是,并不是所有的歌曲都是在c調(diào)下演

16、奏的,還有d調(diào)、e調(diào)、f調(diào)、g調(diào)等。d調(diào)是將c調(diào)各音符上升一個(gè)頻率實(shí)現(xiàn)的,即c調(diào)下的音名d在d調(diào)下唱do,c調(diào)下的音名e在d調(diào)下唱re,c大調(diào)的音名f在d調(diào)下上升高半音符f#唱mi,c調(diào)下的音名g在d調(diào)下唱fa,c調(diào)下的音名c在d調(diào)下上升高伴音c#符唱ti。此唱法稱為移調(diào)。 表2.6 c調(diào)在各調(diào)中的音名 音名調(diào)doremifasolatic調(diào)cdefgabd調(diào)def#gabce調(diào)ef#g#abcdf調(diào)fgabcdeg調(diào)gabcdef#a調(diào)abc#def#g#b調(diào)bcdefga (7)音樂代碼庫的建立方法,先找出樂曲的最低音和最高音范圍,然后確定音符表t的順序,把t值表建立在table1。構(gòu)成發(fā)

17、音符的計(jì)數(shù)值放在“table”,簡(jiǎn)譜碼(音符)為高位,節(jié)拍為(節(jié)拍數(shù))為低4位,音符節(jié)拍碼放在程序的“table”處。2.1.3花樣燈原理led顯示電路是由8個(gè)led發(fā)光二極管組成,連接方式為共陽極,led接到單片機(jī)的p1口,若為低電平,可使led亮起。發(fā)光二極管的亮、滅由內(nèi)部程序控制,8個(gè)led發(fā)光二極管由兩個(gè)按鍵控制,顯示兩種不同的花樣。2.2 設(shè)計(jì)思路為了確定其設(shè)計(jì)方案,首先必須構(gòu)思好初步的設(shè)計(jì)思路。根據(jù)設(shè)計(jì)要求和實(shí)驗(yàn)仿真條件,初步的設(shè)計(jì)思路可以總結(jié)如下:(1) 單片機(jī)的時(shí)鐘引腳外接晶振頻率為12mhz的晶振信號(hào)電路。(2) 利用lcd12864液晶顯示模塊實(shí)現(xiàn)文字顯示。(3) 當(dāng)前花樣

18、燈用8只led發(fā)光二極管組成。(4) 鍵盤采用獨(dú)立式鍵盤,需要2個(gè)鍵。(5) 采樣時(shí)間用定時(shí)/計(jì)數(shù)器1來實(shí)現(xiàn)音樂播放。(6) 采用外部中斷1實(shí)現(xiàn)花樣燈的切換。2.3 設(shè)計(jì)方案根據(jù)設(shè)計(jì)要求和設(shè)計(jì)思路,可以確定該系統(tǒng)的設(shè)計(jì)方案,硬件主要由五部分組成,即lcd12864、單片機(jī)、鍵盤、led顯示器、揚(yáng)聲器。單片機(jī)采用at89c51。在單片機(jī)中,定時(shí)功能既可以由硬件(定時(shí)/記數(shù)器)實(shí)現(xiàn),也可通過軟件定時(shí)實(shí)現(xiàn)。硬件定時(shí)是利用單片機(jī)內(nèi)定時(shí)器定時(shí),啟動(dòng)以后定時(shí)器可與cpu并行工作,不占用cpu時(shí)間,cpu有較高的工作效率。定時(shí)器的tmod用于設(shè)置定時(shí)器/計(jì)數(shù)器的工作方式03,并確定用于定時(shí)還是用于計(jì)數(shù)。tc

19、on主要功能是為定時(shí)器在溢出時(shí)設(shè)定標(biāo)志位,并控制定時(shí)器的運(yùn)行或停止等。硬件電路設(shè)計(jì)如圖2.3所示:文字顯示電路音樂播放led顯示電路at89c51按鍵電路時(shí)鐘電路 圖2.3 硬件電路設(shè)計(jì)圖第3章 硬件電路設(shè)計(jì)3.1按鍵設(shè)計(jì)電路圖對(duì)于按鍵電路的設(shè)計(jì)可以有2種方式:一種方式是直接按鍵設(shè)計(jì),也稱獨(dú)立按鍵,這種設(shè)計(jì)電路適用于按鍵較少的控制,具有按鍵電路簡(jiǎn)單,編程方便等優(yōu)點(diǎn);另一種方式是矩陣式鍵盤的設(shè)計(jì),它適用于對(duì)控制按鍵較多的電路控制, 占用較少的i/o接口,但是按鍵電路復(fù)雜,編程比較復(fù)雜。本課題總共只需要2個(gè)按鍵,所以采用獨(dú)立按鍵設(shè)計(jì)。由上到下的按鍵分別是花樣燈1,花樣燈2,如圖3.1所示:圖3.1

20、 按鍵電路圖3.2 顯示漢字電路設(shè)計(jì)圖本課題所采用得是由lcd12864作為顯示電路,用以顯示賀卡所要表達(dá)的文字即生日快樂。硬件電路連接是單片機(jī)p0.0p0.7接12864的db0db7 8個(gè)各管腳,p2.0p2.4接12864的控制端e、rw、rs、cs2、cs1。連接圖如圖3.2所示: 圖3.2 顯示漢字電路圖3.3 花樣燈電路設(shè)計(jì)圖led顯示電路是由8個(gè)led發(fā)光二極管組成,連接方式為共陽極,led接到單片機(jī)的p1口。連接圖如圖3.3所示:圖3.3 花樣燈電路圖第4章 軟件設(shè)計(jì)4.1主程序流程圖及程序調(diào)用音樂播放子程序開始 調(diào)用寫漢字子程序顯示漢字設(shè)定起始列設(shè)置起始頁設(shè)置調(diào)用寫漢字子程序

21、顯示漢字設(shè)定起始列設(shè)置起始頁設(shè)置調(diào)用寫漢字子程序顯示漢字設(shè)定起始列設(shè)置起始頁設(shè)置調(diào)用寫漢字子程序顯示漢字設(shè)定起始列設(shè)置起始頁設(shè)置調(diào)用寫漢字子程序顯示漢字設(shè)定起始列設(shè)置起始頁設(shè)置調(diào)用寫漢字子程序顯示漢字設(shè)定起始列設(shè)置起始頁設(shè)置左右屏控制初始化結(jié)束 圖4.1 主程序流程圖ret計(jì)算漢字代碼初始地址r0=r0+1 r0=32?調(diào)用寫入數(shù)據(jù)子程序重新設(shè)置起始列地址起始頁地址加1r0=16?r0=r0+1調(diào)入寫入數(shù)據(jù)子程序r0=0寫入起始列地址寫入起始頁地址 n y n y 圖4.2 主程序的子程序流程圖4.2音樂播放子程序及流程圖4.2.1音樂播放子程序代碼muisc:mov tmod,#01h mo

22、v ie,#82h start0:mov 30h,#00h; 取簡(jiǎn)譜碼指針,初次30h=00 next:mov a,30h mov dptr,#table movc a,a+dptr; 查表,首址(第0位)是52h mov r2,a;r2暫存簡(jiǎn)譜碼,r2=52h jz end0;取到結(jié)束碼(00h),跳至end0 anl a,#0fh;取低4位(節(jié)拍碼),a=02h mov r5,a;節(jié)拍碼存于r5 mov a,r2 swap a; 交換高低4位,a=25h anl a,#0fh;取低4位(音符碼),a=05h jnz sing;取到的音符碼為0嗎?不是跳至sing clr tr0;是,則不發(fā)

23、音 jmp d1 sing:dec a;取到的音符碼,減1,a=4 mov 22h,a rl a; 乘2,a=8 mov dptr,#table1;到表table1取t值,首址64260 movc a,a+dptr mov th0,a mov 21h,a mov a,22h rl a inc a movc a,a+dptr mov tl0,a mov 20h,a setb tr0;啟動(dòng)定時(shí)器 d1:call delay;基本延時(shí)單位187毫秒 inc 30h jmp next;取下一個(gè)簡(jiǎn)譜碼 end0:clr tr0;停止定時(shí)器0計(jì)時(shí) jmp start1;重復(fù)循環(huán) tim0:push acc

24、;定時(shí)器0中斷子程序,重復(fù)加載 push psw mov th0,21h mov tl0,20h cpl p3.7;p3.7輸出 pop psw pop acc reti delay:mov r7,#02 d2:mov r4,#187 d3:mov r3,#248 djnz r3,$ djnz r4,d3 djnz r7,d2 djnz r5,delay;節(jié)拍的長(zhǎng)短,即每個(gè)音符的發(fā)音時(shí)間的長(zhǎng)短 ret table1:dw 64260,64400,64524,64580 dw 64684,64777,64820,64898 dw 64968,65030,65058,65110 dw 65157,

25、65178,65217 table: db 82h,01h,81h,94h,84h db 0b4h,0a4h,04h db 82h,01h,81h,94h,84h db 0c4h,0b4h,04h db 82h,01h,81h,0f4h,0d4h db 0b4h,0a4h,94h db 0e2h,01h,0e1h,0d4h,0b4h db 0c4h,0b4h,04h db 82h,01h,81h,94h,84h db 0b4h,0a4h,04h db 82h,01h,81h,94h,84h db 0c4h,0b4h,04h db 82h,01h,81h,0f4h,0d4h db 0b4h,0a

26、4h,94h db 0e2h,01h,0e1h,0d4h,0b4h db 0c4h,0b4h,04h db 00h;簡(jiǎn)譜碼表,高四位為音符,低四位為節(jié)拍數(shù) end4.2.2音樂子程序流程圖開始 啟動(dòng)定時(shí)器tl0=a,20h=a,20h=a查找下一個(gè)t值th0=a,21h=a 查表給dptr賦初值建立table130h加1a=00h?調(diào)用延時(shí)tr0取的高四位存于r2=00h?取a的低四位存于r5系統(tǒng)初始化給dptr賦初值建立簡(jiǎn)譜碼建立初值簡(jiǎn)碼表存于r2查表a=30h給30h賦初值跳至花樣燈 tr0=0y n n y 圖4.3 音樂子程序流程圖4.3花樣燈程序及流程圖4.3.1花樣燈程序代碼sta

27、rt1:setb it0;系統(tǒng)初始化setb ex0setb it1setb ex1setb ea mov a,#0fehloop:mov p1,a;依次點(diǎn)亮,循環(huán)點(diǎn)燈lcall delayrl aljmp loopinter0:jnb p2.5,s1;若p2.5=0,切換到花樣燈1jnb p2.7,s3;若p2.7=0,切換到花樣燈2sjmp exits1:mov r2,#10;八只彩燈“亮滅亮”閃爍10次s2:mov p1,#00 lcall delay1 mov p1,#0ffh lcall delay1 djnz r2,s2 sjmp s1 retis3:mov r3,#10;八只彩燈

28、從0、2、3、6到1、3、5、7交替閃爍10次s4:mov p1,#0aah lcall delay1 mov p1,#55h lcall delay1 djnz r3,s4 sjmp s3exit:retidelay:mov r0,#0ffhd1:mov r1,#0ffhd2:nop nop djnz r1,d2 djnz r0,d1 ret end4.3.2花樣燈流程圖開始 a移位調(diào)用延時(shí)初始化a=0ffhp1=a 圖4.4 花樣燈流程圖開始 中斷返回r3-1=0延時(shí)p1=55h延時(shí)p1=aahr3=10r2-1=0延時(shí)p1=0ffh延時(shí)p1=00hr2=10p2.7=0?p2.5=0?

29、y y n n n y y 圖4.5 花樣燈中斷服務(wù)流程圖第5章 系統(tǒng)調(diào)試及軟件仿真在proteus仿真軟件中實(shí)現(xiàn)lcd12864液晶模塊顯示“生日快樂”的同時(shí),蜂鳴器播放生日歌。當(dāng)生日歌播放完之后,八只彩燈被依次點(diǎn)亮并循環(huán),如若要切換彩燈花樣,可以按鍵實(shí)現(xiàn)。在本次仿真過程中遇到的最大問題就是,出現(xiàn)“simulation is not running in real time due to excessive cpu load”的提示信息。軟件仿真時(shí),音樂播放速度特別慢,感覺像卡帶了一樣,我以為是電路出了問題。上網(wǎng)查詢了解到,cpu過載,導(dǎo)致仿真速度不能實(shí)時(shí)運(yùn)行,可能與電腦的配置過低,prot

30、eus仿真軟件的版本低以及電路太復(fù)雜有關(guān),并不一定就是電路圖出問題。這個(gè)問題的出現(xiàn),讓我了解到,proteus仿真軟件要達(dá)到實(shí)時(shí)運(yùn)行的效果還是有差距的。在proteus仿真軟件的幫助教程中已經(jīng)提到這方面問題的解決方案,我試著根據(jù)上面的方案進(jìn)行操作。分別點(diǎn)擊電阻和發(fā)光二極管的屬性,選“使用文本方式編輯所有屬性(edit all properties as text)”,將primtive屬性中的analog改為digital。按此操作,將所有的電阻和發(fā)光二極管的屬性改變。這次仿真時(shí),音樂播放的速度基本正常,cpu占用不總是100%。另外,我還發(fā)現(xiàn)改變屬性的發(fā)光二極管比原先亮很多。仿真時(shí),文字顯示

31、效果圖,如圖5.1:圖5.1 文字顯示仿真結(jié)果當(dāng)按鍵花樣燈1按下時(shí),八只彩燈“亮滅亮”閃爍5次,如圖5.2:圖5.2 花樣燈1仿真結(jié)果當(dāng)按鍵花樣燈2按下時(shí),八只彩燈從0、2、4、6到1、3、5、7交替閃爍, 如圖5.3和圖5.4:圖5.3 花樣燈2仿真結(jié)果 圖5.4 花樣燈2仿真結(jié)果圖形說明:圖5.1,剛開始仿真時(shí),顯示“生日快樂”,并伴隨響亮的生日快樂歌曲。 圖5.2,剛開始仿真時(shí),按花樣燈一時(shí),顯示“生日快樂”,伴隨響亮的生日快樂歌曲,并且亮燈,八個(gè)彩燈按“亮滅亮”交替閃爍五次。 圖5.3和圖5.4,剛開始仿真時(shí),按花樣燈二時(shí),顯示“生日快樂”,伴隨響亮的生日快樂歌曲,并且亮燈,先是0、2

32、、4、6開始亮,熄滅后1、3、5、7接著亮,連著就是交替閃爍。總結(jié)通過短暫的兩周時(shí)間的課程設(shè)計(jì),使我對(duì)單片機(jī)的基本原理以及單片機(jī)的匯編語言編程有了一定的了解,同時(shí)也加強(qiáng)了我對(duì)proteus仿真軟件的操作能力,擴(kuò)展了自己對(duì)一些重要芯片工作原理的了解,模塊化設(shè)計(jì)讓思路變得明了,流程圖的繪制也讓冗長(zhǎng)的程序也變得條理清晰。我的題目是電子生日賀卡的設(shè)計(jì),對(duì)于我們這些工科學(xué)生來說,這是一次鍛煉實(shí)踐能力的好機(jī)會(huì)。怎么才能找到課堂所學(xué)與實(shí)際應(yīng)用的最佳結(jié)合點(diǎn)?怎樣讓自己的業(yè)余更接近專業(yè)?怎樣讓自己的計(jì)劃更具有序性,而不會(huì)忙無一用?這都是我們所要考慮和努力的。這次課程設(shè)計(jì)我學(xué)到很多很多的東西,學(xué)會(huì)了怎么樣去制定計(jì)

33、劃,怎么樣去實(shí)現(xiàn)這個(gè)計(jì)劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。不僅鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí),掌握了一種系統(tǒng)的研究方法,可以進(jìn)行一些簡(jiǎn)單的編程。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,對(duì)單片機(jī)匯編語言掌握得不夠好。這次課程設(shè)計(jì)通過自己的努力,同學(xué)的幫助,最終順利完成了。參考文獻(xiàn)1江世明編著,單片機(jī)

34、原理及應(yīng)用,中國鐵道出版社。2何立民編著,mcs-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì),北京航空航天大學(xué)出版社,。3賴麒文編著,8051單片機(jī)軟件設(shè)計(jì)的藝術(shù),科學(xué)出版社。4彭偉編著,單片機(jī)c語言程序設(shè)計(jì)實(shí)訓(xùn)100例,電子工業(yè)出版社。5周潤景等編著,基于proteus的電路及單片機(jī)設(shè)計(jì)與仿真,北京航空航天大學(xué)出版社。致謝感謝學(xué)院給我提供了一個(gè)鍛煉自己獨(dú)立完成任務(wù)的機(jī)會(huì),使得我的動(dòng)手能力和理論水平都有所提高。感謝老師充分相信我的能力,讓我可以把自己能夠順利完成任務(wù)。感謝我的同學(xué)們,在面對(duì)我有那么多的難題時(shí),耐心的跟我講解,因?yàn)橛兴麄儙椭也拍軠?zhǔn)時(shí)的完成這份課程設(shè)計(jì)。附錄總程序源代碼org 0000h lj

35、mp main org 000bh jmp tim0 org 0003h ljmp inter0 csa equ p2.4 csb equ p2.3 rs equ p2.2 rw equ p2.1 e equ p2.0 dataes equ p0 com equ 21h dat equ 22h ym equ 23h lm equ 24h codes equ 25h org 0030hmain:lcall int;調(diào)用初始化子程序 lcall left;對(duì)左半屏操作 mov ym,#3;設(shè)置“生”起始頁 mov lm,#32;設(shè)置“生”列位置 mov codes,#0 lcall chine m

36、ov ym ,#3;設(shè)置“日”起始頁 mov lm ,#48;設(shè)置“日”列位置 mov codes,#1 lcall chine lcall right mov ym,#3;設(shè)置“快”起始頁 mov lm,#0;設(shè)置“快”列位置 mov codes,#2 lcall chine mov ym,#3;設(shè)置“樂”起始頁 mov lm,#16;設(shè)置“樂”列位置 mov codes,#3 lcall chine lcall muisc ddd:ljmp ddd;int:lcall left;初始化子程序 mov com,#3fh lcall prm lcall right mov com,#3fh l

37、call prmclearl:lcall left;清左半屏 mov r4,#00hclear0:mov com,r4 lcall pagefirst mov com,#00h lcall liefirst mov r3,#64clear1:mov dat,#00h lcall prd djnz r3,clear1 inc r4 cjne r4,#08h,clear0clearr:lcall right;清右半屏 mov r4,#00hclear2:mov com,r4 lcall pagefirst mov com,#00h lcall liefirst mov r3,#64clear3:m

38、ov dat,#00h lcall prd djnz r3,clear3 inc r4 cjne r4,#08h,clear2 ret busy:clr rs;判斷忙子程序 setb rw prro1:mov dataes,#0ffh;將端口置1,準(zhǔn)備讀數(shù)據(jù)總線 setb e;液晶模塊將當(dāng)前狀態(tài)送到數(shù)據(jù)總線 mov a,dataes;讀數(shù)據(jù)總線 clr e jb acc.7,prro1;為1,表示液晶模塊處于忙狀態(tài),等到acc.7返回為0,返回主程序 ret left:clr csa;左半屏控制 setb csb retright:setb csa;右半屏控制 clr csb ret prm:

39、lcall busy;判斷液晶模塊是否忙 clr rs clr rw mov dataes,com;com中存放指令 setb e clr e ret prd:lcall busy;判斷液晶模塊是否忙 setb rs clr rw setb e mov dataes,dat;dat中存放待寫入的數(shù)據(jù) clr e;液晶模塊從數(shù)據(jù)總線上讀入指令 retpagefirst:mov a,com;設(shè)置顯示初始頁,com中為實(shí)際頁碼 orl a,#0b8h mov com,a lcall prm;調(diào)用寫入指令子程序 retliefirst:mov a,com;設(shè)置顯示初始列,com中為實(shí)際頁碼 orl a

40、,#40h mov com,a lcall prm;調(diào)用寫入指令子程序 ret chine:mov dptr,#tab;查表顯示漢字 mov a,codes mov b,#32 mul ab add a,dpl mov dpl,a mov a,b addc a,dph mov dph,a mov com,ym lcall pagefirst mov com,lm lcall liefirst mov r0,#00h return0:mov a,r0 movc a,a+dptr mov dat,a lcall prd inc r0 cjne r0,#16,return0 mov a,ym inc

41、 a mov com,a lcall pagefirst mov com,lm lcall liefirst return1:mov a,r0 movc a,a+dptr mov dat,a lcall prd inc r0 cjne r0,#32,return1 retmuisc:mov tmod,#01h mov ie,#82hstart0:mov 30h,#00h;取簡(jiǎn)譜碼指針,初次30h=00 next:mov a,30h mov dptr,#table movc a,a+dptr;查表,首址(第0位)是52h mov r2,a;r2暫存簡(jiǎn)譜碼,r2=52h jz end0;取到結(jié)束碼

42、(00h),跳至end0 anl a,#0fh;取低4位(節(jié)拍碼),a=02h mov r5,a;節(jié)拍碼存于r5 mov a,r2 swap a;交換高低4位,a=25h anl a,#0fh;取低4位(音符碼),a=05h jnz sing;取到的音符碼為0嗎?不是跳至sing clr tr0;是,則不發(fā)音 jmp d1 sing:dec a;取到的音符碼,減1,a=4 mov 22h,a rl a;乘2,a=8 mov dptr,#table1;到表table1取t值,首址64260 movc a,a+dptr mov th0,a mov 21h,a mov a,22h rl a inc

43、a movc a,a+dptr mov tl0,a mov 20h,a setb tr0;啟動(dòng)定時(shí)器 d1:call delay;基本延時(shí)單位187毫秒 inc 30h jmp next;取下一個(gè)簡(jiǎn)譜碼 end0:clr tr0;停止定時(shí)器0計(jì)時(shí) jmp start1;跳到花樣燈子程序tim0: push acc push psw mov th0,26h mov tl0,20h cpl p3.7 pop psw pop acc reti start1:setb it0;系統(tǒng)初始化 setb ex0setb it1setb ex1setb eamov a,#0feh;依次循環(huán)點(diǎn)燈loop:mov

44、 p1,alcall delay1rl aljmp loopinter0:jnb p2.5,s1;若p2.5=0,切換到花樣燈1jnb p2.7,s3;若p2.7=0,切換到花樣燈2sjmp exits1:mov r2,#10;s2:mov p1,#00 lcall delay1 mov p1,#0ffh lcall delay1 djnz r2,s2;八只彩燈“亮滅亮”閃爍10次 sjmp s1 retis3:mov r3,#10s4:mov p1,#0aah lcall delay1 mov p1,#55h lcall delay1 djnz r3,s4;八只彩燈從0、2、3、6到1、3、5、7交替閃爍10次 sjmp s3exit:retidelay:mov r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論