女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]下面是以AT89C51為基礎(chǔ)設(shè)計的一個音樂播放器,能夠控制8首音樂的播放以及歌名顯示

下面是以AT89C51為基礎(chǔ)設(shè)計的一個音樂播放器,能夠控制8首音樂的播放以及歌名顯示,基本電路設(shè)計圖如下:

 

按鍵分別控制上一曲、下一曲,開機(jī)啟動時顯示歡迎辭后開始音樂播放。以下是音樂盒的所有代碼(暫時只安排了2首歌的樂譜):

$MOD51

;

RS EQU P3.0

RW EQU P3.1

EN EQU P3.4

;

ORG 00H

JMP START

ORG 03H

JMP BACK_INT

ORG 0BH

JMP TONE_INT ;音調(diào)

ORG 13H

JMP NEXT_INT

ORG 1BH

JMP BEAT_INT ;節(jié)奏

START:

MOV R0,00H

DJNZ R0,$

MOV SP,#60H

CALL READY_OK

CALL FIRST_SONG

LOOP1:

CALL LOAD_TONE

CALL LOAD_BEAT

JNB F0,$

CLR F0

JMP LOOP1

LOAD_TONE: ;載入音調(diào)

CALL TONE_DPTR

MOV A,R7

MOVC A,@A+DPTR

JNZ CONTINUE

MOV R6,#0

MOV R7,#0

JMP LOAD_TONE

CONTINUE:

CALL BABY_DPTR

RL A

DEC A

DEC A

MOV R4,A

MOVC A,@A+DPTR

MOV 20H,A

MOV TH0,A

INC R4

MOV A,R4

MOVC A,@A+DPTR

MOV 21H,A

MOV TL0,A

INC R7

SETB TR0

RET

LOAD_BEAT: ;載入節(jié)奏

CALL BEAT_DPTR

MOV A,R6

INC R6

MOVC A,@A+DPTR

MOV R5,A

MOV TH1,#11

MOV TL1,#220

SETB TR1

RET

TONE_INT:

CLR TR0

CPL P1.0

MOV A,20H

MOV TH0,A

MOV A,21H

MOV TL0,A

SETB TR0

RETI

BEAT_INT:

CLR TR1

DJNZ R5,AGAIN

CLR TR0

SETB F0

JMP EXIT

AGAIN: ;節(jié)奏為0.125s的倍數(shù)

MOV TH1,#11

MOV TL1,#220

SETB TR1

EXIT: RETI

;**************************************************************************************************

READY_OK: ;系統(tǒng)初始化

MOV TMOD,#11H

MOV IE,#8FH

MOV IP,#05H

MOV 22H,#01H

CLR F0

MOV R7,#0

MOV R6,#0

MOV A,#00111000B ;設(shè)定8BIT,2行,5X7字型

CALL WR_INST

MOV A,#00001000B ;關(guān)閉顯示屏

CALL WR_INST

MOV A,#00000001B ;清除顯示屏

CALL WR_INST

MOV A,#00001100B ;開啟顯示屏

CALL WR_INST

MOV A,#00000110B ;設(shè)定AC+1

CALL WR_INST

MOV A,#10000000B ;設(shè)定第一行起始地址

CALL WR_INST

MOV DPTR,#LINE

MOV R0,#40

CALL WR_STRING;

MOV A,#11000000B ;設(shè)定第二行起始地址

CALL WR_INST

MOV DPTR,#LINE0

MOV R0,#40

CALL WR_STRING

CALL WR_YIDONG

SETB C ;初始化完畢

RET

;

WR_YIDONG: ;歡迎詞移動顯示

MOV 27H,#23

LOOP2:

MOV A,#00011000B ;顯示屏左移

CALL WR_INST

CALL DELAY2

DJNZ 27H,LOOP2

MOV A,#00000001B

CALL WR_INST

RET

;

WR_LINE:

MOV A,#10000000B ;設(shè)定第一行起始地址

CALL WR_INST

CALL LINE1_DPTR

MOV R0,#40

CALL WR_STRING;

MOV A,#11000000B ;設(shè)定第二行起始地址

CALL WR_INST

CALL LINE2_DPTR

MOV R0,#40

CALL WR_STRING

RET

;

FIRST_SONG:

