2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩155頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)設(shè)計(jì)</b></p><p>  題目 基于89S52單片機(jī)與LED </p><p>  點(diǎn)陣的音樂(lè)盒的設(shè)計(jì) </p><p>  學(xué)生所在學(xué)院 電氣信息學(xué)院 </p><p>  專(zhuān) 業(yè) 應(yīng)用電子技術(shù) </p

2、><p>  學(xué) 號(hào) 20096421 </p><p>  學(xué) 生 姓 名 魏煒 </p><p>  指 導(dǎo) 教 師 徐漫琳 </p><p>  助理指導(dǎo)教師 </p>

3、<p>  起 止 日 期 </p><p><b>  摘 要</b></p><p>  隨著現(xiàn)代電子技術(shù)的發(fā)展,人們正處于一個(gè)信息時(shí)代。每天要通過(guò)電視,廣播,通信,互聯(lián)網(wǎng)等多重媒體獲取大量的信息。而現(xiàn)代信息的存儲(chǔ)和傳輸越來(lái)越趨于高科技化,LED電子顯示屏作為一個(gè)信息傳遞沒(méi)加,在人們?nèi)粘I钌a(chǎn)中,

4、起著不可替代的作用。</p><p>  LED之所以受到廣泛重視而得到迅速發(fā)展,是與它本身所具有的優(yōu)點(diǎn)分不開(kāi)的。這些優(yōu)點(diǎn)概括起來(lái)是:亮度高、工作電壓低、功耗小、小型化、壽命長(zhǎng)、耐沖擊和性能穩(wěn)定。LED的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高耐氣候性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展。</p><p>  LED因其體積小,耗電量低,亮度及環(huán)保等有點(diǎn)而被廣泛應(yīng)用

5、于公共場(chǎng)所的大屏顯示上,LED點(diǎn)陣大屏可應(yīng)用于戶(hù)外廣告,交通導(dǎo)航,大廳公告,比賽的多媒體實(shí)時(shí)顯示等領(lǐng)域?,F(xiàn)代LED的發(fā)展很快,很多研究領(lǐng)域非常已經(jīng)深刻,實(shí)際情況是:很多相關(guān)的知識(shí)已經(jīng)遠(yuǎn)遠(yuǎn)超出我們?cè)谛W(xué)生的能力范圍,所以在此只是簡(jiǎn)單的研究一下用單片機(jī)驅(qū)動(dòng)的LED顯示移動(dòng)的漢字。本設(shè)計(jì)作品的用途正是在于實(shí)現(xiàn)大屏顯示的核心功能,即漢字的顯示,可實(shí)際用于簡(jiǎn)單的顯示系統(tǒng)中,如簡(jiǎn)單的排隊(duì)叫號(hào)顯示屏,電梯顯示屏等。</p><p&

6、gt;  一首音樂(lè)是由許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率。這樣就可以利用不同的頻率的組合,構(gòu)成所想要的音樂(lè)了。當(dāng)然,對(duì)于單片機(jī)來(lái)說(shuō)產(chǎn)生不同的頻率非常方便,可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這樣的方波頻率信號(hào)。所以,只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。</p><p>  漢字點(diǎn)陣顯示是我國(guó)使用非常普遍的一種廣告顯示方式,通常是采用左右滾動(dòng)或上下滾動(dòng)的方式顯示多個(gè)漢字。用點(diǎn)陣方式構(gòu)成圖形或

7、文字,是非常靈活的,可以根據(jù)需要任意組合和變化,只要設(shè)計(jì)好合適的數(shù)據(jù)文件,就可以得到滿(mǎn)意的顯示效果。因而采用點(diǎn)陣式圖文顯示屏顯示經(jīng)常需要變化的信息,是非常有效的。</p><p>  本設(shè)計(jì)結(jié)合了LED漢字點(diǎn)陣顯示以及單片機(jī)的電子發(fā)聲的原理,設(shè)計(jì)了一種可以播放并流動(dòng)顯示音樂(lè)名字的音樂(lè)盒。</p><p>  關(guān)鍵詞: 89S52單片機(jī),16x16漢字顯示,音樂(lè)盒</p>&l

8、t;p><b>  目 錄</b></p><p><b>  摘要I</b></p><p><b>  1 緒論1</b></p><p><b>  1.1 概述1</b></p><p><b>  1.2 目的3<

9、;/b></p><p><b>  2 方案設(shè)計(jì)4</b></p><p>  2.1 總體設(shè)計(jì)4</p><p>  2.2 實(shí)現(xiàn)功能5</p><p>  3 硬件電路設(shè)計(jì)6</p><p>  3.1 單片機(jī)簡(jiǎn)介6</p><p>  3.1.1中央

10、處理器7</p><p>  3.1.2存儲(chǔ)器組織8</p><p>  3.1.3 AT89S52結(jié)構(gòu)框圖9</p><p>  3.1.4 AT89S52的主要特性10</p><p>  3.1.5 AT89S52引腳功能與封裝11</p><p>  3.2 單片機(jī)最小系統(tǒng)14</p>

11、<p>  3.3 總體電路設(shè)計(jì)15</p><p>  3.4 LED點(diǎn)陣顯示電路設(shè)計(jì)16</p><p>  3.4.1 LED顯示原理17</p><p>  3.4.2 點(diǎn)陣的流動(dòng)顯示20</p><p>  3.5電子發(fā)聲電路設(shè)計(jì)24</p><p>  3.6譯碼電路設(shè)計(jì)25<

12、;/p><p>  3.7驅(qū)動(dòng)電路設(shè)計(jì)27</p><p>  4 程序設(shè)計(jì)與調(diào)試29</p><p>  4.1 程序流程圖29</p><p>  4.2 LED點(diǎn)陣顯示程序29</p><p>  4.3 電子發(fā)聲程序31</p><p>  5 硬件調(diào)試結(jié)果與分析38</p

13、><p>  5.1 LED顯示部分調(diào)試38</p><p>  5.2 電子發(fā)聲部分調(diào)試39</p><p>  5.3 音樂(lè)盒整體效果介紹39</p><p><b>  6 試驗(yàn)總結(jié)40</b></p><p><b>  7 附錄41</b></p>

14、<p>  附錄A:電路原理圖41</p><p>  附錄B:整體PCB圖42</p><p>  附錄C:元件清單43</p><p>  附錄D:實(shí)物圖44</p><p>  附錄E:完整程序代碼47</p><p><b>  參考文獻(xiàn)74</b></p&

15、gt;<p><b>  1 緒論</b></p><p><b>  1.1概述</b></p><p>  隨著現(xiàn)代電子技術(shù)的發(fā)展,人們正處于一個(gè)信息時(shí)代。每天要通過(guò)電視,廣播,通信,互聯(lián)網(wǎng)等多重媒體獲取大量的信息。而現(xiàn)代信息的存儲(chǔ)和傳輸越來(lái)越趨于高科技化,LED電子顯示屏作為一個(gè)信息傳遞沒(méi)加,在人們?nèi)粘I钌a(chǎn)中,起著不可替

16、代的作用。</p><p>  單片微型計(jì)算機(jī)(single chip microcomputer)簡(jiǎn)稱(chēng)單片機(jī),它是為各類(lèi)專(zhuān)用控制器而設(shè)計(jì)的通用或?qū)S梦⑿陀?jì)算機(jī)系統(tǒng),高密度集成了普通計(jì)算機(jī)微處理器,一定容量的RAM和ROM以及輸入/輸出接口,定時(shí)器等電路于一塊芯片上構(gòu)成的。</p><p>  單片機(jī)自20世紀(jì)70年代問(wèn)世以來(lái),以極其高的性?xún)r(jià)比受到人們的重視和關(guān)注,所以應(yīng)用很廣,發(fā)展很快。

17、單片機(jī)的優(yōu)點(diǎn)是體積小、重量輕、抗干擾能力強(qiáng),對(duì)環(huán)境要求不高,價(jià)格低廉,可靠性高,靈活性好,開(kāi)發(fā)較為容易。在現(xiàn)代工業(yè)控制和一些智能化儀器儀表中,越來(lái)越多的場(chǎng)所需要用點(diǎn)陣圖形顯示器顯示漢字,漢字顯示屏也廣泛應(yīng)用到汽車(chē)報(bào)站器,廣告屏等。所以研究LED顯示有實(shí)用的意義。</p><p>  LED顯示屏分為圖文顯示屏和視頻顯示屏,均由LED矩陣塊組成。圖文顯示屏可與計(jì)算機(jī)同步顯示漢字、英文文本和圖形;視頻顯示屏采用微型計(jì)

