原创
单片机控制PT2313 CD3313 1602显示 汇编程序
源程序《LM4766+PT2313-hifi放大器控制程序》 历尽千辛万苦、查找资料才把2313的部分抠出来修改变成自己想要的 觉得其2313很多功能用不到只有音量和高低音控 单片机是12C5A60S2 使用内部IRC时钟 旋转编码器用的是EC11 初次使用时按住旋转编码器不放在通电 程序会把预置的高低音写入单片机内部存储区 直到正常显示在松手 以后再开机不用按了 (除非高低音异常) 打算在加个电压显示 结果没能实现(没系统的学过编程 自己没事琢磨玩的)
|
- ;;12M晶振可用
- ;----------------------
- ISP_DATA EQU 0C2H ;定义EEPROM相关寄存器
- ISP_ADDRH EQU 0C3H ;此类寄存器地址需参考所用单片机的手册来设置
- ISP_ADDRL EQU 0C4H ;
- ISP_CMD EQU 0C5H
- ISP_TRIG EQU 0C6H
- ISP_CONTR EQU 0C7H
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- P4 EQU 0C0H
- P4SW EQU 0BBH;;;将P4设置成功普通IO口
- P4M1 EQU 0B3H
- P4M0 EQU 0B4H
- MOV P4SW,#70H; #70H = P4.4\P4.5\P4.6
- BASS_TONE EQU 34H ;低音控制缓冲
- TREBLE_TONE EQU 35H ;高音控制缓冲
- M_VOL EQU 32H ;主音量控制缓冲
- IN_BUFF EQU 33H ;输入选择缓存
- PT2314_MSB EQU 3DH ;发送PT2314数高位
- MUTE_BIT BIT P3.2;静音状态指示
- SCL BIT P0.2;P3.4;
- SDA BIT P0.3;P3.5;
- DAT1 EQU 13H ;
- DAT2 EQU 14H ;
- MOV DAT2,#7;
- MOV DAT1,#7;
- RS BIT P3.6 ;定义RS为P2.5
- RW BIT P3.7 ;定义RW为P2.6
- E BIT P4.0 ;定义E为P2.7
- SETB P1.1;
- SETB P0.2;
- SETB P0.3;
- SETB P0.4;
- SETB P0.5;
- SETB P0.6;
- CLR P0.7;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 36H,#02H;VOL
- MOV 37H,#03H;VOL
- MOV 38H,#04H;O
- MOV 39H,#05H;F O
- MOV 40H,#06H;F N
- MOV 41H,#07H;+ -
- MOV 42H,#08H;BASS
- MOV 43H,#09H;BASS
- MOV 44H,#10H;+ -
- MOV 45H,#11H;TR
- MOV 46H,#12H;TR
- MOV 47H,#13H;IN
- MOV 48H,#14;TR<
- MOV 49H,#14;BASS<
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV M_VOL,#30 ;开机时默认音量为第30级 0级声音最大(一共0-63级)
- MOV IN_BUFF,#45H;输入通道默认2 1 #44H 2 #45H 3 #46H
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- JNB P0.4,EEPROMW_0
- LJMP YZ1;
- EEPROMW_0:
- LCALL ERASE
- MOV DPTR,#00H ;第1扇区
- MOV A,DAT1;DAT1;
- ACALL EEPROMW ;写一字节
- LCALL DELAY10;
- MOV DPTR,#100H ;第2扇区
- MOV A,DAT2;
- ACALL EEPROMW ;写一字节
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- YZ1: MOV DPTR,#00H ;第1扇区起始地址;存入新键值
- LCALL EEPROMR ;读
- MOV TREBLE_TONE,A;MOV M_VOL,A;
- LCALL DELAY10;
- MOV DPTR,#100H ;第1扇区起始地址;存入新键值
- LCALL EEPROMR ;
- MOV BASS_TONE,A;
-
- LCALL VOL_DIV; 调用音量除用以显示
- LCALL BASS_DIV;调用低音强度查表用以显示
- LCALL TR_DIV; 高音强度查表用以显示
- LCALL YZ; 调用预置音量
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;×××××××××××××××××××××××××
- LCD:MOV P2,#38H ;设置功能
- LCALL XML
- MOV P2,#38H ;设置功能
- LCALL XML
- MOV P2,#01H ;清除屏幕
- LCALL XML
- MOV P2,#0CH ;设置显示屏开,光标关
- LCALL XML
- MOV P2,#1CH ;设置
- LCALL XML
- LCALL DIP2;
- LCALL DIP1;BASS+TR DIP1显示低音 高音强弱 -7 0 +7
- ;主程序
- JNB P0.4,$;
- LCALL DELAY10;
- JNB P0.4,$;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MAINN: MOV 48H,#14;
- MOV 49H,#14;
- LCALL DIP1;
- MAIN:
- JNB P0.6,KI111;+vol
- JNB P0.5,KI222;-vol
- JNB P0.4,MAIN11;KK77; MUTE
- LJMP MAIN;
- KI111:LJMP KK111
- KI222:LJMP KK222;
- MAIN11: LCALL T2MS;
- JB P0.4,MAIN;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- LCALL T2MS;
- JNB P0.4,GH;
- LCALL KK7;
- LJMP MAINN;
- MUTES: JNB P0.4,$;
- LJMP MAINN;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- GH: JB MUTE_BIT,MUTES;
- MOV 48H,#16;
- LCALL DIP1;
- JNB P0.4,$
- LCALL T2MS;
- JNB P0.4,$
- MOV 66H,#245
- MOV 67H,#245
- MOV 68H,#10
- MAIN1:
- JNB P0.6,KI333;+vol
- JNB P0.5,KI444;-vol
- JNB P0.4,MAIN22;KK77; MUTE
- DJNZ 68H,MAIN1;
- DJNZ 67H,MAIN1
- DJNZ 66H,MAIN1
- LJMP MAINN;
- KI333:LJMP KK333;
- KI444:LJMP KK444;
- MAIN22: LCALL DELAY10;
- JB P0.4,MAIN1;
- JNB P0.4,$
- LCALL DELAY10;
- JNB P0.4,$
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 48H,#14;
- MOV 49H,#16;
- LCALL DIP1;
- MOV 66H,#245
- MOV 67H,#245
- MOV 68H,#10
- MAIN2:
- JNB P0.6,KI555;+vol
- JNB P0.5,KI666;-vol
- JNB P0.4,MAIN33;KK77; MUTE
- ; LJMP MAIN2;
- DJNZ 68H,MAIN2;
- DJNZ 67H,MAIN2
- DJNZ 66H,MAIN2
- LJMP MAINN;
- KI555:LJMP KK555;
- KI666:LJMP KK666;
- MAIN33: LCALL DELAY10;
- JB P0.4,MAIN2;
- JNB P0.4,$
- LCALL DELAY10;
- JNB P0.4,$
- LJMP MAINN;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
- ;秒延时子程序
- DELAY10:
- MOV R4,#10;10
- D10:
- MOV R5,#248;248
- DJNZ R5,$
- DJNZ R4,D10
- RET
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- T2MS: MOV R6,#248
- D21: MOV R7,#248
- DJNZ R7,$
- DJNZ R6,D21
- RET
- ;EEPROM相关操作
- ;-----------------------
- ERASE:;擦除
- MOV ISP_ADDRH,DPH ;送高地址
- MOV ISP_ADDRL,DPL ;送低地址
- MOV ISP_CONTR,#83H ;允许ISP/IAP操作(6~12MHz)
- MOV ISP_CMD,#03H ;扇区擦除
- ACALL ISPCF ;触发IAP
- ACALL ISP_DISABLE ;禁止ISP/IAP操作
- RET
- ;----------------------
- EEPROMW:;写
- MOV ISP_DATA,A ;ACC里是要写入的数据
- MOV ISP_ADDRH,DPH ;送高地址
- MOV ISP_ADDRL,DPL ;送低地址
- MOV ISP_CONTR,#83H ;允许ISP/IAP操作(6~12MHz)
- MOV ISP_CMD,#02H ;送写命令
- ACALL ISPCF ;触发IAP
- ACALL ISP_DISABLE ;禁止ISP/IAP操作
- RET
- ;----------------------
- EEPROMR: ;读
- MOV ISP_ADDRH,DPH ;送高地址
- MOV ISP_ADDRL,DPL ;送低地址
- MOV ISP_CONTR,#83H ;允许ISP/IAP操作(6~12MHz)
- MOV ISP_CMD,#01H ;送读命令
- ACALL ISPCF ;触发IAP
- MOV A,ISP_DATA ;读出的数据放到ACC
- ACALL ISP_DISABLE ;禁止ISP/IAP操作
- RET
- ;----------------------
- ISPCF: ;触发ISP/IAP
- MOV ISP_TRIG,#5AH; #46H ;以MCU型号来定;STC12C2052(46H/0B9H)
- MOV ISP_TRIG,#0A5H; #0B9H ;11F和15F系列相同(5AH/0A5H)
- NOP
- RET
- ;----------------------
- ISP_DISABLE: ;禁止ISP/IAP操作(出于安全考虑才要)
- MOV ISP_CONTR,#00H
- MOV ISP_CMD,#00H
- MOV ISP_TRIG,#00H
- MOV ISP_ADDRH,#0FFH
- MOV ISP_ADDRL,#0FFH
- RET
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- EEPROMW_1:
- LCALL ERASE
- MOV DPTR,#00H ;第1扇区
- MOV A,TREBLE_TONE;MOV A,M_VOL;
- ACALL EEPROMW ;写一字节
- LCALL DELAY10
- LCALL DELAY10
- MOV DPTR,#100H ;第2扇区
- MOV A,BASS_TONE;
- ACALL EEPROMW ;写一字节
- RET;
- ;=============================================
- ;高低音调用
- CTRL_SHUI:
- MOV DPTR,#TONG_DATA
- MOVC A,@A+DPTR
- RET
- TONG_DATA:
- DB 00H,01H,02H,03H,04H,05H,06H,07H
- DB 0EH,0DH,0CH,0BH,0AH,09H,08H
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;主音量调用
- VOL:
- MOV DPTR,#VOL_DATA
- MOVC A,@A+DPTR
- RET
- VOL_DATA:
- DB 3FH,3EH,3DH,3CH,3BH,3AH,39H,38H,37H,36H ;
- DB 35H,34H,33H,32H,31H,30H,2FH,2EH,2DH,2CH
- DB 2BH,2AH,29H,28H,27H,26H,25H,24H,23H,22H
- DB 21H,20H,1FH,1EH,1DH,1CH,1BH,1AH,19H,18H
- DB 17H,16H,15H,14H,13H,12H,11H,10H,0FH,0EH
- DB 0DH,0CH,0BH,0AH,09H,08H,07H,06H,05H,04H
- DB 03H,02H,01H,00H ;(PT2313主音量63)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;显示调用
- TABLE: INC A
- MOVC A,@A+PC
- RET
- DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,2DH,2BH,4FH,46H,20H,4EH,7FH;;1602
- ;0 1 2 3 4 5 6 7 8 9 - + O F 空位 N ← 显示
- ;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 查表数
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;高低音显示调用
- TAB:
- MOV DPTR,#TABLE1
- MOVC A,@A+DPTR ; 以A中的数值为地址偏移量进行查表
- ret;
- TABLE1:
- DB 37H,36H,35H,34H,33H,32H,31H,30H,31H,32H,33H,34H,35H,36H,37H
- ; 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 显示
- ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 查表数
- ;==============================================
- $INCLUDE (DIP.ASM)
- $INCLUDE (YZ.ASM)
- $INCLUDE (PT2314_WR.ASM)
- $INCLUDE (KEYDAT.ASM)
- $INCLUDE (VOL.ASM)
- $INCLUDE (BASS.ASM)
- $INCLUDE (TR.ASM)
- $INCLUDE (MUTE.ASM)
- END
作者: 小羡, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-4026945.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论