第一篇:單片機(jī)課程設(shè)計(jì)大全
基于單片機(jī)的計(jì)算器設(shè)計(jì)、基于單片機(jī)的密碼鎖設(shè)計(jì)、基于單片機(jī)的電機(jī)控制、基于單片機(jī)的交通燈設(shè)計(jì)、基于單片機(jī)的八路搶答器設(shè)計(jì)、基于單片機(jī)的溫度檢測設(shè)計(jì)、基于單片機(jī)的溫濕度檢測設(shè)計(jì)、基于單片機(jī)的LED顯示屏、基于單片機(jī)的煙霧報(bào)警設(shè)計(jì)、基于單片機(jī)的液位檢測設(shè)計(jì)基于單片機(jī)的智能小車設(shè)計(jì)、基于單片機(jī)的氣壓計(jì)設(shè)計(jì)、基于單片機(jī)的多功能電子時(shí)鐘設(shè)計(jì)、基于單片機(jī)的電子秒表設(shè)計(jì)、基于單片機(jī)的電壓表設(shè)計(jì)、基于單片機(jī)的波形發(fā)生器設(shè)計(jì)、電機(jī)驅(qū)動(dòng)模塊、基于單片機(jī)的頻率計(jì)設(shè)計(jì)、基于單片機(jī)的電子稱設(shè)計(jì)、基于單片機(jī)的電子調(diào)光燈、基于單片機(jī)的智能風(fēng)扇、基于單片機(jī)的紅外遙控設(shè)計(jì)、基于單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)、基于單片機(jī)的調(diào)速設(shè)計(jì)、基于單片機(jī)的超聲波測距設(shè)計(jì)、基于單片機(jī)的電子琴設(shè)計(jì)、基于單片機(jī)的風(fēng)力發(fā)電測試、基于單片機(jī)的智能充電器設(shè)計(jì)、基于單片機(jī)的小功率直流電機(jī)控制、基于單片機(jī)1602的萬年歷設(shè)計(jì)、基于單片機(jī)的無限溫度控制、、、、、、、更多單片機(jī)課程設(shè)計(jì)免費(fèi)下載、機(jī)不可失失不再來:http:///reg/index.asp?id=7586
第二篇:單片機(jī)課程設(shè)計(jì)
單片機(jī)課程設(shè)計(jì)
課題: 簡易電子琴設(shè)計(jì)
學(xué)
院:
電氣與信息工程學(xué)院 專
業(yè):
電子信息工程 姓
名:
李琳琳 學(xué)
號(hào):
093411106
指導(dǎo)老師:
田巍
河南城建學(xué)院
2014年
01 月
01 日
第三篇:單片機(jī)課程設(shè)計(jì)
課 程 設(shè) 計(jì)
設(shè)計(jì)題目: 基于單片機(jī)的8*8點(diǎn)陣顯示數(shù)字設(shè)計(jì)
學(xué)生姓名: 指導(dǎo)教師: 二級(jí)學(xué)院: 專
業(yè): 班
級(jí): 學(xué)
號(hào):
目 錄
摘要??????????????????????????Ⅱ 1 方案選擇及總體設(shè)計(jì)???????????????????1 1.1方案確定?????????????????????1 1.1.1功能要求????????????????????1 1.1.2方案確定????????????????????1 1.2器件選擇?????????????????????1 2 控制系統(tǒng)設(shè)計(jì)??????????????????????2 2.1 控制系統(tǒng)硬件設(shè)計(jì)?????????????????2 2.1.1整體模塊設(shè)計(jì)??????????????????2 2.1.2單片機(jī)AT89C51?????????????????2 2.1.3單片機(jī)最小系統(tǒng)設(shè)計(jì)???????????????5 2.1.3.1晶振電路設(shè)計(jì)?????????????????5 2.1.3.2復(fù)位電路設(shè)計(jì)?????????????????5 2.1.4驅(qū)動(dòng)電路設(shè)計(jì)??????????????????6 2.1.5LED點(diǎn)陣顯示設(shè)計(jì)????????????????9 2.2控制系統(tǒng)軟件設(shè)計(jì)?????????????????11 2.2.1軟件設(shè)計(jì)思想??????????????????11 2.2.2主程序流程圖??????????????????11 2.2.3子程序流程圖??????????????????13 3 系統(tǒng)仿真及調(diào)試????????????????????14 3.1系統(tǒng)調(diào)試?????????????????????14 3.2系統(tǒng)仿真?????????????????????14 3.2.1protrus軟件仿真????????????????14 3.2.2程序??????????????????????14 總結(jié)?????????????????????????^?17 參考文獻(xiàn)????????????????????????18
I
摘 要
現(xiàn)在市場上各類基于LED的顯示屏較多,但大部分產(chǎn)品為單一模式的LED顯示屏,其在顯示內(nèi)容的更換及顯示屏的重組等方面都存在不便之處。但隨著信息化社會(huì)的迅速發(fā)展,LED顯示屏正在向顯示內(nèi)容豐富、信息更改方便等方面發(fā)展。因此制作一款多功能的LED廣告顯示屏是非常有意義地。
LED驅(qū)動(dòng)顯示采用動(dòng)態(tài)掃描方法,動(dòng)態(tài)掃描方式是逐行輪流點(diǎn)亮,這樣掃描驅(qū)動(dòng)電路就可以實(shí)現(xiàn)多行的同名列共用一套列驅(qū)動(dòng)器。以8×8點(diǎn)陣為例,把所有同一行的發(fā)光管的陽極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽的接法),先送出對(duì)應(yīng)第1行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第1行使其燃亮一定的時(shí)間,然后熄滅;再送出第2行的數(shù)據(jù)并鎖存,然后選通第2行使其燃亮相同的時(shí)間,然后熄滅;第8行之后,又重新燃亮第1行,反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺暫留現(xiàn)象,就能看到顯示屏上穩(wěn)定的圖形。該方法能驅(qū)動(dòng)較多的LED,控制方式較靈活,而且節(jié)省單片機(jī)的資源。
本次課程設(shè)計(jì)的題目為8×8點(diǎn)陣數(shù)字顯示,設(shè)計(jì)的任務(wù)為使用單片機(jī)控制8×8的點(diǎn)陣顯示0到9的數(shù)字,不僅顯示清晰,并且每經(jīng)過一定時(shí)間,顯示的數(shù)字加一,從0 到 9 循環(huán)。以AT89C51單片機(jī)為核心,采用串行傳輸、動(dòng)態(tài)掃描技術(shù),制作一款模塊化LED多功能顯示屏。
在資料收集方面,主要是參考了《51單片機(jī)原理及應(yīng)用—基于Keil C與Proteus》一書,結(jié)合了一些網(wǎng)絡(luò)資料,以及一些集成塊的使用說明書。
在整個(gè)工作過程中,根據(jù)收集來的資料繪制出大概的原理圖,然后通過Proteus仿真,與此同時(shí)運(yùn)用Keil 編程,用Keil 與Proteus進(jìn)行聯(lián)調(diào),調(diào)試成功后確定了原理圖和控制程序。
II
第一章 方案選擇及總體設(shè)計(jì)
1.1 方案確定
1.1.1 功能要求
1、采用STC-51單片機(jī)作為微處理器。
2、設(shè)計(jì)一個(gè)8×8點(diǎn)陣LED數(shù)碼字符顯示器。
3、在目測條件下LED顯示屏各點(diǎn)亮度均勻、充足、穩(wěn)定、清晰無串?dāng)_。
4、動(dòng)態(tài)顯示“0——9”幾個(gè)字符。
1.1.2 方案確定
采用ST89C51單片機(jī)作為微處理器,將共陽極二極管用共陰型接法連接成8×8點(diǎn)陣LED數(shù)碼字符陣列,通過程序控制,采用動(dòng)態(tài)顯示,建立字符庫“0——9”。
1.2 器件選擇
微處理器采用ST89C51系列單片機(jī),ST89C51單片機(jī)是這幾年在我國非常流行的單片機(jī),是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)高性能單片機(jī),可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次,具有低功耗、高性能的特點(diǎn)。
AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。
第二章 控制系統(tǒng)設(shè)計(jì)
2.1控制系統(tǒng)硬件設(shè)計(jì)
2.1.1整體模塊設(shè)計(jì)
本設(shè)計(jì)行、列驅(qū)動(dòng)電路,顯示器電路,運(yùn)用單片機(jī)的智能化,系統(tǒng)的將每個(gè)功能電路模塊連接在一起,總體結(jié)構(gòu)設(shè)計(jì)如圖2-1所示。
點(diǎn)陣顯示器行驅(qū)動(dòng)電路PC上位機(jī)單片機(jī)8×8點(diǎn)陣LED顯示器電路點(diǎn)陣顯示器列驅(qū)動(dòng)電路
圖2-1 硬件系統(tǒng)框圖
此次需要實(shí)現(xiàn)的功能是利用一個(gè)ST89C51,一個(gè)8×8LED點(diǎn)陣,動(dòng)態(tài)顯示“0——9”10個(gè)字,采用PC上位機(jī)驅(qū)動(dòng)顯示電路。
2.1.2 單片機(jī)AT89C51 AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn), 兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C51單片機(jī)能提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。
AT89C51單片機(jī)引腳圖如圖2-2所示。
圖2-2 AT89C51引腳圖
AT89C51管腳說明: VCC:供電電壓。GND:接地。
P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1 口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行
存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。
P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。
P3口也可作為AT89C51的一些特殊功能口,如下所示: P3口管腳
備選功能: P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)
P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。
ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。
/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。
/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:
來自反向振蕩器的輸出。
2.1.3 單片機(jī)最小系統(tǒng)設(shè)計(jì)
單片機(jī)的最小系統(tǒng)是能夠讓單片機(jī)工作的最小硬件電路。除了單片機(jī)外,最小系統(tǒng)還包括復(fù)位電路和時(shí)鐘電路。
復(fù)位電路:單片機(jī)的復(fù)位電路接在復(fù)位信號(hào)RST上,復(fù)位電路用于將單片機(jī)內(nèi)部電路的狀態(tài)恢復(fù)到初始值。需要復(fù)位時(shí)按下按鈕即可。
時(shí)鐘電路:時(shí)鐘電路為單片機(jī)工作提供基本時(shí)鐘。時(shí)鐘電路中包含一個(gè)晶體振蕩器,簡稱晶振,頻率范圍是1.2~12MHz。晶體振蕩頻率越高,系統(tǒng)的時(shí)鐘頻率也越高,單片機(jī)的運(yùn)行速度也就越快
ST89C51單片機(jī)最小系統(tǒng)電路由復(fù)位電路、晶振電路兩部分組成。2.1.3.1 晶振電路設(shè)計(jì)
ST89C52單片機(jī)芯片內(nèi)部設(shè)有一個(gè)由反向放大器構(gòu)成的振蕩器,XTAL1和XTAL2分別為振蕩電路的的輸入端和輸出端,時(shí)鐘可有內(nèi)部或外部生成,在XTAL1和XTAL2引腳上外接定時(shí)元件,內(nèi)部振蕩電路就會(huì)產(chǎn)生自激振蕩。系統(tǒng)采用的定時(shí)元件為石英晶體和電容組成的并聯(lián)諧振回路。晶振頻率采用12MHZ,C1、C2的電容值取30pF,電容的大小起頻率微調(diào)的作用。晶振電路圖如圖2-3所示。
C1XTAL130pFC2XTAL230pF圖2-3 晶振電路圖
X112MHZ
2.1.3.2 復(fù)位電路設(shè)計(jì)
ST89C51單片機(jī)在啟動(dòng)運(yùn)行時(shí)或者出現(xiàn)死機(jī)時(shí)需要復(fù)位,使CPU以及其他功能部件處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。單片機(jī)有多種復(fù)位方式,常用的復(fù)位操作有上電復(fù)位和手動(dòng)復(fù)位方式。本設(shè)計(jì)采用最簡單的上電復(fù)位方式,電路如圖2-4所示。上電復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的,復(fù)位電路產(chǎn)生的復(fù)位信號(hào)(高電平有效)由RST引腳送入到內(nèi)部的復(fù)位電路,對(duì)ST89C51單片機(jī)進(jìn)行復(fù)位,復(fù)位信號(hào)要持續(xù)兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘周期)以上,才能使ST89C51單片機(jī)可靠復(fù)位。當(dāng)上電時(shí),C1相當(dāng)于短路,有時(shí)碰到干擾時(shí)會(huì)造成錯(cuò)誤復(fù)位,可在復(fù)位端加個(gè)去耦電容,可以取得很好的效果。
ST89C51單片機(jī)復(fù)位電路如下圖所示:
VCCAT89C51VCCC510MF/25VRSTR94.7KVSSR24.7KVSSRSTR1C10MF/25VS5 RSTVCCAT89C51VCC
圖2-4 上電復(fù)位電路圖
圖2-5 按鍵電平復(fù)位電路圖
復(fù)位電路工作原理:
上電瞬間RST引腳的電位與VCC等電位,RST引腳為高電平,隨著電容C5充電電流的減少,RST引腳的電位不斷下降,可以保持RST引腳在為高電平的時(shí)間內(nèi)完成復(fù)位操作。
當(dāng)單片機(jī)已在運(yùn)行當(dāng)中時(shí),按下復(fù)位鍵S5后再松開,也能使RST引腳為一段時(shí)間的高電平,從而實(shí)現(xiàn)ST89C51單片機(jī)復(fù)位。
2.1.4 驅(qū)動(dòng)電路設(shè)計(jì)
驅(qū)動(dòng)電路圖如圖2-6所示。
圖2-6 驅(qū)動(dòng)電路圖
74LS245引腳圖如圖2-7所示。
圖2-7 74LS245引腳圖
引出端符號(hào): A A總線端
B B總線端
/G 三態(tài)允許端(低電平有效)DIR 方向控制端
74LS245是用來驅(qū)動(dòng)LED或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。
如果用89C51的P0口輸出到數(shù)碼管,那就要考慮到數(shù)碼管的亮度以及P0口帶負(fù)載的能力,當(dāng)89C51單片機(jī)的P0口總線負(fù)載達(dá)到或超過P0最大負(fù)載能力時(shí),必須接入74LS245等總線驅(qū)動(dòng)器。選用74LS245提高驅(qū)動(dòng)能力。P0口的輸出經(jīng)過74LS245提高驅(qū)動(dòng)后,輸出到數(shù)碼管顯示電路。
工作原理:
當(dāng)片選端/CE低電平有效時(shí),DIR=“0”,信號(hào)由B向A傳輸;(接收)DIR=“1”,信號(hào)由A向B傳輸;(發(fā)送)當(dāng)CE為高電平時(shí),A、B均為高阻態(tài)。
正向點(diǎn)亮一顆LED,至少也要10~20mA,若電流不夠大,則LED不夠大。而不管是ST89C51的I/O口,還是TTL、CMOS的輸出端,其高態(tài)輸出電流都不是很高,不過1~2mA而已。因此很難直接高態(tài)驅(qū)動(dòng)LED,這時(shí)候就需要額外的驅(qū)動(dòng)電路,通常有共陽型與共陰型LED陣列驅(qū)動(dòng)電路,本設(shè)計(jì)才用共陰型高態(tài)掃描信號(hào)驅(qū)動(dòng)電路。
共陰型LED陣列驅(qū)動(dòng)電路采用高態(tài)掃描,也就是任何時(shí)間只有一個(gè)高態(tài)信號(hào),其它則為低態(tài)。一行掃描完成后,再把高態(tài)信號(hào)轉(zhuǎn)化到近鄰的其他行,掃描信號(hào)接用一個(gè)反向驅(qū)動(dòng)器,ST89C51本身內(nèi)置一個(gè)反向驅(qū)動(dòng)器,本設(shè)計(jì)將ST89C51作為點(diǎn)矩陣顯示控制系統(tǒng)的控制核心,通過點(diǎn)矩陣實(shí)時(shí)顯示并移動(dòng)字符。
單片機(jī)的串口與行驅(qū)動(dòng)器相連,用來發(fā)送顯示數(shù)據(jù)信息。P3口與LED陣列的行引腳相連,送出數(shù)據(jù)、地址以及系統(tǒng)控制信號(hào)。輸出低態(tài)時(shí),最大可吸取0.5A,即500mA,若每個(gè)LED取30mA,7個(gè)LED同時(shí)點(diǎn)亮,需要210mA,完全滿足LED點(diǎn)亮的基本條件。
所要顯示的信號(hào)送入74LS245芯片,然后連接到LED陣列的列陣腳。對(duì)于高態(tài)的顯示信號(hào),將可提供其所連接LED的驅(qū)動(dòng)電流,而這個(gè)驅(qū)動(dòng)電流經(jīng)過LED到輸出端,形成正向回路,即可點(diǎn)亮該LED。其中每個(gè)晶體管任何時(shí)間只需負(fù)
責(zé)驅(qū)動(dòng)一個(gè)LED,所以選擇30mA射極電流的晶體管。驅(qū)動(dòng)電路如圖2-6所示。
2.1.5 LED點(diǎn)陣顯示設(shè)計(jì)
本設(shè)計(jì)采用ATMEL公司的AT89C51作矩陣顯示控制系統(tǒng)控制核心,12MHZ晶振,8?8點(diǎn)陣共陽LED顯示器。其中,P0口作為字符數(shù)據(jù)輸出口,P3口為字符顯示掃描輸出口,第31腳(EA)接電源,改變電阻(270×8)的大小可改變顯示字符的亮度,驅(qū)動(dòng)用74LS245芯片。
本設(shè)計(jì)LED矩陣顯示器電路選用8×8點(diǎn)陣模塊,系統(tǒng)由單片機(jī)控制。LED顯示屏是將發(fā)光二極管按行按列布置的,在掃描驅(qū)動(dòng)方式下可以按行掃描按列控制,也可以按列掃描按行控制。本文就是使用1塊8×8點(diǎn)陣,采用按列掃描按行控制控制方式,掃描順序自左向右,以滿足數(shù)字顯示的要求。8×8點(diǎn)陣LED結(jié)構(gòu)如圖2-8所示。
8×8點(diǎn)陣LEDabcdefgh12345678
圖2-8 LED數(shù)碼顯示管
8×8 點(diǎn)陣LED的工作原理:LED點(diǎn)陣的顯示方式是按顯示編碼的順序,一行一行地顯示。對(duì)于共陽型的點(diǎn)陣來說,當(dāng)某一點(diǎn)所在的行對(duì)應(yīng)高電平“1”并且其所在的列對(duì)應(yīng)低電平“0”的時(shí)候,這一點(diǎn)就會(huì)被點(diǎn)亮。將每一行的顯示時(shí)間進(jìn)行一定的延時(shí),由于人的視覺暫留現(xiàn)象,就會(huì)感覺到8行LED是在同時(shí)顯示的。若顯示的時(shí)間太短,則亮度不夠,若顯示的時(shí)間太長,將會(huì)感覺到閃爍。圖2-9為8×8點(diǎn)陣LED外觀及引腳圖,其等效電路如圖2-10所示,只要其對(duì)應(yīng)的X、Y軸順向偏壓,即可使LED發(fā)亮。例如如果想使左上角LED點(diǎn)亮,則Y0=1,X0=0即可。應(yīng)用時(shí)限流電阻可以放在X軸或Y軸。一個(gè)8×8點(diǎn)陣是由64個(gè)發(fā)光二極管按規(guī)律組成的,如圖2-10所示。圖中,行接高電平,列接低電平,發(fā)光二極管導(dǎo)通發(fā)光。
圖2-9 8×8點(diǎn)陣LED外觀及引腳圖
圖2-10 8×8點(diǎn)陣LED等效電路
8×8點(diǎn)陣數(shù)字顯示的編碼原理: 8×8點(diǎn)陣數(shù)字顯示主要應(yīng)用行掃描動(dòng)態(tài)顯示的方法實(shí)現(xiàn),如圖2-11所示,將行線依次置零,一次對(duì)列線編碼,有紅色填充部分為1,無填充部分為0。
圖2-11 8×8點(diǎn)陣數(shù)字顯示的編碼原理
如此可得到“0”的編碼為{0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00},同理可得到:
{0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00}
//1 {0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00}
//2 {0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00}
//3 {0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00}
//4 {0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00}
//5 {0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00}
//6 {0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00}
//7 {0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00}
//8 {0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00}
//9 2.2控制系統(tǒng)軟件設(shè)計(jì)
2.2.1 軟件設(shè)計(jì)思想
主程序先進(jìn)行設(shè)置中斷,并啟動(dòng),再進(jìn)行鍵盤掃描載入“0——9”字型,然后判斷一組字型是否掃描完,按不同情況進(jìn)行循環(huán)調(diào)用子程序。進(jìn)入子程序后,首先設(shè)置相應(yīng)的程序,反復(fù)調(diào)用顯示子程序,并在顯示過程中反復(fù)調(diào)用鍵盤掃描子程序進(jìn)行延時(shí),判斷是否退出相應(yīng)的方式顯示子程序。設(shè)計(jì)過程中,能很好得提高按鍵響應(yīng)速度。
2.2.2 主程序流程圖
主程序首先設(shè)置并啟動(dòng)T0中斷,然后調(diào)用初始化程序,為后面程序要用到的數(shù)據(jù)調(diào)入,并清零一些用到的數(shù)據(jù)單元,然后載入“0——9”字型,進(jìn)行掃描。圖2-12為主程序流程圖。
圖2-12 主程序流程圖
2.2.3 子程序流程圖(定時(shí)中斷服務(wù)程序)
圖11 子程序流程圖(定時(shí)中斷服務(wù)程序)
第三章 系統(tǒng)仿真及調(diào)試
3.1系統(tǒng)調(diào)試
根據(jù)硬件電路圖核對(duì)了元器件的型號(hào)、極性,安裝是否正確,檢查硬件電路連線是否與電路原理圖一致,檢查電路元器件是否都已經(jīng)連接好。
通電后,用示波器檢測單片機(jī)的復(fù)位和晶振電路是否有復(fù)位信號(hào)和振蕩信號(hào)。
3.2 系統(tǒng)仿真
3.2.1 proteus軟件仿真
使用proteus原理及仿真如圖3-1所示。
如圖3-1 proteus原理及仿真圖
3.2.2 程序
#include
{ 0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00, 0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00,//0 //1 0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,//2 0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00,//3 0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00,//4 0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00, 0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00, 0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00
};uchar i=0,t=0,Num_Index;//主程序 void main(){ P3=0x80;
Num_Index=0;
//從0開始顯示
TMOD=0x00;
//T0方式0 TH0=(8192-2000)/32;//2ms定時(shí)
TL0=(8192-2000)%32;IE=0x82;
//允許T0中斷
TR0=1;
//啟動(dòng)T0 while(1);}
//T0中斷函數(shù)
void LED_Screen_Display()interrupt 1 { TH0=(8192-2000)/32;
//恢復(fù)初值
TL0=(8192-2000)%32;P0=0xff;
//輸出位碼和段碼
P0=~Table_of_Digits[Num_Index*8+i];P3=_crol_(P3,1);
//P3循環(huán)向左一位 //5 //6 //7
//8 //9
}
if(++i==8)i=0;if(++t==250){
} t=0;
//每屏一個(gè)數(shù)字由8個(gè)字節(jié)構(gòu)成 //每個(gè)數(shù)字刷新顯示一段時(shí)間
if(++Num_Index==10)Num_Index=0;//顯示下一個(gè)數(shù)字
總結(jié)
經(jīng)過單片機(jī)的課程設(shè)計(jì),我有了很大的收獲。
首先,就是讓我加深了對(duì)單片機(jī)的掌握和理解與應(yīng)用,知道單片機(jī)到底是怎樣控制點(diǎn)陣,怎樣應(yīng)用在生活中的。并且讓我懂得了要善于思考,追求嚴(yán)謹(jǐn),認(rèn)真解決問題,才會(huì)有更多的收獲。
然后,提高了通過查閱資料解決問題的能力。通過查閱大量的相關(guān)資料,詳細(xì)了解了LED的發(fā)光原理和LED顯示屏的原理,了解了LED的現(xiàn)狀,清楚地了解了LED顯示屏與其它顯示屏相比較有那些優(yōu)點(diǎn),明確了研究目標(biāo)。并且通過對(duì)單片機(jī)資料的查閱和應(yīng)用,更進(jìn)一步增加了對(duì)單片機(jī)知識(shí)的理解和運(yùn)用能力。并證實(shí)了自己的思路:“查資料→思考總結(jié)→運(yùn)用→找出差錯(cuò),再查資料和向別人詢問→再次運(yùn)用”的正確性。
最后,本系統(tǒng)能夠完成設(shè)計(jì)任務(wù),能夠顯示數(shù)字0-9,并且顯示也較為穩(wěn)定清晰。本系統(tǒng)具有硬件少,結(jié)構(gòu)簡單,容易實(shí)現(xiàn),性能穩(wěn)定可靠,成本低等特點(diǎn)。在本次課程設(shè)計(jì)中,主要使用了Proteus和Keil等軟件進(jìn)行硬件電路和控制程序的設(shè)計(jì),加深了對(duì)這些軟件的了解。感到Proteus對(duì)電子專業(yè)的同學(xué)來說是一個(gè)很有用的軟件??傮w來說這次的課程設(shè)計(jì)很成功,達(dá)到了預(yù)想的目的:學(xué)到了知識(shí),提高了能力,完成了任務(wù)。
參考文獻(xiàn)
[1] 張靖武,周靈彬 《單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真》北京 電子工業(yè)出版社 [2] 吳金戌,沈慶陽,郭庭吉 《8051單片機(jī)實(shí)踐與應(yīng)用》北京 清華大學(xué)出版社 [3] 李群芳,肖看 《單片機(jī)原理、接口及應(yīng)用》北京 清華大學(xué)出版社
[4] 張毅剛,彭喜元等 《新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì) 》黑龍江 哈爾濱工業(yè)大學(xué)出版社 [5] 李朝青,劉艷玲編著 《單片機(jī)原理及接口技術(shù)》北京 航空航天大學(xué)出版社
第四篇:單片機(jī)課程設(shè)計(jì)
基于單片機(jī)的火災(zāi)智能報(bào)警控制系統(tǒng)的設(shè)計(jì)
前言
在各種災(zāi)害中,火災(zāi)是最經(jīng)常、最普通地威脅公眾安全和社會(huì)發(fā)展的災(zāi)害之一。人類能夠?qū)疬M(jìn)行利用和控制,是文明進(jìn)步的一個(gè)重要標(biāo)志。火,給人類帶文明進(jìn)步、光明和溫暖。但是,失去控制的火,就給人類造成災(zāi)害。據(jù)統(tǒng)計(jì),我國 70 年代火災(zāi)年平均損失不到 2.5 億元,80 年代火災(zāi)年平均損失不到
3.2 億元。進(jìn)入 90 年代,特別是 1993 年以來,火災(zāi)造成的直接財(cái)產(chǎn)損失上升到年均十幾億元,年均死亡 2000 多人。2010年上海靜安區(qū)高層住宅著火,導(dǎo)致58人死亡,70余人受傷。2014年1月云南香格里拉大火,燒毀房屋100多棟,直接經(jīng)濟(jì)損失1億多元人民幣。火災(zāi)事件經(jīng)常發(fā)生,防止火災(zāi)事故關(guān)系到人民群眾的生命財(cái)產(chǎn)安全和社會(huì)和諧穩(wěn)定?,F(xiàn)在各種電子產(chǎn)品的普及,再加上人們防火意識(shí)的不強(qiáng),這些都給火災(zāi)的發(fā)生帶來了巨大的安全隱患。
對(duì)于火災(zāi)最關(guān)鍵的問題在于預(yù)防,目前防火報(bào)警系統(tǒng)趨于智能化、自動(dòng)化,靈敏程度也越來越高。在這種背景下,基于單片機(jī)的火災(zāi)智能報(bào)警控制系統(tǒng)能突顯出其巨大的優(yōu)越性。目前,國內(nèi)大多數(shù)偏重于商場、賓館、高級(jí)寫字樓、大型倉庫等大型火災(zāi)報(bào)警系統(tǒng)的研發(fā)和設(shè)計(jì)。本系統(tǒng)側(cè)重于小型火災(zāi)智能報(bào)警系統(tǒng)的設(shè)計(jì),可在火災(zāi)發(fā)生初期檢測到并且報(bào)警,還能夠?qū)崟r(shí)顯示溫度和煙霧濃度。
第五篇:單片機(jī)課程設(shè)計(jì)
《單片機(jī)技術(shù)》課程設(shè)計(jì)說明書
音樂盒
院、部:電氣與信息工程學(xué)院 學(xué)生姓名:劉亮 指導(dǎo)教師:凌云職稱講師 專業(yè):電子信息工程 班級(jí):電子1302班 學(xué)
號(hào):1330340220 完成時(shí)間: 2016年1月11日
摘要
音樂盒起始于中世紀(jì)歐洲,當(dāng)時(shí)為使教會(huì)的鐘塔報(bào)時(shí),而將大小的鐘表上裝置機(jī)械設(shè)備,被稱為可發(fā)出聲音的組鐘。
本次的課題主要分為數(shù)碼管顯示模塊、供電模塊、按鍵模塊、發(fā)聲模塊、復(fù)位電路和AT89S52單片機(jī)。數(shù)碼管顯示模塊采用共陽極數(shù)碼管,通過P0口控制,實(shí)現(xiàn)歌曲序號(hào)的顯示;供電模塊采用+5V供電;按鍵通過P3口控制,實(shí)現(xiàn)歌曲播放順序的調(diào)換和暫停播放功能;揚(yáng)聲器由P3.1口控制,實(shí)現(xiàn)歌曲播放。
主要的工作過程是通過按鍵控制下一首和上一首播放以及暫停和播放,同時(shí)有數(shù)碼管顯示當(dāng)前正在播放的歌曲序號(hào),揚(yáng)聲器播放出音樂。
此次設(shè)計(jì)主要用到PROTEUS、KEIL編程和AD作圖軟件。用PROTEUS畫出原理圖,用KEIL編寫程序,將程序?qū)朐韴D中進(jìn)行仿真。最后用AD畫出PCB圖,打印圖紙進(jìn)行腐蝕焊接。將程序下載到單片機(jī)中,利用I/O口產(chǎn)生方波,驅(qū)動(dòng)揚(yáng)聲器,發(fā)出音調(diào),從而演奏樂曲。
關(guān)鍵詞:揚(yáng)聲器;AT89S52單片機(jī);I/0口
目 錄
背景意義、任務(wù)要求及設(shè)計(jì)原理、框圖··························1 1.1 背景意義···············································1 1.2 任務(wù)要求···············································1 1.3 設(shè)計(jì)原理···············································1 1.4 設(shè)計(jì)框圖···············································1 2 硬件系統(tǒng)····················································3 2.1 數(shù)碼管模塊··············································3 2.2 鍵盤模塊················································3 2.3 復(fù)位電路················································3 2.4 蜂鳴器模塊··············································4 3 軟件系統(tǒng)·····················································5 3.1 主程序介紹及流程圖······································5 3.2 各個(gè)模塊及功能介紹······································6 3.2.1 定時(shí)器模塊········································6 3.2.2 延時(shí)模塊··········································6 3.2.3 中斷模塊··········································7 3.2.4 數(shù)碼管顯示模塊 ···································9 4 電路仿真和程序檢測··········································10 5 實(shí)物制作及調(diào)試··············································11 結(jié)束語 ····························································12 參考文獻(xiàn) ··························································13 致 謝· ···························································14 附 錄· ···························································15 背景意義、任務(wù)要求及設(shè)計(jì)原理、框圖
1.1 背景意義
音樂盒的起源是中世紀(jì)歐洲的教會(huì)用來鐘塔報(bào)時(shí),后來,隨著工業(yè)的發(fā)展,逐漸的體積變小,功能變多,不過多數(shù)以機(jī)械音樂盒為主,這樣的音樂盒大部分體積較大音調(diào)單一,容易受到外界的影響,而且,代價(jià)昂貴。
此次設(shè)計(jì)的音樂盒,是基于單片機(jī)設(shè)計(jì)制作的電子音樂盒。與傳統(tǒng)的相比更加小巧,音質(zhì)更優(yōu)美而且可以演奏和弦音樂。單片機(jī)音樂盒的動(dòng)力是+5V的電源,制作簡單,可以批量生產(chǎn),控制功能強(qiáng)大,可以隨時(shí)的加減歌曲,使用更加的方便而且不易受到外界的影響而音質(zhì)變壞,另外,可以根據(jù)需要,添加流水彩燈等外設(shè)更改外觀,使音樂盒的功能更加豐富。
1.2 任務(wù)要求
此次的設(shè)計(jì)要求為:設(shè)計(jì)一個(gè)具有特定功能的音樂盒,要求包含軟件和硬件兩大模塊,能夠通過按鍵來選擇曲目,切換曲目,顯示器來顯示曲目編號(hào),能夠準(zhǔn)確的播放曲目。
1.3 設(shè)計(jì)原理
本次的設(shè)計(jì)最主要的在于蜂鳴器的設(shè)計(jì),想要蜂鳴器發(fā)出不同的音調(diào),通過單片機(jī)的定時(shí)器產(chǎn)生一定長度的方波,方波脈沖驅(qū)動(dòng)蜂鳴器發(fā)聲。要產(chǎn)生音頻脈沖,只需要算出某一音頻的周期,然后取半周期的時(shí)間定時(shí)。利用定時(shí)器計(jì)時(shí)這半個(gè)周期時(shí)間,每當(dāng)計(jì)時(shí)到之后,就將輸出脈沖的I/O反向,然后在重復(fù)計(jì)時(shí)此周期時(shí)間再對(duì)I/O口反相,就可在I/O口得到此頻率的脈沖。如中音DO,頻率為523HZ,其周期T=1/523=1912微秒,因此只要令計(jì)數(shù)器定時(shí)1912/2=926。在每計(jì)數(shù)956次時(shí)將I/O口反相,就可以得到中音。
每當(dāng)有鍵按下時(shí),判斷鍵值,啟動(dòng)計(jì)數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū)動(dòng)蜂鳴器,放出曲目。數(shù)碼管采用共陽極數(shù)碼管,通過單片機(jī)P0口控制,實(shí)現(xiàn)曲目序號(hào)的顯示。功能鍵盤采用按鍵開關(guān),通過P3口控制,實(shí)現(xiàn)曲目播放順序的調(diào)換和暫停播放功能,蜂鳴器由P3.1口控制,實(shí)現(xiàn)音樂播放。
1.4 設(shè)計(jì)框圖
單片機(jī)接+5V電源供電,晶振電路負(fù)責(zé)產(chǎn)生單片機(jī)所需要的時(shí)鐘信號(hào),通過功能鍵產(chǎn)生外部中斷,控制音樂盒的上一曲和下一曲。在由I/O口輸出控制蜂鳴器發(fā)聲。另外可以用復(fù)位電路對(duì)程序初始化,在程序出錯(cuò)時(shí),重啟單片機(jī)。具體 的設(shè)計(jì)框圖如圖1所示。
圖1 總體設(shè)計(jì)框圖
編程設(shè)置好定時(shí)時(shí)間,通過編程器寫入AT89S52單片機(jī)系統(tǒng)中。由AT89S52單片機(jī)的定時(shí)器每秒通過P1口控制LED數(shù)碼管顯示,復(fù)位信號(hào)由按鍵輸入,沒按一次,系統(tǒng)恢復(fù)原始狀態(tài)。電源,晶振電路,單片機(jī),功能鍵,和揚(yáng)聲器部分具體介紹在后面有介紹。硬件系統(tǒng)
2.1 數(shù)碼管模塊
歌曲顯示部分用數(shù)碼管來顯示,LED顯示器件是通過發(fā)光二極管顯示字段的器件,該設(shè)計(jì)采用的是7段數(shù)碼管,原理是由P0口控制數(shù)碼管中的7端LED發(fā)光二極管,通過單片機(jī)給予P0口不同的數(shù)值來顯示不同的數(shù)字。數(shù)碼管分為共陽極和共陰極兩種,共陽極的數(shù)碼管,當(dāng)管腳是低電平有效,而陰極的數(shù)碼管,是管腳高電平有效。這樣,單片機(jī)給予P0口的數(shù)值將會(huì)發(fā)生差異,也就是說,不同種類的數(shù)碼管,對(duì)應(yīng)的ASCII碼就會(huì)不同。本次選用的是共陽極數(shù)碼管,其引腳如圖2所示。
圖2 數(shù)碼管引腳
2.2 鍵盤模塊
本次的鍵盤模塊采用按鍵開關(guān)這樣操作簡單,辨別容易的開關(guān)。用到4個(gè)按鍵開關(guān),分別是復(fù)位按鍵,下一首按鍵,上一首按鍵,和暫停按鍵。上一首按鍵和下一首按鍵接單片機(jī)的外部中斷0,外部中斷1。暫停按鍵接定時(shí)器1,復(fù)位按鍵在復(fù)位電路中,接單片機(jī)RES。
2.3 復(fù)位電路
復(fù)位電路主要用于初始化程序,當(dāng)單片機(jī)音樂盒發(fā)生死機(jī)時(shí),用復(fù)位電路初始化程序來重啟單片機(jī)。兩個(gè)電容,兩個(gè)電阻和一個(gè)復(fù)位按鍵組成,當(dāng)單片機(jī)死機(jī)時(shí),按下按鍵,即可重啟,其電路原理圖如圖3所示。
圖3 復(fù)位電路原理圖
2.4 揚(yáng)聲器模塊
揚(yáng)聲器模塊最為重要,當(dāng)單片機(jī)輸出脈沖經(jīng)過揚(yáng)聲器時(shí),會(huì)是揚(yáng)聲器發(fā)聲,不過因?yàn)樵O(shè)計(jì)中用到的元件較多,不能保證通過揚(yáng)聲器的電流足夠大,所以要用三極管放大電路來放大電流,這樣才能讓揚(yáng)聲器正常工作,具體的原理圖如圖4所示。
圖4 揚(yáng)聲器原理圖 軟件系統(tǒng)
3.1 主程序介紹及流程圖
一個(gè)系統(tǒng)的正常運(yùn)行不僅需要硬件的運(yùn)行,還需要軟件系統(tǒng)的支持。同時(shí)軟件要根據(jù)硬件的連接來設(shè)計(jì),來配合硬件的工作,例如,本次的設(shè)計(jì)用到的是P 0口和P3口。所以,設(shè)計(jì)的時(shí)候就要注意,只能用到P0和P3。本次用到的軟件設(shè)計(jì)選用課堂學(xué)到的匯編語言。另外用KEIL軟件來編寫程序,用課堂上學(xué)到的中斷和循環(huán)等來編寫程序。
主程序要開始定義音頻輸出端口,歌曲總數(shù)以及每首歌的入口地址;然后對(duì)定時(shí)器初始化,確定工作方式,賦初值,開放中斷啟動(dòng)定時(shí)器工作;對(duì)音頻輸出端口初始化;設(shè)置音節(jié)起始位置和節(jié)拍間距,把音節(jié)和節(jié)拍的入口地址信息存放在固定存儲(chǔ)單元中,查詢音樂的節(jié)拍表;當(dāng)6首歌曲的節(jié)拍查詢結(jié)束后,音樂播放完畢,程序結(jié)束。主程序的清單在附錄中,其流程圖如圖5所示。
圖5 主程序流程圖
3.2 各個(gè)模塊及功能介紹 3.2.1 定時(shí)器模塊
單片機(jī)中有兩個(gè)16位的可編程計(jì)數(shù)器/定時(shí)器,他們具有定時(shí)和計(jì)數(shù)的功能,可用于定時(shí)控制,延時(shí),對(duì)外部的事件檢測和計(jì)數(shù)。
定時(shí)器的核心部件是加一計(jì)數(shù)器,通過TMOD寄存器可以使定時(shí)器工作在定時(shí)或者計(jì)數(shù),還可以選擇工作方式,工作方式關(guān)系到后面音調(diào)和節(jié)拍的調(diào)用,因此,要選擇合適的工作方式。定時(shí)器模塊的程序清單見附錄。圖6為定時(shí)程序流程圖。
圖6 定時(shí)器模塊流程圖
3.2.2 延時(shí)模塊
此處的延時(shí)模塊并不是固定的延時(shí)程序,而是將節(jié)拍表中的接拍數(shù)存放在固定的單元中,再將固定單元中的內(nèi)容送給延時(shí)程序中,這樣空拍就可以將節(jié)拍分開,這樣,圖7為延時(shí)程序流程圖。
圖7 延時(shí)流程圖
3.2.3 中斷模塊
中斷模塊主要用來進(jìn)行上一首,下一首和暫停的控制,本次的中斷主要用到INT0,INT1和T1三個(gè)I/O口。不同的中斷有不同的程序。因?yàn)閱纹瑱C(jī)中只有兩個(gè)外部中斷,因此,我決定選用定時(shí)器1來改變成中斷,即應(yīng)定時(shí)器1的F0判斷,當(dāng)F0為1時(shí),為中斷。在此僅具體介紹上一曲的功能。下面為流程圖介紹。
圖8 中斷程序流程圖
3.2.4 數(shù)碼管顯示模塊
本次設(shè)計(jì)采用的是共陽極的數(shù)碼管,因此要采用相應(yīng)的數(shù)值來控制數(shù)碼管的亮滅。另外還要求通過按鍵在改變曲目順序的時(shí)候改變數(shù)碼管顯示數(shù)字。下面為數(shù)碼管顯示模塊的流程圖。
圖9 數(shù)碼管顯示模塊流程圖 電路仿真和程序檢測
仿真圖作圖用到的是PROTEUS軟件,對(duì)于這個(gè)軟件,我們已經(jīng)相當(dāng)?shù)氖煜?,所以用起來比較順利,首先將各個(gè)元件搜索出來,必須要有單片機(jī)最小系統(tǒng),顯示模塊,按鍵模塊,發(fā)聲模塊。根據(jù)要求,可以畫出仿真圖。如圖10所示。
圖10 設(shè)計(jì)仿真圖
將KEIL中寫好的程序?qū)氲絾纹瑱C(jī)中,開始檢測,首先檢測是否能夠清晰的播放出音樂,其次通過控制三個(gè)按鍵來檢測上一首,下一首和暫停的功能是否實(shí)現(xiàn),觀察數(shù)碼管的數(shù)字是否隨著按鍵的變化,通過以上檢測,發(fā)現(xiàn)程序和仿真完全符合標(biāo)準(zhǔn),表示仿真和程序檢測通過,可以制作實(shí)物。
5實(shí)物調(diào)試
將程序編譯好產(chǎn)生.hex文件,通過無需驅(qū)動(dòng)程序?qū)⒕幾g好的.hex文件導(dǎo)入到三合一的實(shí)驗(yàn)板中,在外邊接入三個(gè)按鍵開關(guān)來控制上一首,下一首和暫停,調(diào)試過程與仿真圖的調(diào)試過程相同,可以通過按鍵來控制歌曲的調(diào)換和暫停,而且也可以控制數(shù)碼管按曲目的調(diào)換來顯示序號(hào)。實(shí)驗(yàn)成功,實(shí)驗(yàn)成品如圖11所示。
圖11 實(shí)物圖 11
結(jié)束語
首先要感謝凌老師平時(shí)的耐心教導(dǎo),才能讓我對(duì)單片機(jī)這門課程產(chǎn)生興趣,在平時(shí)的課堂上都會(huì)跟著老師的思路走,下課后,努力的完成老師布置的作業(yè)是凌老師讓我學(xué)到了很多關(guān)于單片機(jī)的知識(shí)。
其次對(duì)這次制作課程設(shè)計(jì)的感想。本次的課題是音樂盒,最主要的就是程序設(shè)計(jì),經(jīng)過比較分,決定采用51編程語言,因?yàn)槠綍r(shí)上課接觸最多的就是匯編語言,對(duì)于C語言,了解比較少,并不是非常熟練。運(yùn)用課堂上學(xué)到的定時(shí),中斷,循環(huán),以及數(shù)碼管顯示和按鍵程序,可以比較完整的制作出這次的課題。不僅可以復(fù)習(xí)近平時(shí)學(xué)到的知識(shí),還會(huì)有新的能力學(xué)到,比如AD繪圖的使用和熟悉。
最后,了解了單片機(jī)的方便性,和強(qiáng)大性。這是我們走向崗位的通行證,必須學(xué)會(huì)單片機(jī),才會(huì)在大四畢業(yè)的時(shí)候找到適合自己的好工作。
參考文獻(xiàn)
[1]李廣弟.單片機(jī)基礎(chǔ)[M].第3版.北京:北京航空航天大學(xué)出版社,2003.06.[2]李全利.單片機(jī)原理及應(yīng)用(C51編程)[M].北京:高等教育出版社,2012.12.[3]樓然苗.51系列單片機(jī)設(shè)計(jì)實(shí)例[M].北京:北京航空航天大學(xué)出版社,1999.06.[4]李葉紫.單片機(jī)應(yīng)用教程[M].北京:清華大學(xué)出版社,2002.01.[5]李光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[M].北京:北京航空航天大學(xué)出版社,2004.09.致
謝
這次的設(shè)計(jì)可以說是給了我很多,不僅僅是學(xué)習(xí)上的,更多的是精神上和生活中的
首先要感謝老師的教育,讓我學(xué)到了這么多的知識(shí),在這段制作單片機(jī)課設(shè)的時(shí)候更是有感觸,當(dāng)聽到設(shè)計(jì)的音樂盒發(fā)出聲音的時(shí)候,第一感覺是好舒暢,因?yàn)榈谝淮慰梢钥吹阶约褐谱鞒鲞@樣的東西,在這些自豪中,更能感覺到老師對(duì)我們的栽培是那么的重要。
還要感謝同學(xué)們的幫助,有的時(shí)候,自己真的是不懂了,就去問同學(xué),這不僅僅是問問而已,更能加深同學(xué)之間的友情,而且還會(huì)收獲更多的知識(shí),在這樣的學(xué)習(xí)氛圍中,收益的是我們大家。所以我要感謝在這次課設(shè)里幫助過我的所有同學(xué)。
這次的設(shè)計(jì)給我最大的啟發(fā)就是,在學(xué)習(xí)中馬虎不得。當(dāng)你馬虎的對(duì)待學(xué)習(xí),學(xué)業(yè)也會(huì)馬虎的對(duì)待你,這樣吃虧的還是自己,學(xué)業(yè)本來就是自己的,自己不努力,難道就會(huì)白白得來嗎?所以以后的學(xué)習(xí)中不能有一絲的馬虎大意,就算是為了自己也要學(xué)下去。
附
錄
附錄A 電路原理圖
附錄B 電路實(shí)物圖
附錄C 元器件清單
名
稱
型
號(hào)
個(gè)
數(shù)
芯片
AT89S52 1 數(shù)碼管八段2
電容
22μF
電容
33pF
三極管1
電阻
470Ω
電阻
300Ω
電阻
200Ω
電阻
1KΩ LED燈8
下載口
晶振
12MHZ1
按鍵
排阻8位4
排阻
2位1
短路帽
插針
若干
附錄D 程序清單
OUT BIT p3.1
N EQU 6 OUT_NUM EQU P0 ORG 0000H AJMP MAIN ORG 0003H AJMP LAST_SONG ORG 000BH LJMP F_T0 ORG 0013H AJMP NEXT_SONG ORG 001BH AJMP START_PAUSE ORG 0030H MAIN: MOV SP ,#60H MOV DPTR,#TABLE MOV R0 ,#30H MOV R5 ,#00H MOV R6 ,#1 SET_TAB: MOV A,R5 MOVC A ,@A+DPTR MOV @R0 ,A INC R5 INC R0 MOV A ,R5 MOVC A ,@A+DPTR MOV @R0 ,A INC R5 INC R0 MOV A ,R5 MOVC A ,@A+DPTR MOV @R0 ,A INC R5 INC R0 MOV A,R5 MOVC A,@A+DPTR MOV @R0 ,A INC R0 INC R5 INC R6 CJNE R6,#N+1,SET_TAB MOV TMOD ,#61H MOV TH1,#0FFH MOV TL1,#0FFH SETB ET1 SETB ET0 CLR PT0 SETB PT1 SETB IT0 SETB PX0 SETB IT1 SETB PX1 SETB EX1 SETB EX0 SETB EA SETB TR1 SETB OUT CLR F0 MOV 22H ,#01H MOV DPTR,#OUT_TAB MOV A,22H MOVC A,@A+DPTR MOV OUT_NUM,A MOV R7,#00H
START0: MOV R4,#00H MOV R0,#30H MOV A,R7 ADD A,R0 MOV R0,A MOV DPH,@R0 INC R0 MOV DPL,@R0 INC R0 MOV A,R4 INC R4 MOVC A,@A+DPTR MOV 26H,A NEXT:MOV R0,#30H MOV A,R7 ADD A,R0 MOV R0,A MOV DPH,@R0 INC R0 MOV DPL,@R0 INC R0 MOV A,R4 INC R4 MOVC A,@A+DPTR JZ END0 MOV R1,A ANL A,#0FH MOV R2,A MOV A,R1 SWAP A ANL A,#0FH JNZ SING CLR TR0 SJMP SING1 SING:DEC A MOV R3,A RL A MOV DPH,@R0 INC R0 MOV DPL,@R0 INC R0 MOVC A,@A+DPTR MOV 21H,A MOV TH0,A MOV A,R3 RL A INC A MOVC A,@A+DPTR MOV 20H,A MOV TL0,A SETB TR0 SING1: LCALL DELAY JB F0,FOR AJMP NEXT FOR:CLR TR0 JB F0,$ AJMP NEXT END0: CLR TR0 MOV A,22H CJNE A,#N,WW MOV 22H,#01H MOV R7,#00H MOV OUT_NUM,#11111001B AJMP WWW WW:MOV A,R7 ADD A,#4 MOV R7,A INC 22H CLR EA PUSH DPH PUSH DPL MOV A,22H MOV DPTR,#OUT_TAB MOVC A,@A+DPTR MOV OUT_NUM,A POP DPL POP DPH WWW:SETB EA AJMP START0 F_T0:MOV TH0,21H MOV TL0,20H CPL OUT RETI NEXT_SONG: PUSH ACC PUSH DPH PUSH DPL CLR EA MOV A,22H CJNE A,#N,Q MOV R7,#00H MOV 22H,#01H AJMP BACK Q: INC 22H MOV A,R7 ADD A,#4 MOV R7,A BACK: MOV R4,#00H MOV A,22H MOV DPTR,#OUT_TAB MOVC A,@A+DPTR MOV OUT_NUM,A MOV B ,R0 MOV R4,#00H MOV R0,#30H MOV A,R7 ADD A,R0 MOV R0,A MOV DPH,@R0 INC R0 MOV DPL,@R0 INC R0 MOV A,R4 INC R4 MOVC A,@A+DPTR MOV 26H,A DEC R4 MOV R0,B POP DPL POP DPH POP ACC SETB EA RETI LAST_SONG: PUSH ACC PUSH DPH PUSH DPL CLR EA MOV A,22H CJNE A,#1,QQ MOV 22H,#N MOV B,#4 MOV A,#N-1 MUL AB MOV R7,A AJMP BACK2 QQ: DEC 22H MOV A,R7 SUBB A,#4 MOV R7,A BACK2: MOV R4,#00H MOV A,22H MOV DPTR ,#OUT_TAB MOVC A,@A+DPTR MOV OUT_NUM,A MOV B,R0 MOV R4,#00H MOV R0,#30H MOV A,R7 ADD A,R0 MOV R0 ,A MOV DPH,@R0 INC R0 MOV DPL,@R0 INC R0 MOV A,R4 INC R4 MOVC A,@A+DPTR MOV 26H ,A DEC R4 MOV R0,B POP DPL POP DPH POP ACC SETB EA
RETI START_PAUSE: CPL F0 JB F0,RETURN SETB TR0 RETURN: RETI DELAY: MOV 27H,26H D2: D3:
MOV 28H,#125 MOV 29H,#248 DJNZ 29H,$ DJNZ 28H,D3 DJNZ 27H,D2 DJNZ R2,DELAY RET OUT_TAB: DB 0CH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH TABLE: DW SONG1,TABLE1,SONG2,TABLE2,SONG3,TABLE3,SONG4,TABLE4,SONG5,TABLE5,SONG6,TABLE6 TABLE1: DW 64580,64684,64777,64820,64898,64968,65030 DW 63628,63835,64021,64103,64260,64400,64524 SONG1: DB 04H DB 32H,54H,52H,32H,54H,52H,32H,12H,12H,32H,32H,54H,52H,32H,52H,52H,32H,32H,21H,31H,4H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H DB 0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32 26
H,52H,54H,32H,34H,31H,21H,12H,24H,34H DB 34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4H DB 22H,0D1H,11H,0E2H,0D2H,0C2H,0C4H,0C4H,32H,52H,52H,32H,62H,05H,61H,54H,31H,52H,31H,12H,31H,32H,54H,52H,32H,52H,52H,32H DB 32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52H,32H,62H,51H,61H,54H,31H,12H,32H,12H,32H,12H,32H,32H,54H,52H
DB DB DB 32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H 32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H 0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,34H,31H,21H,12H,24H,24H DB 34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4H TABLE2: DW 63835,64021,64103,64260,64400,64524,64580,64684,64777 DW 64820,64898,64968,65030,65058,65110,65157,65178 SONG2: DB 02H DB 04H,94H DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02H
02H DB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H DB 04H,0C2H,0C2H,0D4H,0C2H,0D2H,0D8H,0D4H,0D2H,92H DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H, 27
DB 0A4H,0A2H,0B2H,0B4H,0C4H,0E8H,0D8H DB 0C8H,0C8H,08H,08H,78H,28H,38H,34H,24H DB 24H,64H,64H,24H,64H,72H,72H,78H,58H,54H,44H,38H,34H,14H,34H,84H,74H,74H,62H,0D8H,78H,28H,38H,34H,24H
DB DB DB
58H,58H,58H,58H,0A8H,0A8H,0A4H,0B4H,0A4H,84H,0A4H, 24H,64H,64H,24H,64H,72H,72H,72H,94H,92H,94H,0A4H,58H,58H,54H,44H 94H,98H,98H,08H 84H,82H,82H,82H,82H,94H,0A2H,94H,92H,82H,74H,72H,74H,72H,72H,72H,72H,92H,91H,91H,94H,54H,74H,94H 02H DB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H 02H DB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H
DB 0A4H,0A2H,0B2H,0B3H,0C4H,0E8H,0D8H DB 0C8H,0C8H,0C8H,08H DB 00H DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,TABLE3: DW 64898,64968,65030,65086,65135,65158,65199,64260,64400,64524,64580,64684,64777,64862 SONG3: DB 03H DB 28
04H,04H,0C2H,14H,12H,12H,12H,11H,11H,0C2H,0D1H,0E1H,14H,14H,02H,32H,12H,21H,31H,52H,51H,51H,54H DB 32H,31H,31H,12H,11H,31H,52H,51H,31H,24H,24H,24H,64H,54H,24H,34H,52H,34H,52H,32H,21H,31H,12H,11H,21H,34H,04H DB 52H,51H,0D1H,12H,12H,32H,31H,31H,52H,51H,51H,22H,22H,22H,0D2H,0D1H,0D1H,24H,22H,0C2H,14H,12H,12H,34H,32H,32H,54H,54H,54H,54H DB 12H,11H,31H,52H,51H,51H,64H,54H,32H,31H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14H DB 0A2H,0A1H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14H,0C4H,14H,0C4H,14H,14H,04H DB 04H,04H,04H,04H DB 00H TABLE4: DW 64260,64400,64524,64580 ,64684,64777,64280,64898,64968,65030,65058,65110,65157,65178,65217 SONG4: DB 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,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H 29
DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 0C4H,0B4H,04H DB 00H DB 82H,01H,81H,94H,84H TABLE5: DW 64021,64103,64260,64400 ,64524,64580,64684,64777,64820,64898,64968,65030,64934 SONG5:
DB 05H DB 42H,82H,82H,82H,84H,02H,72H DB 62H,72H,62H,52H,48H DB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H DB 12H,0A2H,0D2H,92H,88H DB 82H,0B2H,0B2H,0A2H,84H,02H,72H DB 62H,72H,62H,52H,44H,02H,12H DB 12H,62H,62H,52H,44H,02H,82H DB 72H,62H,52H,32H,48H DB 00H TABLE6: 64021,6103,64260,64400,64524,64580,64624,64777,64820,64898,64958,65030,65058,65110,65157 SONG6: DB 06H
DB 0A2H,0B2H,0D2H,0B2H,0A4H,0B2H,0D2H DB 0B2H,0A2H,82H,72H,88H DB 72H,82H,0A2H,82H,72H,62H,42H,62H DB 0A4H,02H,0B2H,0A4H,84H DB 72H,82H,72H,62H,72H,84H,72H DB 64H,62H,12H,34H,02H,42H DB 38H,38H DW DB 38H,38H 30
DB 44H,02H,32H,44H,64H DB 72H,74H,82H,0A4H,02H,062H DB 0A8H,0A8H DB 0B2H,0B4H,0A2H,84H,82H,72H DB 62H,72H,82H,0A2H,88H DB 72H,74H,62H,42H,32H,32H,62H DB 78H,78H DB 82H,84H,72H,82H,0A2H,84H DB 72H,82H,72H,62H,48H DB 32H,0A2H,82H,0F2H,0A2H,0B2H,82H,72H DB 68H,68H DB 0B2H,0B2H,0B2H,0A2H,82H,84H,02H DB 72H,74H,62H,42H,32H,42H,62H DB 78H,78H DB 0A2H,0B2H,0A2H,72H,82H,84H,82H DB 72H,74H,62H,44H,64H DB 0A8H,0A4H,02H,0A2H DB 0A2H,0B1H,0A1H,82H,0A2H,0B4H,0B2H,0C2H DB 0A2H,0B2H,0A2H,82H,78H DB 84H,72H,62H,44H,02H,62H DB 72H,81H,71H,62H,72H,84H,02H,0A2H DB 0B4H,02H,82H,74H,82H,72H DB 68H,68H DB 00H END DB 72H,82H,72H,62H,72H,84H,0A2H 31