18、算機(jī)進(jìn)行控制,圖文、圖像并茂,以實(shí)時(shí)、同步、清晰的信息傳播方式播放各種信息,還可顯示二維、三維動(dòng)畫(huà)、錄像、電視、VCD節(jié)目以及現(xiàn)場(chǎng)實(shí)況。LED顯示屏顯示畫(huà)面色彩鮮艷,立體感強(qiáng),靜如油畫(huà),動(dòng)如電影,廣泛應(yīng)用于交通運(yùn)輸、車(chē)站、商場(chǎng)、醫(yī)院、賓館、證券市場(chǎng)、工業(yè)企業(yè)管理等公共場(chǎng)所。 </p><p>  LED顯示屏可以顯示變化的數(shù)字、文字、圖形圖像;不僅可以用于室內(nèi)環(huán)境還可以用于室外環(huán)境,具有投影儀、電視墻、液晶顯示屏

19、無(wú)法比擬的優(yōu)點(diǎn)。 </p><p>  LED之所以受到廣泛重視而得到迅速發(fā)展,是與它本身所具有的優(yōu)點(diǎn)分不開(kāi)的。這些優(yōu)點(diǎn)概括起來(lái)是:亮度高、工作電壓低、功耗小、小型化、壽命長(zhǎng)、耐沖擊和性能穩(wěn)定。LED的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高耐氣候性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展。</p><p>  漢字顯示方式是先根據(jù)所需要的漢字提取漢字點(diǎn)陣(如16

20、15;16 點(diǎn)陣),將點(diǎn)陣文件存入ROM,形成新的漢字編碼;而在使用時(shí)則需要先根據(jù)新的漢字編碼組成語(yǔ)句,再由MCU根據(jù)新編碼提取相應(yīng)的點(diǎn)陣進(jìn)行漢字顯示。不論顯示圖形還是文字,都是控制與組成這些圖形或文字的各個(gè)點(diǎn)所在位置相對(duì)應(yīng)的LED器件發(fā)光。通常事先把需要顯示的圖形文字轉(zhuǎn)換成點(diǎn)陣圖形,在按照顯示控制的要求以一定的格式形成顯示數(shù)據(jù)。對(duì)于只控制通斷的圖文顯示屏來(lái)說(shuō),每個(gè)LED發(fā)光器件占據(jù)數(shù)據(jù)中的1位(1bit),在需要該LE D器件發(fā)光的數(shù)

21、據(jù)中相應(yīng)的位填1,否則填0。當(dāng)然,根據(jù)控制電路的安排,相反的定義同樣時(shí)可行的。這樣依照所需顯示的圖形文字,按顯示屏的各行各列逐點(diǎn)填寫(xiě)顯示數(shù)據(jù),就可以構(gòu)成一個(gè)顯示數(shù)據(jù)文件。顯示圖形的數(shù)據(jù)文件,其格式相對(duì)自由,只要能夠滿(mǎn)足顯示控制的要求即可。文字的點(diǎn)陣格式比較規(guī)范,可以采用現(xiàn)行計(jì)算機(jī)通用的字庫(kù)字模。組成一個(gè)字的點(diǎn)陣,其大小也可以有16×16、24×24、32×32、48×48等不同規(guī)格。</p&

22、gt;<p>  用點(diǎn)陣方式構(gòu)成圖形或文字,是非常靈活的,可以根據(jù)需要任意組合和變化,只要設(shè)計(jì)好合適的數(shù)據(jù)文件,就可以得到滿(mǎn)意的顯示效果。因而采用點(diǎn)陣式圖文顯示屏顯示經(jīng)常需要變化的信息,是非常有效的。</p><p>  圖文顯示屏的顏色,有單色、雙色、和多色幾種。最常用的是單色圖文屏。單色屏多使用紅色或橘紅色或橙色LED點(diǎn)陣單元。雙色圖文屏和多色圖文屏,在LED點(diǎn)陣的每一個(gè)“點(diǎn)”上布置有兩個(gè)或多個(gè)

23、不同顏色的LED發(fā)光器件。換句話(huà)說(shuō),對(duì)應(yīng)于每種顏色都有自己的顯示矩陣。顯示的時(shí)候,各顏色的顯示點(diǎn)陣是分開(kāi)控制的。事先設(shè)計(jì)好各種顏色的顯示數(shù)據(jù),顯示時(shí)分別送到各自的顯示點(diǎn)陣,即可實(shí)現(xiàn)預(yù)期效果。每一種顏色的控制方法和單色的完全相同,因此掌握了單色圖文顯示屏的原理,雙色屏和多色屏就不難理解了。</p><p>  為了吸引觀眾增強(qiáng)顯示效果,可以有多種顯示模式。最簡(jiǎn)單的顯示模式是靜態(tài)顯示。與靜態(tài)顯示模式相對(duì)應(yīng),就有各種動(dòng)

24、態(tài)顯示模式,它們所顯示的圖文都是能夠動(dòng)的。按照?qǐng)D文運(yùn)動(dòng)的特點(diǎn)又可以分為閃爍、平移、旋轉(zhuǎn)、縮放等多種顯示模式。產(chǎn)生不同顯示模式的方法,并不意味著一定要重新編寫(xiě)顯示數(shù)據(jù),可以通過(guò)一定的算法從原來(lái)的顯示數(shù)據(jù)直接生成。例如,按順序調(diào)整行號(hào),可以使顯示圖文產(chǎn)生上下平移;而順序調(diào)整列顯示數(shù)據(jù)的位置,就可以達(dá)到左右平移的目的;刷新的時(shí)間控制,要考慮運(yùn)動(dòng)圖形文字的顯示效果。刷新太慢,動(dòng)感不顯著;刷新太快了,中間過(guò)程看不清。一般刷新周期可控制在幾十毫秒范

25、圍之內(nèi)。</p><p>  音調(diào)是由不同的頻率產(chǎn)生的,而每一個(gè)音調(diào)都是由一個(gè)音符和一個(gè)節(jié)拍組成,音符決定該音調(diào)的高低,節(jié)拍則決定了該音調(diào)是多少拍。因此,一個(gè)音調(diào)是由兩個(gè)字節(jié)組成的。根據(jù)音符字節(jié) 產(chǎn)生該大小次數(shù)的延時(shí),聲音輸出口取反,就可以得到該音調(diào)的高低音。根據(jù)設(shè)置單位節(jié)拍的延時(shí)大小,可以控制音樂(lè)演唱速度。</p><p>  因此算法很簡(jiǎn)單:定義單片機(jī)的一個(gè)I/O端腳為聲音輸出口,在規(guī)

26、定的節(jié)拍內(nèi),根據(jù)音符字節(jié)的大小產(chǎn)生延時(shí),將聲音輸出口不斷的置高置低(即取反),就可以得到該音調(diào)。只要選取合適的單位節(jié)拍延時(shí),就可以輸出動(dòng)聽(tīng)的音樂(lè)。</p><p>  電子發(fā)聲部分,由單片機(jī)P1.5口通過(guò)程序控制產(chǎn)生不同頻率的方波,并通過(guò)三極管放大,驅(qū)動(dòng)喇叭發(fā)聲。</p><p><b>  1.2目的</b></p><p>  LED因其體

27、積小,耗電量低,亮度及環(huán)保等有點(diǎn)而被廣泛應(yīng)用于公共場(chǎng)所的大屏顯示上,LED點(diǎn)陣大屏可應(yīng)用于戶(hù)外廣告,交通導(dǎo)航,大廳公告,比賽的多媒體實(shí)時(shí)顯示等領(lǐng)域。現(xiàn)代LED的發(fā)展很快,很多研究領(lǐng)域非常已經(jīng)深刻,實(shí)際情況是:很多相關(guān)的知識(shí)已經(jīng)遠(yuǎn)遠(yuǎn)超出我們?cè)谛W(xué)生的能力范圍,所以在此只是簡(jiǎn)單的研究一下用單片機(jī)驅(qū)動(dòng)的LED顯示移動(dòng)的漢字。本設(shè)計(jì)作品的用途正是在于實(shí)現(xiàn)大屏顯示的核心功能,即漢字的顯示,可實(shí)際用于簡(jiǎn)單的顯示系統(tǒng)中,如簡(jiǎn)單的排隊(duì)叫號(hào)顯示屏,電梯顯