MOV A,#10000000B ;設(shè)定第一行起始地址

CALL WR_INST

MOV DPTR,#LINE1

MOV R0,#40

CALL WR_STRING;

MOV A,#11000000B ;設(shè)定第二行起始地址

CALL WR_INST

MOV DPTR,#LINE9

MOV R0,#40

CALL WR_STRING

RET

;

WR_INST: ;顯示器控制命令(寫入、執(zhí)行)

CALL CHECK_BF

CLR RS

CLR RW

SETB EN

MOV P2,A

CLR EN

RET

CHECK_BF:

MOV 23H,A

BUSY:

CLR RS

SETB RW

SETB EN

MOV A,P2

CLR EN

JB ACC.7,BUSY

MOV A,23H

CALL DELAY1

RET

;

WR_STRING: ;顯示內(nèi)容

MOV R1,#0

NEXT:

MOV A,R1

MOVC A,@A+DPTR

CALL WR_DATA

INC R1

DJNZ R0,NEXT

RET

;

WR_DATA:

CALL CHECK_BF

SETB RS

CLR RW

SETB EN

MOV P2,A

CLR EN

RET

;

DELAY1:

MOV 24H,#15

$1: MOV 25H,#200

DJNZ 25H,$

DJNZ 24H,$1

RET

;

DELAY2:

MOV 24H,#6

$3: MOV 25H,#0

$2: MOV 26H,#0

DJNZ 26H,$

DJNZ 25H,$2

DJNZ 24H,$3

RET

;**************************************************************************************************

NEXT_INT: ;下一曲(22H決定歌曲序列)

JNC NEXT_END ;查檢是否初始化完畢

MOV A,22H

RL A

MOV 22H,A

MOV R6,#0

MOV R7,#0

CALL WR_LINE ;下一歌曲名

NEXT_END: RETI

;

BACK_INT:

JNC BACK_END

MOV A,22H

RR A

MOV 22H,A

MOV R6,#0

MOV R7,#0

CALL WR_LINE

BACK_END: RETI

;**************************************************************************************************

TONE_DPTR: ;確定哪首歌的樂譜,根據(jù)樂譜查表獲得該調(diào)振動頻率對應(yīng)的時間表

JB 22H.0,L1

JB 22H.1,L2

JB 22H.2,L3

JB 22H.3,L4

JB 22H.4,L5

JB 22H.5,L6

JB 22H.6,L7

JB 22H.7,L8

L1: MOV DPTR,#TONE1

JMP TONE_END

L2: MOV DPTR,#TONE2

JMP TONE_END

L3: MOV DPTR,#TONE3

JMP TONE_END

L4: MOV DPTR,#TONE4

JMP TONE_END

L5: MOV DPTR,#TONE5

JMP TONE_END

L6: MOV DPTR,#TONE6

JMP TONE_END

L7: MOV DPTR,#TONE7

JMP TONE_END

L8: MOV DPTR,#TONE8

JMP TONE_END

TONE_END: RET

;**************************************************************************************************

BABY_DPTR: ;確定哪首歌的音調(diào)

JB 22H.0,LL1

JB 22H.1,LL2

JB 22H.2,LL3

JB 22H.3,LL4

JB 22H.4,LL5

JB 22H.5,LL6

JB 22H.6,LL7

JB 22H.7,LL8

LL1: MOV DPTR,#BABY1

JMP BABY_END

LL2: MOV DPTR,#BABY2

JMP BABY_END

LL3: MOV DPTR,#BABY3

JMP BABY_END

LL4: MOV DPTR,#BABY4

JMP BABY_END

LL5: MOV DPTR,#BABY5

JMP BABY_END

LL6: MOV DPTR,#BABY6

JMP BABY_END

LL7: MOV DPTR,#BABY7

JMP BABY_END

LL8: MOV DPTR,#BABY8

JMP BABY_END

BABY_END: RET

;**************************************************************************************************

BEAT_DPTR: ;確定哪首歌的節(jié)奏

JB 22H.0,LW1

JB 22H.1,LW2

JB 22H.2,LW3

JB 22H.3,LW4

JB 22H.4,LW5

JB 22H.5,LW6

JB 22H.6,LW7

JB 22H.7,LW8

LW1: MOV DPTR,#BEAT1

