1.設計目的和要求1.1 設計目的(1) 通過設計,查閱相關資料,掌握如何利用單片機設計產品,同時了解與單片機有關的軟件模擬器的使用及取字模塊軟件的使用方法。
(2) 通過本課程設計鞏固并擴展單片機課程的基本概念、基本理論、分析方法和實現方法。結合Proteus和Keil軟件等,學習單片機產品的設計方法,有效地將理論和實際緊密結合,培養創新思維和設計能力,增強軟件編程實現能力和解決實際問題的能力。
(3) 學習Proteus軟件,掌握Proteus中各種芯片的功能以及模擬。由于Proteus提供了實驗室無法相比的大量的元器件庫,提供了修改電路設計的靈活性、提供了實驗室在數量、質量上難以相比的虛擬儀器、儀表,因而也提供了培養實踐精神、創造精神的平臺。
1.2 設計要求(1) 利用I/O口產生一定頻率的方波,驅動蜂鳴器,發出不同的音調,從而演樂曲(內存四首樂曲);
(2) 用LCD顯示歌曲序號和歌曲名字;
(3) 可通過功能鍵進行選擇歌曲和暫停的操作。
2.硬件電路設計2.1總體方案設計圖1 總體方案圖
以AT89C51為核心,通過單片機的定時器產生一定長度的方波,方波脈沖驅動蜂鳴器發聲。要產生音頻脈沖,只需算出某一音頻的周期(1/音頻),然后取半周期的時間定時。利用定時器計時這個半周期時間,每當計時到后就將輸出脈沖的I/O反相,然后重復計時此半周期時間再對I/O口反相,就可在I/O腳上得到此頻率的脈沖。當鍵盤有鍵按下時,判斷鍵值,啟動計數器T0,產生一定頻率的脈沖,驅動蜂鳴器,放出樂曲。同時在LCD顯示歌曲序號和歌曲名稱。
2.2器件選擇2.2.1 單片機的選擇單片機型號的選擇是根據控制系統的目標、功能、可靠性、性價比、精度和速度等來決定的。根據本課題的實際情況,單片機型號的選擇主要從以下兩點考慮;一是要有較強的抗干擾能力。二是要有較高的性價比。由于51系列在我國使用最廣,且該系列的資料和能夠兼容的外圍芯片也比較多,特別是ATMEL公司89C系列單片機,其典型產品AT89C51單片機,具有較高的性能價格比。故本系統采用ATMEL公司生產的AT89C51單片機作為電子音樂盒的核心部件,AT89C51是美國ATMEL公司生產的低電壓,高性能CMOS8位單片機,片內含4k bytes的可反復擦寫的只讀程序存儲器(PEROM)和128 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器(CPU)和Flash存儲單元,功能強大AT89C51單片機可提供許多高性價比的應用場合,可靈活應用于各種控制領域。
2.2.2 LCD1602簡介LCD液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規模集成電路直接驅動、易于實現全彩色顯示的特點,目前已經被廣泛應用在便攜式電腦、數字攝像機、PDA移動通信工具等眾多領域。
字符型液晶顯示模塊是一種專門用于顯示字母、數字、符號等點陣式LCD,目前常用16×1,16×2,20×2和40×2行等的模塊。LCD1602分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別,兩者尺寸差別如下圖2所示:
圖2 LCD尺寸圖
1602LCD主要技術參數:
顯示容量:16×2個字符;
芯片工作電壓:4.5—5.5V;
工作電流:2.0mA(5.0V);
模塊最佳工作電壓:5.0V;
字符尺寸:2.95×4.35(W×H)mm。
引腳功能說明
LCD1602采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表1所示。
表1 引腳接口說明表
編號 | 符號 | 引腳說明 | 編號 | 符號 | 引腳說明 |
1 | VSS | 電源地 | 9 | D2 | 數據 |
2 | VDD | 電源正極 | 10 | D3 | 數據 |
3 | VL | 液晶顯示偏壓 | 11 | D4 | 數據 |
4 | RS | 數據/命令選擇 | 12 | D5 | 數據 |
5 | R/W | 讀/寫選擇 | 13 | D6 | 數據 |
6 | E | 使能信號 | 14 | D7 | 數據 |
7 | D0 | 數據 | 15 | BLA | 背光源正極 |
8 | D1 | 數據 | 16 | BLK | 背光源負極 |
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。
第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。
第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。
第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。
第7~14腳:D0~D7為8位雙向數據線。
第15腳:背光源正極。
第16腳:背光源負極。
1602液晶模塊內部的控制器共有11條控制指令,如表2所示:
表2 控制命令表
序號 | 指令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 清顯示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
2 | 光標返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * |
3 | 置輸入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S |
4 | 顯示開/關控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B |
5 | 光標或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * |
6 | 置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * |
7 | 置字符發生存貯器地址 | 0 | 0 | 0 | 1 | 字符發生存貯器地址 |
8 | 置數據存貯器地址 | 0 | 0 | 1 | 顯示數據存貯器地址 |
9 | 讀忙標志或地址 | 0 | 1 | BF | 計數器地址 |
10 | 寫數到CGRAM或DDRAM) | 1 | 0 | 要寫的數據內容 |
11 | 從CGRAM或DDRAM讀數 | 1 | 1 | 讀出的數據內容 |
1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現的。(說明:1為高電平、0為低電平)
指令1:清顯示,指令碼01H,光標復位到地址00H位置。
指令2:光標復位,光標返回到地址00H。
指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。
指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。
指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。
指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。
指令7:字符發生器RAM地址設置。
指令8:DDRAM地址設置。
指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數據,如果為低電平表示不忙。
指令10:寫數據。
指令11:讀數據。
與HD44780相兼容的芯片時序表如下:
表 3 芯片時序圖
讀狀態 | 輸入 | RS=L,R/W=H,E=H | 輸出 | D0—D7=狀態字 |
寫指令 | 輸入 | RS=L,R/W=L,D0—D7=指令碼,E=高脈沖 | 輸出 | 無 |
讀數據 | 輸入 | RS=H,R/W=H,E=H | 輸出 | D0—D7=數據 |
寫數據 | 輸入 | RS=H,R/W=L,D0—D7=數據,E=高脈沖 | 輸出 | 無 |
2.3 單元電路設計2.3.1晶振電路單片機需要一個時間基準來為各種操作提供秩序,此電路叫時鐘電路,采用不同的接線方式可以獲得不同時鐘電路,有內部時鐘電路和外部時鐘電路,如圖4.3所示,外部時鐘電路會使電路復雜,故采用的是內部時鐘電路。時鐘電路在單片機的外部通過XTAL1,XTAL2這兩個引腳跨接晶體振蕩器和微調電容,構成穩定的自激振蕩器.本系統采用的為12MHz的晶振,一個機器周期為1us,C1,C2為30uF。
2.3.2復位電路復位電路的基本功能是:系統上電時提供復位信號,直至系統電源穩定后,撤銷復位信號。為可靠起見,電源穩定后還要經一定的延時才撤銷復位信號,以防電源開關或電源插頭分-合過程中引起的抖動而影響復位。
復位電路分為上電自動復位和按鍵手動復位,如圖3所示。RST引腳是復位信號的輸入端,復位信號是高電平有效.這次采用的是手動復位,復位通過電容C3,C4和電阻R1,R2來實現,按鍵手動復位是圖中復位鍵來實現的。