28、示屏等。</p><p>  本設(shè)計(jì)結(jié)合了LED漢字點(diǎn)陣顯示以及單片機(jī)的電子發(fā)聲的原理,設(shè)計(jì)了一種可以播放并流動(dòng)顯示音樂(lè)名字的音樂(lè)盒。</p><p>  同時(shí)由單片機(jī)P1.5口通過(guò)程序控制產(chǎn)生不同頻率的方波,并通過(guò)三極管放大,驅(qū)動(dòng)喇叭發(fā)聲。</p><p>  通過(guò)此次設(shè)計(jì)將單片機(jī)軟硬件結(jié)合起來(lái)對(duì)程序進(jìn)行編輯,校驗(yàn),鍛煉時(shí)間能力和理論練習(xí)實(shí)際的能力。</p&

29、gt;<p><b>  2 方案設(shè)計(jì)</b></p><p><b>  2.1總體設(shè)計(jì)</b></p><p>  LED圖像顯示與電子發(fā)聲總體框圖如圖2.1所示,點(diǎn)陣電路大體上可以分成微機(jī)本身的硬件、顯示驅(qū)動(dòng)電路、控制信號(hào)電路三部分??刂齐娐凡糠职ㄒ粋€(gè)51單片機(jī)和一些外圍電路。LED圖像以及字符數(shù)據(jù)存放于單片機(jī)的程序存儲(chǔ)器

30、內(nèi),通過(guò)對(duì)單片機(jī)編程,讀取LED圖像及字符數(shù)據(jù)來(lái)控制點(diǎn)陣顯示屏體、以及它的行和列的各個(gè)驅(qū)動(dòng)電路。由于兩部分的電路在制板時(shí)可以放到一起,所以可以將其字庫(kù)放到控制電路部分使用串行通訊方式來(lái)與屏體電路部分進(jìn)行數(shù)據(jù)和命令的傳送。</p><p>  設(shè)計(jì)框圖如圖2.1所示:</p><p>  圖2.1 總體設(shè)計(jì)框圖</p><p><b>  2.2實(shí)現(xiàn)功能&l

31、t;/b></p><p>  此顯示電路采用掃描方式進(jìn)行顯示時(shí),每行有一個(gè)行驅(qū)動(dòng)器,每列有一個(gè)列驅(qū)動(dòng)器。由行譯碼器給出的行選通信號(hào),從第一行開(kāi)始,按順序依次對(duì)各行進(jìn)行掃描。另一方而,根據(jù)各列鎖存的數(shù)據(jù),確定相應(yīng)的列驅(qū)動(dòng)器是否將該列與電源的另一端接通。接通的列,就在該行該列點(diǎn)亮相應(yīng)的LED;未接通的列所對(duì)應(yīng)的LED熄滅。</p><p>  電子發(fā)聲部分,由單片機(jī)P1.5口通過(guò)程序控

32、制產(chǎn)生不同頻率的方波,并通過(guò)三極管放大,驅(qū)動(dòng)喇叭發(fā)聲。</p><p><b>  音樂(lè)盒實(shí)際效果:</b></p><p>  接通電源,由16X16點(diǎn)陣LED顯示屏顯示開(kāi)機(jī)動(dòng)畫(huà),然后顯示歡迎語(yǔ)句,歡迎語(yǔ)句上下流動(dòng);</p><p>  通過(guò)第一個(gè)按鍵切換所播放的音樂(lè),每按一次顯示歌名,然后演奏音樂(lè);</p><p>

33、;  第二個(gè)按鍵為復(fù)位按鍵,用來(lái)回到歡迎界面。</p><p><b>  3 硬件電路設(shè)計(jì)</b></p><p><b>  3.1 單片機(jī)簡(jiǎn)介</b></p><p>  單片機(jī)的全稱(chēng)為單片微型計(jì)算機(jī)(Single-Chip Microcomputer)或微型控制器(Micro-controller)。它在一塊芯片

34、上集成了中央處理單元CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、定時(shí)器/計(jì)數(shù)器和多種輸入/輸出(I/O),如并行I/O、串行I/O和A/D轉(zhuǎn)換器等。就其組成而言一塊單片機(jī)就是一臺(tái)計(jì)算機(jī)。典型的結(jié)構(gòu)如圖1-1所示。由于它具有許多適用于控制的指令和硬件支持而廣泛應(yīng)用于工業(yè)控制、儀器儀表、外設(shè)控制、順序控制器中,所以又稱(chēng)為微控制單元(MCU)。</p><p>  單片機(jī)的基本結(jié)構(gòu)見(jiàn)圖3.1。</p>&

35、lt;p>  圖3.1單片機(jī)的基本結(jié)構(gòu)</p><p>  MCS-51系列單片機(jī),是Intel公司繼MCS-48系列單片機(jī)之后,在1980年推出的高檔8位單片機(jī)。當(dāng)時(shí)MCS-51系列產(chǎn)品有8051、8031、8751、80C51、80C31等型號(hào)。它們的結(jié)構(gòu)基本相同,其主要差別反映在寄存器的配置上有所不同。8051內(nèi)部沒(méi)有4K字節(jié)的掩膜ROM程序存儲(chǔ)器,8031片內(nèi)沒(méi)有程序存儲(chǔ)器,而8751是將8051片

36、內(nèi)的ROM換成EPROM。</p><p>  ATMEL89系列單片機(jī)是ATMEL公司的以8031核構(gòu)成的8位Flash單片機(jī)系列。這個(gè)系列單片機(jī)的最大特點(diǎn)就是在片內(nèi)含有Flash存儲(chǔ)器,</p><p>  AT89S52單片機(jī)是一種低功耗高性能的CMOS8位微控制器,內(nèi)置8KB可在線(xiàn)編程閃存。該器件采用Atmel公司的高密度非易失性存儲(chǔ)技術(shù)生產(chǎn),其指令與工業(yè)標(biāo)準(zhǔn)的80C51指令集兼容

37、。片內(nèi)程序存儲(chǔ)器允許重復(fù)在線(xiàn)編程,允許程序存儲(chǔ)器在系統(tǒng)內(nèi)通過(guò)SPI串行口改寫(xiě)或用同用的非易失性存儲(chǔ)器改寫(xiě)。通過(guò)把通用的8位CPU與可在線(xiàn)下載的Flash集成在一個(gè)芯片上,AT89S52便成為一個(gè)高效的微型計(jì)算機(jī)。它的應(yīng)用范圍廣,可用于解決復(fù)雜的控制問(wèn)題,且成本較低。</p><p>  3.1.1中央處理器</p><p>  8051的中央處理器由運(yùn)算器和控制邏輯構(gòu)成,其中包括若干特殊功

38、能寄存器(SFR)。</p><p>  算術(shù)邏輯單元ALU能對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除等算術(shù)運(yùn)算;“與”、“或”、“異或”等邏輯運(yùn)算以及位操作運(yùn)算。</p><p>  ALU只能進(jìn)行運(yùn)算,運(yùn)算的操作數(shù)可以事先存放到累加器ACC或寄存器TMP中,運(yùn)算結(jié)果可以送回ACC或通用寄存器或存儲(chǔ)單元中,累加器ACC也可以寫(xiě)為A。B寄存器在乘法指令中用來(lái)存放一個(gè)乘數(shù),在除法指令中用來(lái)存放除數(shù),運(yùn)算后B

39、中為部分運(yùn)算結(jié)果。</p><p>  程序狀態(tài)字PSW是個(gè)8位寄存器,用來(lái)寄存本次運(yùn)算的特征信息,用到其中七位。PSW的格式如圖3.2所示:</p><p>  圖3.2 PSW格式</p><p><b>  其各位的含義是:</b></p><p>  CY:進(jìn)位標(biāo)志。有進(jìn)位/錯(cuò)位時(shí)CY=1,否則CY=0。 <

40、;/p><p>  AC:半進(jìn)位標(biāo)志。當(dāng)D3位向D4位產(chǎn)生進(jìn)位/錯(cuò)位時(shí),AC=1,否則AC=0,常用于十進(jìn)制調(diào)整運(yùn)算中。</p><p>  F0:用戶(hù)可設(shè)定的標(biāo)志位,可置位/復(fù)位,也可供測(cè)試。</p><p>  RS1、RS0:四個(gè)通用寄存器組選擇位,該兩位的四種組合狀態(tài)用來(lái)選擇0~3寄存器組。。</p><p>  OV:溢出標(biāo)志。當(dāng)帶符號(hào)

