freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

單片機(jī)課程設(shè)計-基于stc89c52rc單片機(jī)的音樂播放器設(shè)計(已修改)

2024-11-04 01:33 本頁面
 

【正文】 基于 STC89C52RC單片機(jī)的音樂播放器設(shè)計 一、 設(shè)計要實(shí)現(xiàn)的功能 ( 1) 利用 I/O 口產(chǎn)生一定頻率的方波,驅(qū)動蜂鳴器,發(fā)出不同的音調(diào),從而演奏歌曲(總共九首) 。 ( 2) 采用 共陽 七段數(shù)碼管顯示當(dāng)前播放歌曲的序號。 ( 3) 可以通過按鍵實(shí)現(xiàn)暫停、繼續(xù)、上一首、下一首以及復(fù)位等基本操作。 二、 設(shè)計所需基礎(chǔ)知識儲備 1. 要產(chǎn)生音頻脈沖,只要計算某一音頻的周期,然后將此周期處以 2,即為半周期的時間。利用定時器記時這個個半周期時間,每當(dāng)記時到后就輸出脈沖的 I/O 反相,然后重復(fù)記時此半周期的時間再對 I/O 反相,就可在 I/O 腳上得到此頻率的脈沖。 2. 利 用 8051 的內(nèi)部定時器使其工作在計數(shù)器模式 MODE1 下,改變計數(shù)值 TH0及 TL0 以產(chǎn)生不同頻率的方法,例如頻率為 523HZ,其周期 T=1/523=1912us,因此只要令計數(shù)器記時 956us/1us=956,在每次計數(shù) 956 次時將 I/O 反相,就可得到中音 DO( 523HZ)。計數(shù)脈沖值與頻率的關(guān)系公式如下 :N=Fi/2/Fr,其中N 是計數(shù)值, Fi 是 8051 內(nèi)部頻率,一般用的是 1MHZ(因?yàn)?8051 內(nèi)部記時一次時間為 1us), Fr 為要產(chǎn)生的頻率。 3. 計數(shù)初值的求法如下: T=65536N=65536Fi/2/Fr 例如:求低音 DO( 261HZ)中音 DO( 523HZ)高音 DO( 1046HZ)的計數(shù)值。 T=65536N=65536 Fi/2/Fr=655361000000/2/Fr=6553650000/Fr 低音 DO 的T= 6553650000/262=63267 中音 DO 的T= 6553650000/523=64580 高音 DO 的T= 6553650000/1047=65059 三、 硬件設(shè)計 本次設(shè)計用到的主要器件有 STC89C52,七段共陽數(shù)碼管,無源蜂鳴器(詳細(xì)列表在后面列出)。硬件原理圖也在后 面列出。 四、 功能說明 ( 1) 硬件電路中 口為音頻輸出端口。 ( 2) 用 和 分別作為上一首和下一首歌曲的功能鍵, 接一個自鎖按鍵,當(dāng)按鍵按下時暫停播放音樂,再按一下按鍵,按鍵彈起繼續(xù)原來的播放進(jìn)度。 ( 3) 用 這幾個管腳來控制七段數(shù)碼管的顯示。 ( 4) 單片機(jī) 18 和 19 號管教接 12MHZ 的晶振,其中電容皆為 30PF 的瓷片電容。 ( 5) 單片機(jī) 40 號管腳接 VCC, 20 號管腳接地。 31 號管腳接 VCC, 9 號管腳外接復(fù)位電路。 五、 主要元器件介紹 Ⅰ、 STC89C52 單片機(jī) STC89C52 是高性能 CMOS 8 位單片機(jī),片內(nèi)含 8k bytes 的可反復(fù)擦寫的只讀程序存儲器( PEROM) 和 256bytes 的隨機(jī)存取數(shù)據(jù)存儲器( RAM),器件采用高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn) MCS- 51 指令系統(tǒng)及 8052 產(chǎn)品引腳兼容,片內(nèi)置通用 8 位中央處理器( CPU)和 Flash 存儲單元,功能強(qiáng)大 STC89C52 單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場合。 主要功能特性 兼容 MCS51 指令系統(tǒng) 8k 可反復(fù)擦寫 (1000 次) Flash ROM 32 個雙向 I/O 口 256x8bit 內(nèi)部 RAM 3 個 16 位可編程定時 /計 數(shù)器中斷 時鐘頻率 024MHz 2 個串行中斷 可編程 UART 串行通道 2 個外部中斷源 共 6 個中斷源 2 個讀寫中斷口線 3 級加密位 低功耗空閑和掉電模式 軟件設(shè)置睡眠和喚醒功能 主要管腳有: XTAL1( 19 腳)和 XTAL2( 18 腳)為振蕩器輸入輸出端口,外接 12MHz 晶振。 RST( 9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。 VCC( 40 腳)和 VSS( 20 腳)為供電端口,分別接 +5V 電源的正負(fù)端。 P0~P3 為可編程通用 I/O 腳,其功能用途由軟件定義 , STC89C52 有 40 個引腳, 32 個外部雙向輸入 /輸出( I/O)端口,同時內(nèi)含 2 個外中斷口, 3 個 16 位可編程定時計數(shù)器 ,2 個全雙工串行通信口, 2 個讀寫口線,STC89C52 可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和 Flash 存儲器結(jié)合在一起,特別是可反復(fù)擦寫的 Flash 存儲器可有效地降低開發(fā)成本。 其管腳圖如下所示: P0 口有三個功能: ( 1) 外部擴(kuò)充存儲器時,當(dāng)做數(shù)據(jù)總線( D0D7) ( 2) 外部擴(kuò)充存儲器時,當(dāng)做數(shù)據(jù)總線( A0A7) ( 3) 不擴(kuò)充時,可做一般 I/O 使用,但內(nèi)部無上拉電阻,作為輸入或輸出時應(yīng)在外部接上拉電阻。 . P1 口 只做 I/O 使用,但其內(nèi)部有上拉電阻。 P2 口有兩個功能 ( 1)擴(kuò)充外部存儲器時,當(dāng)做地址總線( A8A15)使用。 ( 2)做一般 I/O 使用,其內(nèi)部有上拉電阻。 P3 口有兩種功能。 除了作為 I/O 使用外(內(nèi)部有上拉電阻),還有一些特殊功能。如下 : 端口引腳 第二功能 RXD(串行輸入口 ) TXD(串行輸出口) INT0(外部中斷 0) INT1(外部中斷 1) T0(定時 /計數(shù)器 0) T1(定時 /計數(shù)器 1) WR(外部數(shù)據(jù)存儲器寫入控制信號) RD(外部數(shù)據(jù)存儲器讀取控制信號) 此外, P3 口還接收一些用于 Flash 閃速存儲器編程和程序校驗(yàn)的控制信號。 RST: 復(fù)位輸入。當(dāng)振蕩器工作時, RST 引腳出現(xiàn)兩個機(jī)器周期以上高電平將使單片復(fù)位。 ALE/PROG: 當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時, ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低 8 位字節(jié)。一般情況下, ALE 仍以時鐘振蕩頻率的 1/6 輸出固定的脈沖信號,因此它可對外輸出時鐘 或用于定時目的 。 對 Flash 存儲器編程期間,該引腳還用于輸入編程脈沖( PROG)。 此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置 ALE 禁止位無效 。 PSEN: 程序儲存允許( PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng) AT89C52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次 PSEN 有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次 RSEN 信號 。 EA/VPP: 外部訪問允許。欲使 CPU 僅訪問外部程序存儲器(地址為 0000H-FFFFH), EA 端必須保持低電平(接 地)。需注意的是 : 如果加密位 LB1 被編程,復(fù)位時內(nèi)部會鎖存 EA 端狀態(tài) 。 如 EA 端為高電平(接 Vcc 端), CPU 則執(zhí)行內(nèi)部程序存儲器中的指令。 Flash 存儲器編程時,該引腳加上 +12V 的編程允許電源 VPP,當(dāng)然這必須是該器件是使用 12V 編程電壓 VPP。 XTAL1: 振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。 XTAL2: 振蕩器反相放大器的輸出端 。 VCC: 電源電壓 。 GND: 地 。 中斷寄存器 : STC89C52 有 6 個中斷源, 2 個中斷優(yōu)先級, IE 寄存器控制各中斷位, IP 寄存器中 6 個中斷源 的每一個可定為 2 個優(yōu)先級。 數(shù)據(jù)存儲器 : AT89C52 有 256 個字節(jié)的內(nèi)部 RAM, 80H- FFH 高 128 個字節(jié)與特殊功能寄存器( SFR)地址是重疊的,也就是高 128 字節(jié)的 RAM 和特殊功能寄存器的地址是相同的,但物理上它們是分開的。 當(dāng)一條指令訪問 7FH 以上的內(nèi)部地址單元時,指令中使用的尋址方式是不同的,也即尋址方式?jīng)Q定是訪問高 128字節(jié) RAM還是訪問特殊功能寄存器。如果指令是直接尋址方式則為訪問特殊功能寄存器。 例如,下面的直接尋址指令訪問特殊功能寄存器 0A0H(即 P2 口)地址單元。 MOV 0A0H,# data 間接尋址指令訪問高 128 字節(jié) RAM,例如,下面的間接尋址指令中, R0的內(nèi)容為 0A0H,則訪問數(shù)據(jù)字節(jié)地址為 0A0H,而不是 P2 口( 0A0H)。 MOV @ R0,# data 堆棧操作也是間接尋址方式,所以,高 128 位數(shù)據(jù) RAM 亦可作為堆棧區(qū)使用。 中斷: STC89C52 共有 6 個中斷向量:兩個外中斷( INT0 和 INT1), 3 個定時器中斷(定時器 0、 2)和串行口中斷。 這些中斷源可通過分別設(shè)置專用寄存器 IE 的置位或清 0來控制每一個中斷的允許或禁止。 IE 也有一個總禁止位 EA,它能控制 所有中斷的允許或禁止。 定時器 2 的中斷是由 T2CON 中的 TF2 和 EXF2 邏輯或產(chǎn)生的,當(dāng)轉(zhuǎn)向中斷服務(wù)程序時,這些標(biāo)志位不能被硬件清除,事實(shí)上,服務(wù)程序需確定是 TF2 或EXF2 產(chǎn)生中斷,而由軟件清除中斷標(biāo)志位。 定時器 0 和定時器 1 的標(biāo)志位 TF0 和 TF1 在定時器溢出那個機(jī)器周期的 S5P2狀態(tài)置位,而會在下一個機(jī)器周期才查詢該中斷標(biāo)志。然而,定時器 2 的標(biāo)志位 TF2 在定時器溢出的那個機(jī)器周期 S2P2 狀態(tài)置位,并在同一個機(jī)器周期內(nèi)查詢到該標(biāo)志。 時鐘振蕩器: STC89C52 中有一個用于構(gòu)成內(nèi)部振蕩器的高增益反相 放大器,引腳 XTAL1 和XTAL2 分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器 . 外接石英晶體(或陶瓷諧振器)及電容 C C2 接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容 C C2 雖然沒有十分嚴(yán)格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性,如果使用石英晶體,我們推薦電容使用 30pF177。10pF,而如使用陶瓷諧振器建議選擇 40pF177。10pF. 用戶也可以采用外部時鐘。采用外部時鐘的電路如圖右圖 所示。這種情況下,外部時鐘脈沖接到 XTAL1 端,即內(nèi)部時鐘發(fā)生器的輸入端, XTAL2 則懸空。 Flash 存儲器的編程 : STC89C52 單片機(jī)內(nèi)部有 8k 字節(jié)的 Flash PEROM,這個 Flash 存儲陣列出廠時已處于擦除狀態(tài)(即所有存儲單元的內(nèi)容均為 FFH),用戶隨時可對其進(jìn)行編程。編程接口可接收高電壓( +12V)或低電壓( Vcc)的允許編程信號。低電壓編程模式適合于用戶在線編程系統(tǒng),而高電壓編程模式可與通用 EPROM編程器兼容。 STC89C52 的程序存儲器陣列是采用字節(jié)寫入方式編程的,每次寫入一個 字節(jié),要對整個芯片內(nèi)的 PEROM 程序存儲器寫入一個非空字節(jié),必須使用片擦除的方式將整個存儲器的內(nèi)容清除。 Ⅱ、共陽七段數(shù)碼管 LED 數(shù)碼管是由發(fā)光二極管構(gòu)成的,亦稱半導(dǎo)體數(shù)碼管。 將條狀發(fā)光二極管按照共陽極 (正極 )的方法連接,組成 “8”字,再把發(fā)光二極管另一電極作筆段電極,就構(gòu)成了 LED 數(shù)碼管。若按規(guī)定使某些筆段上的發(fā)光二極管發(fā)光,就能顯示從 0~ 9 的 一 系列數(shù)字。同熒光數(shù)碼管 (VFD)、輝光數(shù)碼管 (NRT)相比,它具有:體積小、功耗低、耐震動、壽命長、亮度高、單色性好、發(fā)光響應(yīng)的時間短,能與 TTL、 CMOS 電路兼容等的數(shù)顯器件。 如上圖所示是共陽極七段數(shù)碼管的原理圖 共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極 COM 接到 +5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮 。 數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。 ① 靜態(tài)顯示驅(qū)動:靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機(jī)的 I/O 端口進(jìn)行驅(qū)動,或者使用如 BCD 碼二 十進(jìn)制譯碼器譯 碼進(jìn)行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點(diǎn)是編程簡單,顯示亮度高,缺點(diǎn)是占用 I/O 端口多,如驅(qū)動 5 個數(shù)碼管靜態(tài)顯示則需要 58= 40 根 I/O 端口來驅(qū)動,要知道一個89S51 單片機(jī)可用的 I/O 端口才 32 個呢),實(shí)際應(yīng)用時必須增加譯碼驅(qū)動器進(jìn)行驅(qū)動,增加了硬件電路的復(fù)雜性。 ② 動態(tài)顯示驅(qū)動:數(shù)碼管動態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的 8 個顯示筆劃 a,b,c,d,e,f,g,dp的同名端連在一起,另外為每個數(shù)碼管的公共極 COM 增加位選通控制電路,位選通由各自獨(dú)立的 I/O 線控制,當(dāng)單 片機(jī)輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機(jī)對位選通 COM 端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1