版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.1 本文研究的目的、背景和意义数控调频发射器采用单片机控制芯片和锁相环集成电路实现调频立体声信号的调制与发射,四位LED数码管动态扫描显示功能,并且独立设计该产品的显示部分和发射部分,有效的增强了顾客的可操作性。FML数控调频发射器实际上就是一个个人微型广播电台,能将Discman、MD、MP3(包括苹果iPod)等各种便携式音、视频播放器中的音频信号转换成高保真的无线FM调频立体声信号发射出去,扩展了现有播放器的应用功能和应用环境将播放器(MP3/CD/MD/PDA)的音频信号用FM发射出去,让所有在有效距离内的FM接受设备能够在指定频段内接受到发射器所发射的信号。具有功耗低、结构美观、
2、安装方便等特点。本系统采用单片机和BH1415F作主控器件,通过单片机预置数据控制BH1415F,利用BH1415F内部的PLL将频率锁定,所以频率是很稳定的。由于显示采用了四位数码管显示,用键盘输入所需频率,使得操作非常方便直观.。目前大多数高校校内用的调频广播发射器,发射频率固定单一,稳定性差。本文设计了可在80.0MHZ至109 .0MHZ范围内任意设置发射频率的数控调频发射器,可预置 11 个频道,具有单声道/立体声控制功能。 比传统调频台应用更灵活可靠,可广泛应用于学校无线广播、电视现场导播、汽车航行、无线演说等1.2本文的具体工作1、利用AT89C52设计一个数控调频发射器,数控调
3、频发射器可在80.0MHz至109.9MHz范围内任意设置发射频率,可预置11个频道,发射频率调整最小值位0.1MHz具有单声道/立体声控制;2、上网搜集资料,设计电路各模块,分别有单片机模块、键盘输入模块、显示模块、调频发射模块;3、使用PROTEL99 SE画出电路原理图,并画出PCB;4、根据搜索的资料及设计电路的理解,编写出该数控调频发射器的程序,并进行调试。第2章:数控调频发射器的硬件设计2.1电路原理2.1.1数控调频发射器组成该电路由举证键盘模块、调频发射模块、单片机模块、显示模块组成,如图1所示:单片机模块矩阵键盘模块调频发射模块显示模块图1 数控调频发射器组成矩阵键盘模块采用
4、16*16矩阵键盘,接入P1口T4T15为发射频率预置键,T16为单声道/立体声控制键。调频发射模块采用Rohm公司最新生产的调频发射专用集成电路BH1415F,内含立体声信号调制、调频广播信号发射电路,BH1415F内有前置补偿电路、限制器电路、低通滤波电路等,因此具有良好的音色,内置PLL系统调频发射电路,传输频率非常稳定。调频发射频率可用单片机通过串行口直接控制,接单片机的。作为与HB1415的通讯端口,用于传送发射频率控制数据,P3.3用于立体声发射批示。采用12MHZ晶振,模拟串口通讯。单片机模块采用AT89C52,采用最小化应用系统设计,P0口和P2口作为共阳LED数码管驱动用,P
5、1口作为16键的键盘接口。显示模块采用4位数码管动态显示,数据接入P0口,位控制接入P2口用于显示发射频率值。2.1.2基于MCS51的数控调频发射器电路原理图(详见附录I)图2基于MCS51的数控调频发射器电路原理图2. 基于MCS51的数控调频发射器PCB图3基于MCS51的数控调频发射器PCB2.2显示电路2.2.1 LED数码管的原理LED数码显示器由发光二极管(LED)构成“日”字型或“田”字型,发光二极管由磷砷化镓或碳化硅等材料制成,当给发光二极管的PN结两端施加正向电压时,电流加大,由于电子和空穴复合时释放出的热量而发光。LED数码显示器字体高度有、等多种规格;其发光颜色有红、橙
6、、黄、绿、桔红等几种。2.2.2 MCS-51单片机与LED数码管的硬件连接图由于单片机复位后,各个引脚输出都为高电平,因此选用共阴极的LED数码管。每个数码管的使能端com1,com2,com3,com4分别接到P3.0,P3.1,P3.2,P3.3,当向使能端输出低电平,即可选通相对应的数码管。74LS244为三态输出的八组缓冲器和总线驱动器,选用的四位八段数码管本身已经集成了译码器,这样既简化了线路的连接,又降低了错误发生的概率。图3为LED部分。图4 LED部分2.3矩阵键盘电路键盘是微机系统中最常用的人机对话出入设备。键盘有两种基本类型:编码键盘跟非编码键盘。在单片机应用系统中,键盘
7、扫描只是CPU的工作内容之一。CPU对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。8051单片机键盘接线图9如下:图5 矩阵式键盘接线图2.4单片机模块2.4.1时钟源电路单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚Xl和X2跨接石英晶体和两个补偿电容构成自激振荡器,结构如图5中Y2、C28、C29选择12MHz的石英晶体,补偿电容通常选择30pF左右的瓷片电容。2.4.2复位电路单片机小系统采
8、用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其结构如图5中R16、C30和S18。上电自动复位通过电容C30充电来实现。手动按键复位是通过按键将电阻R16与GND接通来实现。图6 单片机模块2.5调频发射模块2.5.1 BH1415F概要BH1415F是一种无线音频传输集成电路,它可以将计算机声卡、游戏机、CD、DVD、MP3、调音台等立体声音频信号进行立体声调制发射传输,配合普通的调频立体声接收机就可实现无线调频立体声传送。适合用于生产立体声的无线音箱、无线耳机
9、、CD、MP3、DVD、PAD、笔记本计算机等的无线音频适配器开发生产。这个集成电路是由提高信噪比(S/N)的预加重电路、防止信号过调的限幅电路、控制输入信号频率的低通滤波电路(LPF)、产生立体声复合信号的立体声调制电路、调频发射的锁相环电路(PLL)组成。1、特点:1)将预加重电路、限幅电路、低通滤波电路(LPF)一体化,使音频信号的质量比分立元件的电路(如:BA1404、NJM2035等)有很大改进。2)导频方式的立体声调制电路。3)采用了锁相环锁频并与调频发射电路一体化,合发射的频率非常稳定。4)采用了MCU 数据直接频率设定,可设定70-120MHz频率,使用上非常方便。2、结构图:
10、图7BH1415结构图3、允许的最大值:(Ta=25基本电路测量)项目符号范围单位条件电源电压Vcc+7v VPin8、12输入电压VIN-DPin15、16、17、18相位比较器输出电压VOUT-DPin7功率Pd450mW工作温度范围Tstg-55+1254、工作范围:(Ta=25)项目符号数值单位条件工作电源电压VccPin8、12工作温度Topr-4085音频输入电平VIN-A-10dBVPin1、22音频输入频率fIN-A2015K HzPin1、22预加重延时PRE155secPin2、21发射频率fTXPin9、11高电平电压标准(H)VIH0.8VccVccPin15、16、1
11、7、18低电平电压标准(L)VILPin15、16、17、185、电性能特征(Ta=25Vcc=5.0V 输入信号为400Hz)项目符号最小标准最大单位条件工作电流IQ142028mAVin=20dBVLandR分离度Sep2540dBVin=20dBVL+R失真度THD%Vin=20dV L+R平衡度-20+2dBVin=20dBVL+R音频增益GV-20+2dBVin=20dBVL+R调制度MP121518%Vin=20dBVPin5副载比SCR-30-20dBVin=20dBVL+R预加重延时P RE405060sVin=20dBVL+R输入电平VIN-16-13-10dBV输出电平为1
12、dB低通频率fC121518KHzVo=-3dBV2、21脚为空发射电平VTX9699102dBV输出频率为时“H”电流IIHA第15、16、17、18脚5V“L”电流IILA第15、16、17、18脚0V“H”电压VOHV第7脚输出电流为“L”电压VOLV第7脚输出电流为“OFF”电流IOFF1100nA第7脚输出电压5V“OFF”电压IOFF2-100nA第7脚输出电压0V6、元件的尺寸及其封装图8 BH1415元件尺寸及其封装2.5.2 电路应用说明1、预加重电路预加重电路是一个非线性音频放大器,它的内部工作点为1/2 Vcc,因为它是非线性放大器,所以输入阻抗取决为内部电阻R3=43K
13、,预加重时间取决于内部电阻R2=22.7K 和外部电容C1=2200p。图9预加重电路时间常数=C1R2 ,R1=1K 是一个限流电阻,防止自激的产生。2、限幅电路图10 限幅电路限幅电路是由二极管限幅的反相放大器组成,它的内部工作点为1/2 Vcc。3、低通滤波电路低通滤波电路是由二阶低通反馈放大电路组成,它的分频点为15KHz。图11低通滤波电路具体的公式如下:、0=1.274 、fc=15KHzR1=R2=R3=Rf=100KCf=1/0 Rf=1/(2)C1=3Q Cf =3X0.577X83.28pF=144pF150pFC2=Cf/3Q=83.28p/(3X0.577)=4850p
14、F4、立体声调制电路音频信号从第1脚和第22脚输入后通过预加重电路、限幅电路和低通滤波电路后送到混合器(MPX)中,另外由第13、14脚接入晶体的振荡电路通过200分频后产生的38KHz副载波信号,同时38KHz副载波通2分频产生的19KHz导频信号。音频信号和38KHz的副载波信号被多路复合器进行了平衡调制,产生了一个主信号(L+R)和一个通过DSB 调制的38KHz 副载波信号(L-R),并与19KHz导频信号组成复合信号从第5脚输出。图12立体声调制电路5、FM发射电路FM发射电路采用稳定频率的锁相环系统。这一部分由高频振荡器、高频放大器及锁相环频率合成器组成。调频调制由变容二极管组成的
15、高频振荡器实现,高频振荡器是一个锁相环的VCO,立体声复合信号通过它直接进行调频调制。图13FM发射电路高频振荡器是由第9脚外部的LC 回路与内部电路组成,振荡信号经过高频放大器从11脚输出,同时输送到锁相环电路进行比较后从第7脚输出一个信号对高频振荡器的值进行修正,确保频率稳定。一但频率超过锁相环设定的频率,第7 脚将输出的电平变高;如果是低于设定频率,它将输出的电平变低;相同的时候,它的电平将不变。6、各脚位内部电路2.5.3调频发射模块电路原理图图14调频发射模块电路原理图第3章:软件设计3.1数控调频发射器的键盘扫描程序3数控调频发射器的键盘扫描程序设计本程序采用4X4行列式查询法,其
16、方法是对P1.0P1.3行线口分别为0然后读入P1口高4位的值。若不为1111则说明有键按下根据P1口值与键号表进行查表对照从而取得按键的键号值,并跳转至键功能程序。键盘扫描程序流程图如图15所示:图15键盘扫描程序流程图3数控调频发射器键盘扫描程序START:LCALL CLEARMEN;上电初始化MAIN:LCALL KEYWORK ;调查键子程序LCALL DISPLAY;LED显示一次AJMPMAIN;转MAIN循环NOP;PC出错处理NOP;AJMP START;重新初始化KEYWORK:MOV P1,#0FFH;置P1口为输入状态CLR P1.0;扫描第1行(第一行为0)MOV A
17、,P1;读入P1口值ANL A,#0F0H;低3位为0CJNE A,#0F0H,KEYCON;高4位不全位1(有键按下)转KEYCONSETB P1.0;扫描第二行(第二行位0)CLR P1.1;MOV A,P1;读入P1口值ANL A,0F0H;低4位位0CJNE A,#0F0H,KEYCON;高4位不全位1(uou键按下)转KEYCONSETB P1.1;扫描第三行(第三行位0)CLR P1.2;MOV A,P1;读入P1口值ANL A,#0F0H;低4位位0CJNE A,#0F0H,KEYCON;高4位不全位1(有键按下)转KEYCONSETB P1.2; 扫描第三行(第三行位0)CLR
18、 P1.3;MOV A,P1;读入P1口值ANL A,#0F0H;低4位为0CJNE A,#0F0H,KEYCON;4位不全位1(uou键按下)转KEYCONSETB P1.3;结束行扫描RETKEYCON:LCALL DL10MS;消抖处理MOV A,P1;再读入P1口值ANL A,#0F0H;低4位位0CJNE A,#0F0H,KEYCHE;高四位不全位1,确有键按下,转KEYCHEKEYOUT:RET;干扰,子程序返回KEYCHE:MOV A,P1;读P1口值MOV KEYWORD,A;放入23H暂存CJLOOP:LCALL DISPLAY;调显示子程序MOV A,P1;读P1口值ANL
19、 A,#0F0H;低4位位0CJNE A,#0F0H,CJLOOP;高4位全为1(键还按着),转CJLOOP等待释放MOV R7,#00H;键释放,置R7位#00好(查表次数)MOV DPTR,#KEYTAB;取键表首地址CHEKEYLOOP:MOV A,R7;查表次数入AMOVC A,A+DPTR;查表XRL A,KEYWORD;查表值与P1口读入值比较JZ KEYOK;为0(相等)转KEYOKINC R7;不等,查表次数加1CJNE R7,#10H,CHEKEYLOOP;查表次数不超过16次转CHEKEYLOOP再查16次RET;退出;KEYOK:MOV A,R7;查表次数入A(即键号值)
20、MOV B,A;放入BRL A;左移ADD A,B;相加MOV DPTR,#KEYFUNTAB;取键功能散表首地址JMP A+DPTR; 查表KEYFUNTAB:LJMP KEYFUN00;键功能散转表。跳至0好键功能LJMP KEYFUN01;跳至01号键功能程序LJMP KEYFUN02;跳至02号键功能程序LJMP KEYFUN03LJMP KEYFUN04LJMP KEYFUN05LJMP KEYFUN06LJMP KEYFUN07LJMP KEYFUN08LJMP KEYFUN09LJMP KEYFUN10LJMP KEYFUN11LJMP KEYFUN12LJMP KEYFUN13
21、LJMP KEYFUN14LJMPKEYFUN15;跳至15号键功能程序RET;散转出错返回;键号对应P1k偶数值表(同时按下两键位无效操作)KEYTAB:DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DHDB 0EBH,0DBH,0BBH,0E7H,0D7H,0B7H,77H,0FFH,0FFH;0号键功能程序KEYFUN00:INC 29H;百位数加1MOV A,29H;入ACLR C;清进位标志CJNE A,02H,FUN00;FUN00:JC FUN00OUT;百位小于2转FUN00OUTFUN00OUT:MOV A,29H;判断百位是0还是1XRL A,
22、#01H;JNZ F00OUT1;若百位为0转F00OUT1MOV 28H,#00H;若百位位1,十位为0AJMP F00OUT;F00OUT1:MOV 28H,#08H;若百位为0,十位数改为8F00OUT:LCALL DISPUTDAT;写入控制芯片RET;01号键功能程序KEYFUN01:INC 28H;十位数加1MOV A,28H;入ACLR C;清进位标志CJNE A,#0AH,FUN01;判断是否小于10FUN01:JC FUN01OUT;十位数小于10转FUN01OUTMOV 28H,#00H;半段百位数试0不是1XRL A,#01H;JNZ F01OUT;MOV 28H,#00
23、H;百位数位1时,十位数为0AJMP F001OUT;FUN01OUT:MOV A,#29;判断百位数是0不是1XRL A,#01H;JNZ F01OUT;MOV 28H,#00H;百位是1时,十位数是0AJMP F001OUT;F01OUT:MOV A,28H;百位为0时,十位数只能是8或9XRL A,#08H;判断是不是8JZ F001OUT;十位数是8转F001OUTMOV A,28H;XRL A,#09H;判断是不是9JZ F001OUT;十位数是9转F001OUTMOV 28H,#08H;不是8也不是9,十位赋值为8F001OUT:LCALL DISPUTDAT;写入控制芯片RET;
24、返回;02号键功能程序KEYFUN02:INC 27H;个位数加1MOV A,27H;CLR C;CJNE A,#0AH,FUN02;判断是否小于10FUN02:JC FUN02OUT;小于10转FUN02OUTMOV 27H,#00H;大于或等于10清为0FUN02OUT:LCALL DISPUTDAT;写入控制芯片RET;03号键功能程序KEYFUN03:INC 26H;个位加1MOV A,26H;CLR C ;CJNE A,#0AH,FUN03;判断事发后小于10FUN03:JC FUN03OUT;小于10转FUN03OUTMOV 26H,#00H;大于或等于10清为0FUN03OUT:
25、LCALL DISPUTDAT;写入控制芯片RET;04号功能键程序(频率预置)MOV 28H,#00HMOV 27H,#09HMOV 26H,#00HLCALL DISPUTDAT;写入控制芯片RET;05号功能键程序(频率预置)MOV 28H,#00HMOV 27H,#08HMOV 26H,#00HLCALL DISPUTDAT;写入控制芯片RET;06号功能键程序(频率预置)MOV 28H,#00HMOV 27H,#05HMOV 26H,#00HLCALL DISPUTDAT;写入控制芯片RET;07号功能键程序(频率预置)MOV 28H,#00HMOV 27H,#00HMOV 26H,
26、#00HLCALL DISPUTDAT;写入控制芯片RET;08号功能键程序(频率预置)MOV 28H,#09HMOV 27H,#08HMOV 26H,#00HLCALL DISPUTDAT;写入控制芯片RET;09号功能键程序(频率预置)MOV 28H,#09HMOV 27H,#06HMOV 26H,#00HLCALL DISPUTDAT;写入控制芯片RET;10号功能键程序(频率预置)MOV 28H,#09HMOV 27H,#04HMOV 26H,#00HLCALL DISPUTDAT;写入控制芯片RET;11号功能键程序(频率预置)MOV 28H,#09HMOV 27H,#02HMOV
27、26H,#00HLCALL DISPUTDAT;写入控制芯片RET;12号功能键程序(频率预置)MOV 28H,#09HMOV 27H,#00HMOV 26H,#00HLCALL DISPUTDAT;写入控制芯片RET;13号功能键程序(频率预置)MOV 28H,#08HMOV 27H,#08HMOV 26H,#00HLCALL DISPUTDAT;写入控制芯片RET;014号功能键程序(频率预置)KEYFUN14:MOV 29H,#00H ;预置80MHz发射频率MOV 28H,#08HMOV 27H,#00HMOV 26H,#00HLCALL DISPUTDAT;写入控制芯片RET;15号
28、键功能程序(立体声/单声道设置键)KEYFUN15:CPL 03H;立体/单声标志取反JNB 03H,MONO;为0转单声道MONOCLR P3.3;为1开立体声只是灯LCALL PUTBIT;发送控制字至BH1415FRETMONO:SETB P3.3;关立体声指示灯LCALL PUTBIT;发送控制字至BH1415FRET3.2基于51单片机的数码管显示程序3数码管的动态扫描动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送
29、出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 3数码管的动态显示程序设计本程序采用动态扫描法显示4位频率数值,数码管动态扫描显示程序流程图如图16所示:图16 数码管动态扫描显示程序流程图3 数码管动态扫描显示程序;显示程序;共阳LED显示,P0口输出断码,P2口输出扫描字DISPLAY:MOV R1,#26;显示首地址MOV R5,#0FEH;没扫描字PLAY:MOV A,R5;放入AMOV P2,A;P2口输出MOV A,R1;取显示数据MOV DPTR,#T
30、AB;取段码首地址MOVC A,A+DPTR;查段码MOV P0,A;从P0输出MOV A,R5;读入扫描字JB ACC.1,PLAY1;不试视为LED,不显示小数点CLR P0.7;试十位,显示小数PLAY1:LCALL DL1MS;点亮1msINC R1;指向下一显示数据JNB ACC.3,ENDOUT;是第4位LED,退出RL A;不是,左移一位MOV R5,A;放回R5SETB P0.7;关小数点AJMP PLAY;转PLAY循环ENDOUT:MOV P2,#0FFH;显示结束,关显示输出口MOV P0,#0FFH;RET;3.3数控调频发射器的频率控制3.3.1 51单片机与BH14
31、15的通信A、数据信号发送方式:B、数据内容说明:3.3.2单片机与BH1415通信程序设计与BH1415通信采用串行通信,P3.0、P3.1、P3.2作为与HB1415的通讯端口,用于传送发射频率控制数据,P3.3用于立体声发射批示。采用12MHZ晶振,模拟串口通讯。程序设计流程图如图17所示:图17 单片机与BH1415通信程序流程图3.3.3单片机与BH1415通信程序一、将BCD码转为十六进制数程序;将BCD码转为十六进制数程序BCDB:MOV CONBITL,#00H;控制字清MOV CONBITH,#00H;控制字清MOV CONBITL,26H;小数位数放入控制子低8位MOV A
32、,27H;个位数乘10操作MOV B,#10LCALL MULLOOP;调乘法子程序MOV ,28H;十位数乘100财足以MOV B,#100LCALL MULLOOP;调乘法子程序MOV A,29H;JNZ ADD3E8;百位数位1转ADD3E8(加1000操作)RET;百位数为0退出ADD3E8:CLR C;清进位档标志MOV A,#0E8H;低8位加法ADD A,CONBITL;累加MOV CONBITL,A;放回CONBITLMOV A,03H;高8位加法ADDC A,CONBITH;控制字高8位处理RET;乘法累加处理程序(将四位显示的十进制BCD码转位1个二进制数)MULLOOP:
33、MUL AB;乘法CLR C;清进位标志ADD A,CONBITL;积低8位与CONBITL相加MOV CONBITL,A;放回CONBITLMOV A,CONBITH;ADDC A,B; 积高8位与CONBITH带进位累加MOV CONBITH,A;放回CONBITHRET;频率控制数据与5位控制码合成BH1415F控制字CONCOMMAND:ANL CONBITH,#07H;高4位为0MOV A,20H;控制字放入AORL A,CONBITH;合成控制字MOV CONBITH,A;放回CONBITHRET二、发送控制字节子程序;发送控制字节子程序;PUTBIT:MOV A,CONBITL;
34、低8位控制字入ASETB P3.2;BH1415F使能LCALL PUT;发送8位MOV A,CONBITH;高8位控制字入ALCALL PUT;发送8位CLR P3.2;BH1415F写禁止CLR P3.0;复位CLR P3.1;复位RET;字节发送子程序PUT:MOV R3,#8;发送8位控制CLR C;清CPUT1:RRC A;带进位位右移(先发低位)NOP;延时4usNOP;NOP;NOP;SETB P3.1;锁存数据(上升沿时锁存数据)NOP;延时4usNOPNOPNOPCLR P3.1;DJNZ R3,PUT1;8位未发完转PUT1再发RET;8位发完结束;513us延时子程序DL
35、513:MOV R3,#0FFHDL513LOOP:DJNZ R3,DL513LOOPRET;1ms延时子程序(LED点亮用)DL1MS:MOV R4,#02HDL1MSLOOP:LCALL DL513DJNZ R4,DL1MSLOOPRET;10ms延时子程序(消抖用)DL10MS:MOV R6,#0AHDL10MSLOOP:LCALL DL1MSDJNZ R6,DL10MSLOOPRET;3.4 数控调频发射器程序;数控调频发射器控制器;26H29H存放显示小数位、个位、十位、百位BCD码数,24H25H存放频率控制数据(16进制);CONBITL EQU 21H ;频率控制字节低8位CO
36、NBITH EQU 22H ;频率控制字节高8位KEYWORD EQU 23H ;存放键扫描试P1口值;ORG 0000H;程序开始地址LJMP START;转STAR执行ORG 0003H;RETI;不用中断程序ORG 000BH;RETI;不用中断程序ORG 0013H;RETI;不用中断程序ORG 001BH;RETI;不用中断程序ORG 0023H;RETI;不用中断程序ORG 002BH;RETI;不用中断程序;初始化程序CLEARMEN:MOVR0,#20H;20H29H循环清0MOV R1,#0AH;CLEARLOOP:MOVR0,#00H;INC R0;DJNZ R1,CLEA
37、RLOOP;MOV P0,#0FFH;4端口置1MOV P1,#0FFH;MOV P2,#0FFH;MOV P3,#0FFH;CLR P3.0;BH1415禁止操作CLR P3.1;CLR P3.2;LCALL KEYFUN15;置立体声发射方式CLEAR1:MOV PCON,#00H;控制寄存器清0MOV 29H,#00H;置初始值位88MHZ(显示为088.0)MOV 28H,#08H;MOV 27H,#08H;MOV 26H,#00H;LCALL DISPUTDAT;写入BH1415芯片(修改发射频率)RET;子程序返回;主程序START:LCALL CLEARMEN;上电初始化MAIN
38、:LCALL KEYWORK ;调查键子程序LCALL DISPLAY;LED显示一次AJMPMAIN;转MAIN循环NOP;PC出错处理NOP;AJMP START;重新初始化KEYWORK:MOV P1,#0FFH;置P1口为输入状态CLR P1.0;扫描第1行(第一行为0)MOV A,P1;读入P1口值ANL A,#0F0H;低3位为0CJNE A,#0F0H,KEYCON;高4位不全位1(有键按下)转KEYCONSETB P1.0;扫描第二行(第二行位0)CLR P1.1;MOV A,P1;读入P1口值ANL A,0F0H;低4位位0CJNE A,#0F0H,KEYCON;高4位不全位
39、1(uou键按下)转KEYCONSETB P1.1;扫描第三行(第三行位0)CLR P1.2;MOV A,P1;读入P1口值ANL A,#0F0H;低4位位0CJNE A,#0F0H,KEYCON;高4位不全位1(有键按下)转KEYCONSETB P1.2; 扫描第三行(第三行位0)CLR P1.3;MOV A,P1;读入P1口值ANL A,#0F0H;低4位为0CJNE A,#0F0H,KEYCON;4位不全位1(uou键按下)转KEYCONSETB P1.3;结束行扫描RETKEYCON:LCALL DL10MS;消抖处理MOV A,P1;再读入P1口值ANL A,#0F0H;低4位位0C
40、JNE A,#0F0H,KEYCHE;高四位不全位1,确有键按下,转KEYCHEKEYOUT:RET;干扰,子程序返回KEYCHE:MOV A,P1;读P1口值MOV KEYWORD,A;放入23H暂存CJLOOP:LCALL DISPLAY;调显示子程序MOV A,P1;读P1口值ANL A,#0F0H;低4位位0CJNE A,#0F0H,CJLOOP;高4位全为1(键还按着),转CJLOOP等待释放MOV R7,#00H;键释放,置R7位#00好(查表次数)MOV DPTR,#KEYTAB;取键表首地址CHEKEYLOOP:MOV A,R7;查表次数入AMOVC A,A+DPTR;查表XR
41、L A,KEYWORD;查表值与P1口读入值比较JZ KEYOK;为0(相等)转KEYOKINC R7;不等,查表次数加1CJNE R7,#10H,CHEKEYLOOP;查表次数不超过16次转CHEKEYLOOP再查16次RET;退出;KEYOK:MOV A,R7;查表次数入A(即键号值)MOV B,A;放入BRL A;左移ADD A,B;相加MOV DPTR,#KEYFUNTAB;取键功能散表首地址JMP A+DPTR; 查表KEYFUNTAB:LJMP KEYFUN00;键功能散转表。跳至0好键功能LJMP KEYFUN01;跳至01号键功能程序LJMP KEYFUN02;跳至02号键功能
42、程序LJMP KEYFUN03LJMP KEYFUN04LJMP KEYFUN05LJMP KEYFUN06LJMP KEYFUN07LJMP KEYFUN08LJMP KEYFUN09LJMP KEYFUN10LJMP KEYFUN11LJMP KEYFUN12LJMP KEYFUN13LJMP KEYFUN14LJMPKEYFUN15;跳至15号键功能程序RET;散转出错返回;键号对应P1k偶数值表(同时按下两键位无效操作)KEYTAB:DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DHDB 0EBH,0DBH,0BBH,0E7H,0D7H,0B7H,77H,
43、0FFH,0FFH;0号键功能程序KEYFUN00:INC 29H;百位数加1MOV A,29H;入ACLR C;清进位标志CJNE A,02H,FUN00;FUN00:JC FUN00OUT;百位小于2转FUN00OUTFUN00OUT:MOV A,29H;判断百位是0还是1XRL A,#01H;JNZ F00OUT1;若百位为0转F00OUT1MOV 28H,#00H;若百位位1,十位为0AJMP F00OUT;F00OUT1:MOV 28H,#08H;若百位为0,十位数改为8F00OUT:LCALL DISPUTDAT;写入控制芯片RET;01号键功能程序KEYFUN01:INC 28H
44、;十位数加1MOV A,28H;入ACLR C;清进位标志CJNE A,#0AH,FUN01;判断是否小于10FUN01:JC FUN01OUT;十位数小于10转FUN01OUTMOV 28H,#00H;半段百位数试0不是1XRL A,#01H;JNZ F01OUT;MOV 28H,#00H;百位数位1时,十位数为0AJMP F001OUT;FUN01OUT:MOV A,#29;判断百位数是0不是1XRL A,#01H;JNZ F01OUT;MOV 28H,#00H;百位是1时,十位数是0AJMP F001OUT;F01OUT:MOV A,28H;百位为0时,十位数只能是8或9XRL A,#0
45、8H;判断是不是8JZ F001OUT;十位数是8转F001OUTMOV A,28H;XRL A,#09H;判断是不是9JZ F001OUT;十位数是9转F001OUTMOV 28H,#08H;不是8也不是9,十位赋值为8F001OUT:LCALL DISPUTDAT;写入控制芯片RET;返回;02号键功能程序KEYFUN02:INC 27H;个位数加1MOV A,27H;CLR C;CJNE A,#0AH,FUN02;判断是否小于10FUN02:JC FUN02OUT;小于10转FUN02OUTMOV 27H,#00H;大于或等于10清为0FUN02OUT:LCALL DISPUTDAT;写入控制芯片RET;03号键功能程序KEYFUN03:INC 26H;个位加1MOV A,26H;CLR C ;CJNE A,#0AH,FUN03;判断事发后小于10FUN03:JC FUN03OUT;小于10转FUN03OUTMOV 26H,#00H;大于或等于10清为0FUN03OUT:LCALL DISPUTDAT;写入控制芯片RET;04号功能键程序(频率预置)MOV 28H,#00HMOV 27H,#0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年武汉大学广慈医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 共享乐器:音乐学习的新方式
- 2024年汽车制造电脑设备采购合同
- 数字经济视角下企业财务管理转型策略研究
- 形容领导讲话好的成语
- 曲柄摇杆机构双曲柄机构与双摇杆机构
- 公园改造项目环境和服务设施的游客需求研究-以广州市晓
- 骆驼祥子-(一)-剧本
- 防水材料在食品加工厂建设中的应用考核试卷
- 陶瓷工艺品的绿色制造与品牌推广策略实施案例考核试卷
- 高职建筑设计专业《建筑构造与识图》说课课件
- 《国珍产品介绍》
- 医院软式内镜清洗消毒技术规范
- 《高速铁路客运乘务实务(活页式)》全套教学课件
- 2024(部编版)道德与法治九年级上册 第二单元 民主与法治 单元测试(学生版+解析版)
- 医疗护理员基础理论知识考试试题题库及答案
- 2024年高考英语词汇表-带音标
- 垫底辣妹教育学思考(3篇模板)
- 框架结构设计国内外研究现状
- 创新人才认证(解决方案)考试题库(附答案)
- 新质生产力-讲解课件
评论
0/150
提交评论