41、數(shù)運(yùn)算結(jié)果超出-128~+127范圍時(shí)OV=1,否則OV=0。當(dāng)無(wú)符號(hào)數(shù)乘法結(jié)果超過(guò)255時(shí),或當(dāng)無(wú)符號(hào)數(shù)除法的除數(shù)為0時(shí)OV=1,否則OV=0。</p><p>  P:奇偶校驗(yàn)標(biāo)志。每條指令執(zhí)行完,若A中1的個(gè)數(shù)為奇數(shù)時(shí)P=1,否則P=0,即偶校驗(yàn)方式。</p><p>  控制邏輯主要包括定時(shí)和控制邏輯、指令寄存器 、譯碼器以及地址指針DPTR和程序寄存器PC等。</p>

42、<p>  單片機(jī)是程序控制式計(jì)算機(jī),即它的運(yùn)行過(guò)程是在程序控制下逐條執(zhí)行程序指令的過(guò)程:從程序存儲(chǔ)器中取出指令送指令存儲(chǔ)器IR,然后指令譯碼器ID進(jìn)行譯碼,譯碼產(chǎn)生一系列符合定時(shí)要求的微操作信號(hào),用以控制單片機(jī)的各部分動(dòng)作。8051的控制器在單片機(jī)內(nèi)部協(xié)調(diào)各功能部件之間的數(shù)據(jù)傳送、數(shù)據(jù)運(yùn)算等操作,并對(duì)單片機(jī)發(fā)出若干控制信息。這些控制信息的使用專(zhuān)門(mén)的控制線(xiàn),諸如PSEN、ALE、EA以及RST,也有一些是和P3口的某些端子

43、合用,如WR和RD就是P3.6和P3.7,他們的具體功能在介紹8051引腳是一起敘述。</p><p>  3.1.2存儲(chǔ)器組織</p><p>  89系列單片機(jī)可尋址的內(nèi)部和外部程序存儲(chǔ)器總空間為64KB。每個(gè)外部程序和數(shù)據(jù)存儲(chǔ)器的可尋址范圍高達(dá)64KB。它沒(méi)有采用程序存儲(chǔ)器分區(qū)的方法,64KB的地址空間是統(tǒng)一的。</p><p>  EA引腳接低電平時(shí),單片機(jī)

44、就從外部程序存儲(chǔ)器中取指。</p><p>  對(duì)于AT89S52,EA引腳接高電平時(shí),程序直接從單片機(jī)內(nèi)部存儲(chǔ)器中的0000H到1FFFH單元執(zhí)行,2000H到FFFFH單元到外部存儲(chǔ)器中執(zhí)行。</p><p>  程序存儲(chǔ)器中有幾個(gè)單元專(zhuān)門(mén)用來(lái)存放特定的程序。這幾個(gè)單元的配置情況如圖3.3所示。</p><p>  圖3.3 程序存儲(chǔ)器的中斷入口配置</p

45、><p>  由圖3.3可知,0000H~0002H單元用于初始化程序。單片機(jī)復(fù)位后,CPU總是從0000H單元開(kāi)始執(zhí)行程序。另外,每個(gè)中斷在程序存儲(chǔ)器中都分配有一個(gè)固定的入口地址。中斷響應(yīng)后,CPU便跳到該單元,在這里開(kāi)始執(zhí)行中斷服務(wù)子程序。例如,外部中斷0的入口地址被放在0003H單元,如果使用外部中斷0,則它的中斷服務(wù)子程序必須從0003H單元開(kāi)始。如果中斷沒(méi)有使用,那么它的服務(wù)單元也可作一般用途的程序存儲(chǔ)器用

46、。</p><p>  3.1.3 AT89S52結(jié)構(gòu)框圖</p><p>  AT89S52結(jié)構(gòu)框圖如圖3.4所示</p><p>  圖3.4 AT89S52結(jié)構(gòu)框圖</p><p>  3.1.4 AT89S52的主要特性</p><p>  AT89S52的主要特性如下:</p><p&g

47、t;<b>  兼容MCS51產(chǎn)品</b></p><p>  8K字節(jié)可擦寫(xiě)1000次的在線(xiàn)可編程ISP 閃存</p><p>  4.0V到5.5V的工作電源范圍</p><p>  全靜態(tài)工作:0Hz ~ 24MHz</p><p><b>  3級(jí)程序存儲(chǔ)器加密</b></p>

48、<p>  256字節(jié)內(nèi)部RAM</p><p>  32條可編程I/O線(xiàn)</p><p>  3個(gè)16位定時(shí)器/計(jì)數(shù)器</p><p><b>  8個(gè)中斷源</b></p><p><b>  UART串行通道</b></p><p>  低功耗空閑方式和掉電

49、方式</p><p>  通過(guò)中斷終止掉電方式</p><p><b>  看門(mén)狗定時(shí)器</b></p><p><b>  雙數(shù)據(jù)指針</b></p><p>  靈活的在線(xiàn)編程(字節(jié)和頁(yè)模式)</p><p>  3.1.5 AT89S52引腳功能與封裝</p>

50、;<p>  AT89S52引腳功能與封裝如圖3.5所示:</p><p>  圖3.5 AT89S52封裝引腳圖</p><p>  本設(shè)計(jì)所用的封裝為40-lead PDIP。</p><p>  按照功能,AT89S52的引腳可分為主電源、外接晶體振蕩或振蕩器、多功能I/O口、控制和復(fù)位等。</p><p><b&

51、gt;  多功能I/O口</b></p><p>  AT89S52共有四個(gè)8位的并行I/O口:P0、P1、P2、P3端口,對(duì)應(yīng)的引腳分別是P0.0 ~ P0.7,P1.0 ~ P1.7,P2.0 ~ P2.7,P3.0 ~ P3.7,共32根I/O線(xiàn)。每根線(xiàn)可以單獨(dú)用作輸入或輸出。</p><p> ?、貾0端口,該口是一個(gè)8位漏極開(kāi)路的雙向I/O口。在作為輸出口時(shí),每根引腳

52、可以帶動(dòng)8個(gè)TTL輸入負(fù)載。當(dāng)把“1”寫(xiě)入P0時(shí),則它的引腳可用作高阻抗輸入。當(dāng)對(duì)外部程序或數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P0可用作多路復(fù)用的低字節(jié)地址/數(shù)據(jù)總線(xiàn),在該模式,P0口擁有內(nèi)部上拉電阻。在對(duì)Flash存儲(chǔ)器進(jìn)行編程時(shí),P0用于接收代碼字節(jié);在校驗(yàn)時(shí),則輸出代碼字節(jié);此時(shí)需要外加上拉電阻。</p><p> ?、赑1端口,該口是帶有內(nèi)部上拉電阻的8位雙向I/O端口,P1口的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)

53、4個(gè)TTL輸入。對(duì)端口寫(xiě)“1”時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,此時(shí)可用作輸入口。P1口作輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流。在對(duì)Flash編程和程序校驗(yàn)時(shí),P1口接收低8位地址。</p><p>  另外,P1.0與P1.1可以配置成定時(shí)/計(jì)數(shù)器2的外部計(jì)數(shù)輸入端(P1.0/T2)與定時(shí)/計(jì)數(shù)器2的觸發(fā)輸入端(P1.0/T2EX),如表3.1所示。</p>

54、;<p>  表3.1 P1口管腳復(fù)用功能</p><p>  ③ P2端口,該口是帶有內(nèi)部上拉電阻的8位雙向I/O端口,P2口的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫(xiě)“1”時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,此時(shí)可用作輸入口。P2口作輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流。</p><p>  在訪問(wèn)外部程序

55、存儲(chǔ)器或16位的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX @DPTR指令)時(shí),P2口送出高8位地址,在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX @RI指令)時(shí),P2口引腳上的內(nèi)容(就是專(zhuān)用寄存器(SFR)區(qū)中P2寄存器的內(nèi)容),在整個(gè)訪問(wèn)期間不會(huì)改變。在對(duì)Flash編程和程序校驗(yàn)期間,P2口也接收高位地址或一些控制信號(hào)。</p><p>  ④ P3端口,該口是帶有內(nèi)部上拉電阻的8位雙向I/O端口,P3口的輸出緩沖

56、器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫(xiě)“1”時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,此時(shí)可用作輸入口。P3口作輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流。</p><p>  在AT89S52中,同樣P3口還用于一些復(fù)用功能,如表3.2所列。在對(duì)Flash編程和程序校驗(yàn)期間,P3口還接收一些控制信號(hào)。</p><p>  表3.2 P3端口