JMP BEAT_END

LW2: MOV DPTR,#BEAT2

JMP BEAT_END

LW3: MOV DPTR,#BEAT3

JMP BEAT_END

LW4: MOV DPTR,#BEAT4

JMP BEAT_END

LW5: MOV DPTR,#BEAT5

JMP BEAT_END

LW6: MOV DPTR,#BEAT6

JMP BEAT_END

LW7: MOV DPTR,#BEAT7

JMP BEAT_END

LW8: MOV DPTR,#BEAT8

JMP BEAT_END

BEAT_END: RET

;**************************************************************************************************

LINE1_DPTR: ;確定哪首歌的曲名

JB 22H.0,LN1

JB 22H.1,LN2

JB 22H.2,LN3

JB 22H.3,LN4

JB 22H.4,LN5

JB 22H.5,LN6

JB 22H.6,LN7

JB 22H.7,LN8

LN1: MOV DPTR,#LINE1

JMP LINE_END

LN2: MOV DPTR,#LINE2

JMP LINE_END

LN3: MOV DPTR,#LINE3

JMP LINE_END

LN4: MOV DPTR,#LINE4

JMP LINE_END

LN5: MOV DPTR,#LINE5

JMP LINE_END

LN6: MOV DPTR,#LINE6

JMP LINE_END

LN7: MOV DPTR,#LINE7

JMP LINE_END

LN8: MOV DPTR,#LINE8

JMP LINE_END

;

LINE2_DPTR:

JB 22H.0,LN9

JB 22H.1,LN10

JB 22H.2,LN11

JB 22H.3,LN12

JB 22H.4,LN13

JB 22H.5,LN14

JB 22H.6,LN15

JB 22H.7,LN16

LN9: MOV DPTR,#LINE9

JMP LINE_END

LN10: MOV DPTR,#LINE10

JMP LINE_END

LN11: MOV DPTR,#LINE11

JMP LINE_END

LN12: MOV DPTR,#LINE12

JMP LINE_END

LN13: MOV DPTR,#LINE13

JMP LINE_END

LN14: MOV DPTR,#LINE14

JMP LINE_END

LN15: MOV DPTR,#LINE15

JMP LINE_END

LN16: MOV DPTR,#LINE16

JMP LINE_END

LINE_END: RET

;**************************************************************************************************

LINE: DB ' welcome to baby.s music box '

LINE0: DB ' made by g_salamander '

LINE1: DB 'The 1 song '

LINE2: DB 'The 2 song '

LINE3: DB 'The 3 song '

LINE4: DB 'The 4 song '

LINE5: DB 'The 5 song '

LINE6: DB 'The 6 song '

LINE7: DB 'The 7 song '

LINE8: DB 'The 8 song '

LINE9: DB 'Happy birthday '

LINE10: DB 'Canghai xiao '

LINE11: DB

LINE12: DB

LINE13: DB

LINE14: DB

LINE15: DB

LINE16: DB

;**************************************************************************************************

TONE1:

DB 1,1,2,1,4,3,1,1,2,1,5,4,1,1,8,6,4,3,2,7,7,6,4,5,4,0

TONE2:

DB 6,6,5,3,2,1,3,2,1,16,15,15,15,16,15,16,1,2,3,5,6,5,3,2,1,2,6,6,5,3,2,1,3,2,1,16,15,15,15,16,15,16,1,2,3,5,6,5,3,2,1,2,6,5,3,2,1,1,0

TONE3:

DB

TONE4:

DB

TONE5:

DB

TONE6:

DB

TONE7:

DB

TONE8:

DB

;****************************************************************************************************************************************************

BABY1:

DB 252,68,252,173,253,10,253,52,253,131,253,200,254,6,254,34,254,87,254,133,254,155,254,194,254,228,255,3

BABY2:

DB 250,104,251,5,251,144,252,12,252,68,252,173,253,10,253,52,253,131,253,200,254,6,254,34,254,87,254,133,248,140,249,92

BABY3:

DB

BABY4:

DB

BABY5:

DB

BABY6:

DB

BABY7:

DB

BABY8:

DB

;****************************************************************************************************************************************************

BEAT1:

DB 4,4,8,8,8,16,4,4,8,8,8,16,4,4,8,8,8,8,8,4,4,8,8,8,16