圖 3 晶振與復位電路
2.3.3 鍵盤部分鍵盤是由一組按壓式或觸摸式開關構成的陣列,是一種常用的輸入設備。鍵盤可分為編碼式鍵盤和非編碼式鍵盤兩種。
1.編碼鍵盤通過硬件電路產生被按按鍵的鍵碼,這種鍵盤所需程序簡單,但硬件電路復雜、價格昂貴通常不被單片機系統采用。
2.非編碼鍵盤常用一些按鍵排列成行列矩陣,其硬件邏輯與按鍵編碼不存在嚴格的對應關系,而要由所用的程序來決定。非編碼鍵盤的硬件接口簡單,但是要占用較多的CPU時間,通常采用可編程鍵盤管理芯片來克服這個缺點。本設計使用兩種按鍵,一種是按鍵式非編碼鍵盤和輕觸式非編碼開關。

圖 4 鍵盤電路
2.3.4 LCD顯示電路LCD的8根數據線與P1口相連,RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。R/W為讀寫信號線,RS與P2.0相連,由P2.0控制LCD的寫指令或寫數據操作。R/W與P2.1相連,由P2.1決定是讀操作還是寫操作。E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。E端與P2.2相連。
圖5 LCD顯示電路
2.3.5 蜂鳴器部分一般所指的蜂鳴器是以壓電陶瓷為主要元件的。壓電陶瓷是一類有將壓力與電流相互轉換能力的特殊陶瓷。這種能力緣于其特殊的晶體結構。當壓電陶瓷在一定方向上受到一個壓力使其晶體結構發生形變時,它就會在內部產生一個電流,并且電流的變化與壓力的變化密切相關。反之亦然。所以利用這一特性,在壓電陶瓷上通過一定頻率的電流,就會引起壓電陶瓷微小形變,這一形變帶動空氣發生振動,如果頻率適當,就可以被人耳所聽見,也就是產生了蜂鳴聲。
由于蜂鳴器的工作電流一般比較大,以致于單片機的I/O 口是無法直接驅動的,所以要利用放大電路來驅動,一般使用三極管來放大電流就可以了。

圖6 蜂鳴器電路
2.4整體電路1