57、引腳與復(fù)用功能表</p><p>  RST 復(fù)位輸入端。在振蕩器運(yùn)行時(shí),在此腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平將使其單片機(jī)復(fù)位??撮T(mén)狗定時(shí)器(Watchdog)溢出后,該引腳會(huì)保持98個(gè)振蕩周期的高電平。在SFR AUXR(地址8EH)寄存器中的DISRTO位可以用于屏蔽這種功能。DISRTO位的默認(rèn)狀態(tài),是復(fù)位高電平輸出功能使能。</p><p>  ALE/PROG 地址鎖存允許信號(hào)。

58、在存取外部存儲(chǔ)器時(shí),這個(gè)輸出信號(hào)用于鎖存低字節(jié)地址。在對(duì)Flash存儲(chǔ)器編程時(shí),這條引腳用于輸入編程脈沖PROG。一般情況下,ALE是振蕩器頻率的6分頻信號(hào),可用于外部定時(shí)或時(shí)鐘。但是,在對(duì)外部數(shù)據(jù)存儲(chǔ)器每次存取中,會(huì)跳過(guò)一個(gè)ALE脈沖。在需要時(shí),可以把地址8EH中的SFR寄存器的0位置為“1”,從而屏蔽ALE的工作;而只有在MOVX或MOVC指令執(zhí)行時(shí)ALE才被激活。在單片機(jī)處于外部執(zhí)行方式時(shí),對(duì)ALE屏蔽位置“1”并不起作用。<

59、;/p><p>  PSEN 程序存儲(chǔ)器允許信號(hào)。它用于讀外部程序存儲(chǔ)器。當(dāng)AT89S52在執(zhí)行來(lái)自外部存儲(chǔ)器的指令時(shí),每一個(gè)機(jī)器周期PSEN被激活2次。在對(duì)外部數(shù)據(jù)存儲(chǔ)器的每次存取中,PSEN的2次激活會(huì)被跳過(guò)。</p><p>  EA/Vpp 外部存取允許信號(hào)。為了確保單片機(jī)從地址為0000H~FFFFH的外部程序存儲(chǔ)器中讀取代碼,故要把EA接到GND端,即地端。但是,如果鎖定位1被

60、編程,則EA在復(fù)位時(shí)被鎖存。當(dāng)執(zhí)行內(nèi)部程序時(shí),EA應(yīng)接到Vcc。在對(duì)Flash存儲(chǔ)器編程時(shí),這條引腳接收12V編程電壓Vpp。</p><p>  XTAL1 振蕩器的反相放大器輸入,內(nèi)部時(shí)鐘工作電路的輸入。</p><p>  XTAL2 振蕩器的反相放大器輸出。</p><p>  3.2單片機(jī)最小系統(tǒng)</p><p>  單片機(jī)最小

61、系統(tǒng)電路圖如圖3.6所示:</p><p>  圖3.6 單片機(jī)最小系統(tǒng)電路圖</p><p>  注: 該最小系統(tǒng)由按鍵復(fù)位RESET電路、晶體振蕩電路以及I/O接口電路組成。</p><p>  復(fù)位的實(shí)現(xiàn)通常用2種方式: 開(kāi)機(jī)上電復(fù)位和外部手動(dòng)復(fù)位,本設(shè)計(jì)用的是外部手動(dòng)復(fù)位。復(fù)位電路圖3.7如下:</p><p>  圖3.7 單片

62、機(jī)復(fù)位圖</p><p>  3.3 總體電路設(shè)計(jì)</p><p>  總體電路圖如圖3.8,3.9所示:</p><p>  圖3.8 16X16點(diǎn)陣8051主控電路</p><p>  圖3.9 16X16共陽(yáng)LED點(diǎn)陣驅(qū)動(dòng)電路</p><p>  3.4 LED點(diǎn)陣顯示電路設(shè)計(jì)</p><p&

63、gt;  8×8單色點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)二極管是放置在行線(xiàn)與列線(xiàn)的叉點(diǎn)上。本設(shè)計(jì)是一種實(shí)用的漢字顯示屏的制作,制作的是單色點(diǎn)陣。</p><p>  8×8單色點(diǎn)陣LED結(jié)構(gòu)分別如下圖3.10(a)所示。</p><p>  圖3.10(a) 8×8點(diǎn)陣外觀及引腳圖 </p><p>  16X16點(diǎn)陣LED顯

64、示電路圖如圖3.10(b)所示:</p><p>  圖3.10(b)16X16點(diǎn)陣LED顯示電路</p><p>  3.4.1 LED顯示原理</p><p>  漢字顯示屏用于顯示漢字、字符及圖像信息,在公共汽車(chē)、銀行、醫(yī)院及戶(hù)外廣告等地方都有廣泛的應(yīng)用。下面是簡(jiǎn)單的漢字顯示屏的制作,由單片機(jī)控制漢字的顯示內(nèi)容。為了降低成本,使用了四塊8×8的LED

65、點(diǎn)陣發(fā)光管的模塊,組成了一個(gè)16×16的LED點(diǎn)陣顯示屏,如圖3.11所示。在這里僅做了四個(gè)漢字的顯示,在實(shí)際的使用中可以根據(jù)這個(gè)原理自行的擴(kuò)展顯示的漢字,下面是介紹漢字顯示的原理。 </p><p>  圖3.11 四塊8×8的LED點(diǎn)陣組成16×16的LED點(diǎn)陣</p><p>  LED驅(qū)動(dòng)顯示采用動(dòng)態(tài)掃描方法,動(dòng)態(tài)掃描方式是逐行輪流點(diǎn)亮,這樣掃描驅(qū)動(dòng)

66、電路就可以實(shí)現(xiàn)多行的同名列共用一套列驅(qū)動(dòng)器。以16×16點(diǎn)陣為例,把所有同一行的發(fā)光管的陽(yáng)極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽(yáng)的接法),先送出對(duì)應(yīng)第1行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第1行使其燃亮一定的時(shí)間,然后熄滅;再送出第2行的數(shù)據(jù)并鎖存,然后選通第2行使其燃亮相同的時(shí)間,然后熄滅;….第16行之后,又重新燃亮第1行,反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺(jué)暫留現(xiàn)象,就能看到顯示

67、屏上穩(wěn)定的圖形。該方法能驅(qū)動(dòng)較多的LED,控制方式較靈活,而且節(jié)省單片機(jī)的資源。</p><p>  LED點(diǎn)陣顯示模塊進(jìn)行的方法有兩種:</p><p> ?。?)水平方向(X方向)掃描,即逐列掃描的方式(簡(jiǎn)稱(chēng)列掃描方式):此時(shí)用一個(gè)P口輸出列碼決定哪一列能亮(相當(dāng)于位碼),用另一個(gè)P口輸出行碼(列數(shù)據(jù)),決定該行上那哪個(gè)LED亮(相當(dāng)于段碼)。能亮的列從左到右掃描完16列(相當(dāng)于位碼循

68、環(huán)移動(dòng)16次)即顯示出一個(gè)完整的圖像。</p><p>  (2)豎直方向(Y方向)掃描,即逐行掃描方式(簡(jiǎn)稱(chēng)行掃描方式):此時(shí)用一個(gè)P口輸出決定哪一行能亮(相當(dāng)于位碼),另一個(gè)P口輸出列碼(行數(shù)據(jù),行數(shù)據(jù)為將列數(shù)據(jù)的點(diǎn)陣旋轉(zhuǎn)90度的數(shù)據(jù))決定該行上哪些LED燈亮(相當(dāng)于段碼)。能亮的行從上向下掃描完16行(相當(dāng)于位碼循環(huán)移位16次)即顯示一幀完整的圖像。</p><p>  本設(shè)計(jì)應(yīng)用的

69、是第二種的掃描方法,即垂直方向(Y方向)掃描。</p><p>  每一個(gè)字由16行16列的點(diǎn)陣形成顯示,即每個(gè)字均由256個(gè)點(diǎn)陣來(lái)表示,我們可以把每一個(gè)點(diǎn)理解為一個(gè)像素。一般我們使用的16×16的點(diǎn)陣宋體字庫(kù),即所謂的16×16,是每一個(gè)漢字在縱橫各16點(diǎn)的區(qū)域內(nèi)顯示的。漢字庫(kù)從該位置起的32字節(jié)信息記錄了該字的字模信息。事實(shí)上這個(gè)漢字屏不僅可以顯示漢字,也可以顯示在256像素范圍內(nèi)的任何圖