BEAT2:

DB 4,2,2,6,2,16,6,2,4,2,2,16,6,2,6,2,6,2,4,4,6,2,2,2,4,16,4,2,2,6,2,16,6,2,4,2,2,16,6,2,6,2,6,2,4,4,6,2,2,2,4,16,6,2,2,2,4,16

BEAT3:

DB

BEAT4:

DB

BEAT5:

DB

BEAT6:

DB

BEAT7:

DB

BEAT8:

DB

;****************************************************************************************************************************************************

END

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

1 USB通信技術(shù)   USB(Universal Serial Bus)是一種目前通用的串行總線技術(shù),它是通過PCI總線和PC的內(nèi)部系統(tǒng)數(shù)據(jù)線連接,實現(xiàn)數(shù)據(jù)的傳送,具有即插即用的功能,

關(guān)鍵字: usb總線 at89c51 usb通信

引 言   隨著計算機(jī)技術(shù)、通訊技術(shù)、網(wǎng)絡(luò)技術(shù)的發(fā)展,智能化逐步滲入人們的家庭生活。智能家庭網(wǎng)絡(luò)是指在家庭內(nèi)部通過一定的傳輸介質(zhì)(如雙絞線、電力線等)將各種電氣設(shè)備和電氣子系統(tǒng)連接起來,

關(guān)鍵字: 智能家居 at89c51 hbs協(xié)議

AT89c51與AT89S51單片機(jī)的區(qū)別

關(guān)鍵字: at89c51 at89s51 單片機(jī)

溫度的測量和控制在激光器、光纖光柵的使用及其他的工農(nóng)業(yè)生產(chǎn)和科學(xué)研究中應(yīng)用廣泛。溫度檢測的傳統(tǒng)方法是使用諸如熱電偶、熱電阻、半導(dǎo)體PN結(jié)之類的模擬溫度傳感器。信號經(jīng)取樣、放大后通過模數(shù)轉(zhuǎn)換,再交自單片機(jī)處理。被測溫度信號...

關(guān)鍵字: at89c51 ds18b20 溫度測量

基于單片機(jī)AT89C51帶倒計時的計數(shù)器

關(guān)鍵字: at89c51 倒計時 單片機(jī) 計數(shù)器

單片機(jī)電機(jī)轉(zhuǎn)速測量系統(tǒng)仿真統(tǒng)采用單片機(jī)中T1計數(shù)器對轉(zhuǎn)速脈沖進(jìn)行計數(shù)。定時器T1 工作于外部事件計數(shù)方式,對轉(zhuǎn)速脈沖計數(shù); T0 工作于定時器方式。每到1 s 讀1 次計數(shù)值,此值即為脈沖信號的頻率,根據(jù)式( 1) 可計...

關(guān)鍵字: at89c51 單片機(jī) 測量系統(tǒng) 電機(jī)轉(zhuǎn)速

Ds3231+12864液晶顯示AT89C51帶溫度功能的時鐘程序。

關(guān)鍵字: 12864 at89c51 ds3231 時鐘程序 液晶顯示

隨著現(xiàn)代科技的發(fā)展,高科技產(chǎn)品以其簡潔化、便攜等,給人們帶來了很大的方便。而“搖搖棒”以其更加簡捷與新穎的信息傳遞方式給人們帶來耳目一新的感受,也必將會給人們帶來一種新的方便的文化傳遞方式,常用在晚會及大型的娛樂節(jié)目場合...

關(guān)鍵字: at89c51 單片機(jī) 發(fā)光二極管 陣列

本文以6MHz時鐘的單片機(jī)AT89C51系統(tǒng)為例,說明時鐘中斷的應(yīng)用:

關(guān)鍵字: at89c51 中斷 單片機(jī) 系統(tǒng)時鐘

隨著家用電冰箱的普及,人們對電冰箱的控制功能要求越來越高,這對電冰箱控制器提出了 更高的要求,多功能、智能化是其發(fā)展方向之一,傳統(tǒng)的機(jī)械式、簡單的電子控制已經(jīng)難以 滿足發(fā)展要求。本文介紹了采用AT89C51作為控制器核心...

關(guān)鍵字: at89c51 twh9221 電冰箱
關(guān)閉