70、形。</p><p>  我們以垂直方向(Y方向)掃描顯示漢字的“江”為例來(lái)說(shuō)明其掃描原理,每一個(gè)字由16行16列的點(diǎn)陣組成顯示,如圖下的,如果用8位的AT89S51的單片機(jī)來(lái)控制,由于單片機(jī)的總線(xiàn)為8位,一個(gè)字需要拆分成兩個(gè)部分。一般我們把它分解成左部分和右部分,左部分由8*16的點(diǎn)陣組成,右部分也由8*16的點(diǎn)陣組成。在本例中單片機(jī)首先顯示的是左上角的第一行部分,即第0行的P00~P07口。方向?yàn)镻00到P0

71、7,顯示漢字“江”的時(shí)候,P00到P01是滅的,P03亮,即二進(jìn)制00100000,轉(zhuǎn)換為16進(jìn)制為02H,如圖2.11所示。</p><p>  左半部分第一行完成之后,繼續(xù)掃描右半部分的第一行,由于我們數(shù)據(jù)線(xiàn)都使用排線(xiàn),我們?nèi)栽O(shè)計(jì)成由左往右的掃描方式,即從P20向P27方向掃描,從上圖可以看到,這一行所有的都不亮,所以代碼為00000000,16進(jìn)制為00H,然后單片機(jī)轉(zhuǎn)向左半部的第二行,除了P03亮,其他的

72、都不亮,即為00010000,16進(jìn)制為01H,這一行掃描完成之后繼續(xù)進(jìn)行右半部分的掃描,這一行的右半部分都不亮,為二進(jìn)制00000000,即16進(jìn)制00H。</p><p>  按照這個(gè)方法,繼續(xù)進(jìn)行下面的掃描,一共掃描32個(gè)8位,可以得出漢字“江”的掃描代碼為 :02H 00H 04H 00H E8H 3FH 08H 02H 01H 02H 02H </p><p>  02H 12H

73、 02H 10H 02H 08H 02H 08H 02H 07H 02H 04H </p><p>  02H 04H 02H F4H 7FH 04H 00H 00H 00H</p><p>  圖3.12 點(diǎn)陣顯示原理圖</p><p>  由這個(gè)原理可以看到,無(wú)論顯示何種字體或圖像,都可以用這種方法來(lái)分析出它的掃描代碼從而顯示在屏幕上。了解漢字的顯示原理之后,那

74、如何得到漢字的字模信息呢?現(xiàn)在有一些現(xiàn)成的漢字字模生成軟件,可從網(wǎng)上下載漢字字庫(kù)提取程序直接提取字庫(kù),如圖2.12所示的為一種字模生成軟件,軟件打開(kāi)后輸入漢字,點(diǎn)擊“檢取”后,十六進(jìn)制數(shù)據(jù)漢字代碼即可以自動(dòng)生成,把我們需要的豎排數(shù)據(jù)復(fù)制到我們的程序即可。</p><p>  圖3.13 漢字字模生成軟件</p><p>  3.4.2 點(diǎn)陣的流動(dòng)顯示</p><p&g

75、t;  以下以16×16點(diǎn)陣為例介紹點(diǎn)陣的移動(dòng)。要顯示一個(gè)字符,該字符的點(diǎn)陣數(shù)據(jù)可以列向(縱向)16點(diǎn)組字,又可以行向(橫向)16點(diǎn)組字。無(wú)論哪一種組字方法,都既可以顯示字符的水平方向的移動(dòng),又可以顯示豎直方向的移動(dòng)。</p><p>  1.顯示字符的左右移動(dòng)</p><p>  (1)列掃描方式左移動(dòng):列向組字顯示字符水平方向的移動(dòng)(左滾動(dòng))</p><p

76、><b>  在這里有兩個(gè)方法:</b></p><p>  方法1:延長(zhǎng)數(shù)組法。將原來(lái)字符點(diǎn)陣數(shù)組的16個(gè)數(shù)據(jù)重復(fù)一遍延長(zhǎng),點(diǎn)陣數(shù)組的數(shù)據(jù)個(gè)數(shù)為32個(gè)。每掃描儀幀取8個(gè)數(shù)據(jù)顯示,下一幀取數(shù)要在數(shù)組中后移一個(gè)數(shù)取數(shù)。循環(huán)一遍掃16幀。可以假想有兩塊16×16的點(diǎn)陣模塊(共32幀)水平平行排列,用一個(gè)恰好能罩住8列點(diǎn)陣的中空方框去罩這個(gè)點(diǎn)陣,第1(第1幀)罩住最左邊數(shù)起第一列開(kāi)

77、始的16列,就掃描顯示這16列;第2次(第2幀)使方框右移一列,罩住做左邊數(shù)起第2列開(kāi)始的16列,就掃描顯示這16列;······;這樣每掃描完一幀使方框右移一列,最后第16次(第16幀)時(shí),罩住左邊數(shù)起的第16列開(kāi)始的16列,就掃描顯示這16列。如此完成16幀畫(huà)面的掃描顯示,也就完成了整個(gè)一次移動(dòng)循環(huán)掃描、之后反復(fù)循環(huán),即可呈現(xiàn)顯示字符沿水平向左移動(dòng)的圖像,如圖3.14所示。

78、</p><p>  圖3.14 方框圖法左右移動(dòng)示意圖</p><p>  因?yàn)槭橇邢蚪M字(列掃描方式,點(diǎn)陣數(shù)據(jù)為行碼,上邊為地位下面為高位),希望顯示移動(dòng)的一個(gè)字符,第1次掃描從行碼的點(diǎn)陣數(shù)組中取第1~16個(gè)數(shù)據(jù),送行碼輸出口,對(duì)應(yīng)于這8個(gè)數(shù)據(jù),同時(shí)用列碼輸出口輸出列碼,分別控制第1~16列。掃描完前16個(gè)數(shù)據(jù)之后,第2次掃描從點(diǎn)陣數(shù)組中取第2~14個(gè)數(shù)據(jù)(第17個(gè)數(shù)據(jù)與地1個(gè)數(shù)據(jù)同)

79、,送行碼輸出口,對(duì)應(yīng)于這16個(gè)數(shù)據(jù),同時(shí)用列碼輸出口輸出列碼,仍分別控制掃地1~16列。第3次掃描從點(diǎn)陣數(shù)組中取第3~18個(gè)數(shù)據(jù)(第18個(gè)數(shù)據(jù)碼與地2個(gè)數(shù)據(jù)碼相同)掃描······;如此實(shí)現(xiàn)字符向左移動(dòng)。</p><p>  以上完成一個(gè)圖形移動(dòng)的方法,也可以看成是移動(dòng)16個(gè)不同的字形。如圖2.13所示,首先掃描第一個(gè)字型,同樣是16行,16次掃描,16

80、次顯示;完成一個(gè)字型的掃描以后,再掃描第二個(gè)字型;完成第二個(gè)字型的掃描之后,再掃描第三個(gè)字型······依此類(lèi)推,即可產(chǎn)生該文字的左移的感覺(jué)。</p><p>  圖3.15字形法左右移動(dòng)示意圖</p><p>  假設(shè)如果原本某個(gè)漢字的字型(第一個(gè)字型),其編碼為:</p><p>  00H,10H,2

81、0H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H;</p><p>  第二個(gè)字型的編碼為:</p><p>  10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H, 00H,</p><p>  也就是把第一個(gè)字型的編

82、碼中,第1行顯示數(shù)據(jù),變?yōu)榈?行顯示數(shù)據(jù);第2行顯示數(shù)據(jù),變成第3行顯示數(shù)據(jù);第3行顯示數(shù)據(jù),變成第4行顯示數(shù)據(jù);第4行顯示數(shù)據(jù),變成第5行顯示數(shù)據(jù)······以此類(lèi)推。</p><p>  當(dāng)?shù)谝粋€(gè)字型掃描顯示完成之后,就進(jìn)行這樣的動(dòng)作調(diào)整,以產(chǎn)生第二個(gè)字型的編碼。同樣的,當(dāng)?shù)诙€(gè)字型掃描完成之后,就進(jìn)行這樣的調(diào)整動(dòng)作,以產(chǎn)生第三個(gè)字型的編碼。這個(gè)調(diào)整

83、動(dòng)作時(shí)先將16個(gè)編碼根據(jù)序填入存儲(chǔ)器,例如第1行編碼存入20H,第二行編碼存入21H······要進(jìn)行左移調(diào)整時(shí),則先將20H地址的數(shù)據(jù)轉(zhuǎn)移到36H地址,再將21 H地址的數(shù)據(jù)轉(zhuǎn)移到20 H地址,將22 H地址的數(shù)據(jù)轉(zhuǎn)移到21 H地址,將23 H地址的數(shù)據(jù)轉(zhuǎn)移到22 H地址,將24 H地址的數(shù)據(jù)轉(zhuǎn)移到23 H地址,將25 H地址的數(shù)據(jù)轉(zhuǎn)移到24 H地址,將26 H地址的數(shù)據(jù)轉(zhuǎn)移

84、到25 H地址,將27 H地址的數(shù)據(jù)轉(zhuǎn)移到26 H地址,將28 H地址的數(shù)據(jù)轉(zhuǎn)移到27H地址······</p><p>  方法2:數(shù)組數(shù)據(jù)“循環(huán)左移法” (適合用C語(yǔ)言編寫(xiě),在此僅作了解)。注意,不是把二進(jìn)制數(shù)據(jù)按位循環(huán)左移,而是把數(shù)組中的數(shù)據(jù)按其在數(shù)組中的位置循環(huán)左移。具體的方法入下。</p><p>  原字符點(diǎn)陣數(shù)組中的

85、16個(gè)數(shù)據(jù)不延長(zhǎng),但下一幀取的16個(gè)數(shù)據(jù),是把上一幀的16個(gè)數(shù)據(jù)的位置(先后順序)“循環(huán)左移”一次,即原來(lái)第2個(gè)移到第1個(gè),原來(lái)第3個(gè)移到第2個(gè)······原來(lái)第1個(gè)移到第16個(gè)。實(shí)現(xiàn)數(shù)組數(shù)據(jù)循環(huán)左移的方法有:第一,遍一個(gè)“數(shù)組數(shù)據(jù)循環(huán)左移子程序”,該子程序每執(zhí)行一次可把數(shù)組中的額數(shù)據(jù)循環(huán)左移一次,主程序中先調(diào)用一次該子程序,時(shí)數(shù)組中的數(shù)據(jù)循環(huán)左移這一次,然后再?gòu)臄?shù)組中取數(shù)據(jù)顯

86、示。當(dāng)數(shù)組中的額數(shù)據(jù)個(gè)數(shù)較多時(shí),片內(nèi)RAM將不夠大,必須將數(shù)組定義在片外RAM中。第二,不用子程序,而是用變量判斷控制實(shí)現(xiàn)數(shù)組數(shù)據(jù)的循環(huán)左移。</p><p>  (2) 行掃描方式左移:行向組字顯示字符水平方向的左移。如果是行向組字(行掃描方式,點(diǎn)陣數(shù)據(jù)為列碼,左邊為敵位右邊為高位),希望顯示向左移動(dòng)的一個(gè)字符,第1次掃描從列碼的點(diǎn)陣數(shù)組中取第1~16個(gè)數(shù)據(jù),送到列碼輸出口,對(duì)應(yīng)的8個(gè)數(shù)據(jù),同時(shí)用行碼輸出口輸出

87、行碼,分別控制掃描第1~16行。掃描完成這16個(gè)數(shù)據(jù)之后,第2次掃描的第16個(gè)數(shù)據(jù),應(yīng)將原來(lái)第1次掃描的16列碼每一個(gè)都循環(huán)右移一位(如果是顯示右移則應(yīng)循環(huán)左移),再進(jìn)行掃描。如此,每進(jìn)行下一次掃描,把上一次掃描的16個(gè)列碼都循環(huán)右移一位,再進(jìn)行掃描。</p><p>  數(shù)據(jù)的右移與數(shù)據(jù)的左移相似,只是取碼的順序相反而已,在此就不再贅述。</p><p><b>  2.?dāng)?shù)據(jù)的

88、上下移動(dòng)</b></p><p>  (1)列掃描方式向上移動(dòng)</p><p>  列向組字顯示字符豎直方向的移動(dòng)。若是列向組字,希望顯示向上移動(dòng)一個(gè)字符,第1次掃描從行碼的點(diǎn)陣數(shù)組中取第1~16個(gè)數(shù)據(jù),送行碼輸出口,對(duì)應(yīng)于這16個(gè)數(shù)據(jù),同時(shí)用列碼輸出口輸出列碼,分別控制掃描第1~16列。由于是列向組字(上高下低),掃描完成這16個(gè)數(shù)據(jù)后,第2次掃描的16個(gè)數(shù)據(jù),應(yīng)將原來(lái)的第1

89、次掃描的16個(gè)行碼每一個(gè)都循環(huán)右移一位,使顯示的點(diǎn)都上移一行(如果是顯示向下滾動(dòng)則應(yīng)循環(huán)左移),再進(jìn)行掃描。如此,每進(jìn)行下一次的掃描,把上一次的16個(gè)行碼都循環(huán)右移一位,再進(jìn)行掃描就實(shí)現(xiàn)了數(shù)據(jù)的向上移動(dòng)。</p><p>  也可以用字型的方法容易理解,以下的16×16的LED顯示一個(gè)字是8個(gè)字型,首先掃描的而是第一個(gè)字型,同樣是16行,16列掃描,16次顯示;完成一個(gè)字型后,再掃描第二個(gè)字型;完成第二

90、個(gè)字型后,再掃描第三個(gè)字型······以此類(lèi)推,即可產(chǎn)生該文字向上移動(dòng)的感覺(jué)</p><p>  當(dāng)把第一個(gè)字型編碼中,每行顯示的數(shù)據(jù)都右移一位,以產(chǎn)生第二個(gè)字型編碼,即可產(chǎn)生字符向上滾動(dòng)的感覺(jué)。</p><p>  當(dāng)?shù)谝粋€(gè)字符掃描完成后,就進(jìn)行這樣的調(diào)整動(dòng)作,以產(chǎn)生第二個(gè)字型的編碼。同樣的,當(dāng)?shù)诙€(gè)字型完成之后,就進(jìn)行這樣的調(diào)

91、整動(dòng)作,以產(chǎn)生第三個(gè)字型的編碼。調(diào)整的動(dòng)作是先將8個(gè)編碼根據(jù)序填入儲(chǔ)存器,例如第1行編碼存入20地址,第2行編碼存入21地址······要進(jìn)行上移調(diào)整時(shí),則從20地址數(shù)據(jù)開(kāi)始,每筆數(shù)據(jù)都右移一位即可。 </p><p>  下圖3.16僅以字型移動(dòng)的方法畫(huà)圖。

92、

93、 </p

94、><p>  圖3.16 字形法上下移動(dòng)示意圖</p><p>  (2)行掃描方式上下移動(dòng)</p><p>  行向組字顯示字符豎直方向的移動(dòng)</p><p>  方法1:延長(zhǎng)數(shù)組法。如果是行向組字,希望顯示向上移動(dòng)的一個(gè)字符,第1次掃描從列碼的點(diǎn)陣數(shù)組中取第1~16個(gè)數(shù)據(jù),送列碼輸出口,對(duì)應(yīng)于這8個(gè)數(shù)據(jù),同時(shí)用行碼輸出口輸出行碼,分別控制掃描

95、第1~16行。第2次掃描從點(diǎn)陣數(shù)組中取第2~17個(gè)額數(shù)據(jù)(第17個(gè)數(shù)據(jù)與地1個(gè)數(shù)據(jù)同),分別送列碼輸出口,對(duì)應(yīng)于這16個(gè)數(shù)據(jù),同時(shí)用行碼輸出口輸出行碼,仍分別控制地1~16行。第3次掃描從點(diǎn)陣數(shù)組中取第3~18個(gè)數(shù)據(jù)(第18個(gè)數(shù)據(jù)與地2個(gè)數(shù)據(jù)同)掃描;······如此就實(shí)現(xiàn)了字符的向上移動(dòng)。</p><p>  方法2:數(shù)組數(shù)據(jù)“循環(huán)左移法”。實(shí)現(xiàn)數(shù)組數(shù)

96、據(jù)循環(huán)左移的方法與上類(lèi)似。也有:用數(shù)組數(shù)據(jù)循環(huán)左移子程序;不用子程序,而是用變量判斷控制實(shí)現(xiàn)數(shù)組數(shù)據(jù)的循環(huán)左移。</p><p>  3.5電子發(fā)聲電路設(shè)計(jì)</p><p>  音調(diào)是由不同的頻率產(chǎn)生的,而每一個(gè)音調(diào)都是由一個(gè)音符和一個(gè)節(jié)拍組成,音符決定該音調(diào)的高低,節(jié)拍則決定了該音調(diào)是多少拍。因此,一個(gè)音調(diào)是由兩個(gè)字節(jié)組成的。根據(jù)音符字節(jié) 產(chǎn)生該大小次數(shù)的延時(shí),聲音輸出口取反,就可以得到

97、該音調(diào)的高低音。根據(jù)設(shè)置單位節(jié)拍的延時(shí)大小,可以控制音樂(lè)演唱速度。</p><p>  因此算法很簡(jiǎn)單:定義單片機(jī)的一個(gè)I/O端腳為聲音輸出口,在規(guī)定的節(jié)拍內(nèi),根據(jù)音符字節(jié)的大小產(chǎn)生延時(shí),將聲音輸出口不斷的置高置低(即取反),就可以得到該音調(diào)。只要選取合適的單位節(jié)拍延時(shí),就可以輸出動(dòng)聽(tīng)的音樂(lè)。</p><p>  圖3.17即為電子發(fā)聲的電路:</p><p>  

98、圖3.17 電子發(fā)聲電路</p><p><b>  3.6譯碼電路設(shè)計(jì)</b></p><p>  74HC154 4線(xiàn)-16 線(xiàn)譯碼器</p><p>  原理:這種單片4 線(xiàn)—16 線(xiàn)譯碼器非常適合用于高性能存儲(chǔ)器的譯碼器。當(dāng)兩個(gè)選通輸入G1 和G2 為低時(shí), 它可將4 個(gè)二進(jìn)制編碼的輸入譯成16 個(gè)互相獨(dú)立的輸出之一。實(shí)現(xiàn)解調(diào)功能的辦法

99、是:用4 個(gè)輸入線(xiàn)寫(xiě)出輸出線(xiàn)的地址,使得在一個(gè)選通輸入為低時(shí)數(shù)據(jù)通過(guò)另一個(gè)選通輸入。當(dāng)任何一個(gè)選通輸入是高時(shí),所有輸出都為高。 </p><p>  圖3.18為 74HC154的真值表,其中H=高電平 L=低電平 ×=任意:</p><p>  圖3.18 74HC154的真值表</p><p>  圖3.19為譯碼電路的電路圖:</p>

100、<p>  圖3.19 譯碼電路電路圖</p><p>  圖3.20為74HC154引腳功能圖及邏輯圖:</p><p>  圖3.20 74HC154引腳功能圖及邏輯圖</p><p><b>  3.7驅(qū)動(dòng)電路設(shè)計(jì)</b></p><p>  74LS245是8路3態(tài) 雙向緩沖驅(qū)動(dòng),也叫做總線(xiàn)驅(qū)動(dòng)門(mén)電路或

101、線(xiàn)驅(qū)動(dòng)。主要使用在數(shù)據(jù)的雙向緩沖,原來(lái)常見(jiàn)于51的數(shù)據(jù)接口電路,比如,早期245內(nèi)部結(jié)構(gòu)及真值表電路中,擴(kuò)展了很多的8255/8155/8251/8253/573等芯片的時(shí)候,擔(dān)心8031的數(shù)據(jù)驅(qū)動(dòng)能力不足,就使用一片245作為數(shù)據(jù)緩沖電路,增強(qiáng)驅(qū)動(dòng)能力;也常見(jiàn)與ISA卡的接口電路。</p><p>  74HC245結(jié)構(gòu)真值表及引腳圖如圖3.21所示:</p><p>  圖3.21 7

102、4HC245結(jié)構(gòu)真值表及引腳圖</p><p>  驅(qū)動(dòng)電路圖如下圖3.22、3.23所示:</p><p>  圖3.22 驅(qū)動(dòng)電路圖</p><p>  圖3.23 驅(qū)動(dòng)電路圖</p><p>  前面在漢字顯示原理中已經(jīng)大概提到了本設(shè)計(jì)的I/O口的安排,這里總結(jié)一下。本設(shè)計(jì)的LED顯示才用的是逐行掃描方式。其中,P0口控制點(diǎn)陣左半部分的

103、數(shù)據(jù)輸出,P2口控制點(diǎn)陣右半部分的數(shù)據(jù)。行掃描使用74HC154譯碼,低電平選通。為了增強(qiáng)驅(qū)動(dòng)能力以及保證掃描信號(hào)的一致性,一共使用了4片74HC245作為數(shù)據(jù)輸入輸出的緩沖器,并且,負(fù)責(zé)列信號(hào)的兩個(gè)74HC245,我們?nèi)匀辉黾恿藘善?30歐姆的排阻作為上拉電阻,保證其驅(qū)動(dòng)能力,使點(diǎn)陣亮度充足,均勻。</p><p>  4 程序設(shè)計(jì)與調(diào)試</p><p><b>  4.1程

104、序流程圖</b></p><p>  程序流程圖如圖4.1所示</p><p>  圖4.1 程序流程圖</p><p>  LED顯示內(nèi)容我們具體設(shè)計(jì)分為兩個(gè)部分,即動(dòng)畫(huà)部分以及文字流動(dòng)顯示部分。動(dòng)畫(huà)在開(kāi)機(jī)的時(shí)候立即播放,作為系統(tǒng)的開(kāi)機(jī)動(dòng)畫(huà),存放于zimu.h文件中的二維數(shù)組l_ani[80][32]。它一共有80幀的圖像,采用的是列行式取模,使用程序

105、內(nèi)自定義函數(shù)dsp_animation()單獨(dú)用于動(dòng)畫(huà)的播放。內(nèi)容大致為不斷變換的“回”字形圖像和一個(gè)踢球的小人。動(dòng)畫(huà)的圖像我們是使用畫(huà)圖板一幀一幀制作出來(lái)的,然后保存為二值BMP圖像使用取模軟件轉(zhuǎn)換為數(shù)組。同時(shí),zimu.h文件中存放的剩下的數(shù)組便是文字流動(dòng)顯示部分的數(shù)據(jù)了。文字部分我們使用的是逐行式取模,方便流動(dòng)顯示中算法的設(shè)計(jì),自定義函數(shù)dsp_zimu()便是用于文字的流動(dòng)顯示。文件中,每個(gè)數(shù)組存放的都是一段完整的內(nèi)容,比如tx

106、t_welcome[]數(shù)組是存放的就是歡迎界面的文字;前綴為txt_music_的數(shù)組中,存放的是歌曲的名字,播放歌曲之前自動(dòng)顯示。</p><p>  4.2 LED點(diǎn)陣顯示程序</p><p>  此函數(shù)位于display.h中,用于LED顯示的延遲,保證其有足夠的亮度。</p><p>  void delay_led(uchar x)</p>

107、<p><b>  {</b></p><p>  uchar aa,bb;</p><p>  for(aa=x;aa>0;aa--)</p><p>  for(bb=110;bb>0;bb--);</p><p><b>  }</b></p><p&

108、gt;  此函數(shù)位于display.h中,為顯示動(dòng)畫(huà)的函數(shù),zm數(shù)組由位于zimu.h中的數(shù)組傳入指針。</p><p>  void dsp_animation(uchar code zm[80][32])</p><p><b>  {</b></p><p>  uchar a,b,c;</p><p>  for

109、(c=0;c<80;c++)</p><p>  for(b=0;b<16;b++)//控制顯示速度</p><p>  for(a=0;a<16;a++)</p><p><b>  {</b></p><p>  P0=zm[c][a];</p><p>  P2=zm[

110、c][a+16];</p><p><b>  P1=h[a];</b></p><p>  delay_led(1);</p><p>  clear = 1;</p><p>  delay_led(1);</p><p>  此函數(shù)位于display.h中,為顯示字符的函數(shù),zm數(shù)組由位于z

111、imu.h中的數(shù)組傳入指針。</p><p>  同時(shí) uint bb在參數(shù)中使用sizeof()函數(shù)傳入數(shù)組大小,保證不同長(zhǎng)度的語(yǔ)句正常完整的顯示。</p><p>  void dsp_zimu(uchar code zm[],uint bb)</p><p><b>  {</b></p><p>  uchar

112、a,c,d;</p><p><b>  uint b;</b></p><p>  for(b=0;b<bb;b+=2)</p><p>  for(d=0;d<5;d++) //控制移動(dòng)速度</p><p>  for(a=0;a<32;a+=2) //循環(huán)取一個(gè)屏幕的字模</p>

113、<p><b>  {</b></p><p>  P0=zm[a+b];</p><p>  P2=zm[a+b+1];</p><p>  P1=h[a/2];</p><p><b>  //a++;</b></p><p>  delay_led(1);&

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論