已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PWM信号发生器的研制前 言脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。当然,脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶 体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。随着电子技术的发展,出现了多种PWM技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等,而在镍氢电池智能充电器中采用的脉宽PWM法,它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过调整PWM的周期、PWM的占空比而达到控制充电电流的目的。其有两大优点,优点一: 是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响;优点二:是对噪声抵抗能力的增强,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。总之,PWM既经济、节约空间、抗噪性能强,是一种值得广大工程师在许多设计应用中使用的有效技术。最重要的是PWM控制技术一直是变频技术的核心技术之一,由于PWM可以同时实现变频变压反抑制谐波的特点,在交流传动及至其它能量变换系统中得到广泛应用。本文就简单介绍了PWM信号发生器的概念、作用及定义,分析了PWM产生电路的工作原理和设计过程。主要是以AT89C51最小系统为核心控制单元,通过对外围电路芯片的设计实现PWM输出波形的频率、电压幅值、占空比的连续调节,达到产生PWM信号目的。第一章 PWM波产生电路工作原理1.1 系统设计内容与要求一、设计内容:PWM信号发生器的研制二、设计要求:(1) 采用定时/计数器8253(2) PWM信号的工作频率为500Hz(1000Hz)(3) 占空比可变且显示占空比1.2简单结构框图如图1.1所示为系统的设计结构框图。此系统由89C51单片机核心控制单元、HD7279控制的显示与键盘扫描单元以及8253计数单元组成,其中还用到了74LS138译码器作为单片机的片选输出来作为8253计数器的口地址控制单元,在完成89C51与8253连接的电路中还用到了74LS373地址锁存器和一些逻辑门电路组成。显示器89C51最小系统定时/计数器波形调整产生PWM波图1.1 设计结构框图1.3工作原理PWM波是由89C51单片机最小系统通过软件编程对显示器模块和定时/计数器模块的控制,同时通过改变给8253计数器的初值(初值通过键盘操作实现)可实现等幅但宽度可调的脉冲,再通过逻辑门整形电路(图1.2所示)而产生;同时将通过数码管显示单元显示出相应的占空比,从而实现可视占空比可调的PWM波的产生。图1.2 波形调整图第二章 PWM波硬件设计2.1 方案比较与确定2.1.1 方案比较方案一:直接采用51单片机TO/TI定时,通过软件编程产生PWM脉冲。以89C51单片机为核心控制单元,采用计数法加软件延时法,以及与按键相配合。当有按键按下后,通过键盘扫描将所按键值作为PWM信号的的占空比输入,经软件程序处理后实现PWM信号的占空比可变,并在数码管上显示相应的占空比。方案二:选用可编程芯片8253的计数器0作为PWM信号发生器,8253的计数器0工作在可重复触发单稳态方式1下,它的输出口OUT0产生宽度可调的PWM信号脉冲,该输出脉冲宽度为:W=N/f;输出的占空比为:P=W1(f/N); 式中,W为输出脉冲宽度,单位是秒;W1为一个周期内高电平的脉冲宽度,P为占空比;f为计数器时钟信号的频率;N为单片机为其置入的计数值。PWM的频率由GATE0上所加的信号频率决定;在计数器0的GATE0端输入一定频率的方波,该频率由计数器1的OUT1输出产生,再由89C51的ALE锁存信号给CLK1和CLK0同步的时钟脉冲,最后改变计数器值N产生连续可调的PWM信号。如图2.1所示。键盘PWM信号825389C51HD7279数码管图2.1 系统原理框图2.1.2 方案确定及原因经过对比两方案,最终选择了方案二,其主要原因可归纳为以下两点:(1)、方案一中产生PWM脉宽调制波形的算法虽然实现简单,成本低廉,但是受单片机端口数量及单片机工作频率(主要为晶振频率)的限制,单片机无法实现多路控制;(2)、单片机利用程序实现PWM脉宽调制波形,程序执行存在相对延迟现象,尽管单次延迟时间很小,但是延迟时间的累积会对较为复杂的控制产生难以估量的影响,而且单片机搭建的电路抗干扰性较差,易受感性负载的影响,电路的稳定性较低;(3)、方案二中选用可编程芯片8253的计数器作为PWM信号发生器,通过使用计数器0和计数器1,最后改变计数器值N产生连续可调的PWM信号而且具有较高的稳定性和抗干扰能力。2.2 单元电路设计2.2.1 振荡电路 图2.2 单片机振荡电路图由2.2所示电路图可知:该振荡电路是由一个12MHZ石英晶振、两个接地的30PF反馈电容与51的XTAL1相接构成。单片机需要不断地提供时钟脉冲,也可以说时钟脉冲是计算机的心脏,而时钟脉冲又是有振荡电路决定,所以振荡电路是计算机的核心。它控制着计算机的工作节奏。本次专业课程设计用的晶振频率是11MHz,它的作用有两个:一是驱动振荡器工作,二是对振荡器的频率F 起微调作用,反馈电容值与振荡器的频率二者成反比,反馈电容值越大,振荡器的频率就越小。2.2.2 复位电路图2.3 单片机复位电路图由2.3所示电路图可知:本设计采用的是常用的的上电复位,复位过程很简单,在电源刚刚合上时,电流经过电阻对电解电容充电,这样在电阻上就形成了一个电压,对于单片机来说,这个电压就是复位电压。经过若干毫秒以后,电解电容器被充满电,这时电阻就没有电流流过,电阻两端也就没有电压,单片机的复位脚RET电压恢复为零,复位工作结束,单片机开始工作。在本次设计中选用的是10uF的电解电容,10K的电阻以及5V的外接电压。又由于单片机需要复位以后才能正常工作,复位的目的就是使单片机处于一个基准点,在这个基准点,程序将会从C51的MAIN主行数的第一条语句开始执行。2.2.3 键盘扫描及显示电路HD7279A 只需要4 根线(CS、CLK、DATA、KEY)与AT89C51 相连,仅仅使用单片机的P1.0P1.3 口,大大节省了CPU 的端口资源,大大简化系统电路,即可实现键盘接口功能。由于HD7279A 内部含有去抖动电路,软件编程时不需要键盘的消抖动程序,而且HD7279A 的控制指令也使得软件编程更简单。扫描键盘时,如果有键按下,直接通过读键盘数据指令即可在LCD 上显示键入的键值,而不需要通过AT89C51 口线来控制键盘输入值。所以选择HD7279 作为驱动芯片的键盘电路。常用的数码管显示器由八个发光二极管组成,其中七个发光二极管a-g控制七个段的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器控制简单,使用方便,而且字符较亮,价格适宜,所以选择数码管显示.如图2.4所示。图2.4 键盘与显示控制电路图2.2.4 定时/计数器电路本模块是此次设计的核心模块,是利用可编程计数器8253与89C51单片机的特殊连接所实现的(如图2.5)。图2.5计数器控制电路图一片8253共有3个独立通道,各通道共有6种工作方式,其中方式1(可编程序单稳)的工作性能是:当控制字装入控制寄存器后,OUT变高,在GATE输入信号的上升沿以后的整个技术过程中,OUT变低,一旦技术结束则OUT变高。下一次GATE上升沿触发,OUT再一次变低,输出一定宽度的负脉冲。若在OUT为低时写入新的计数值,则在下一次触发之前将不影响单稳脉冲宽度。由8253可编程序单稳工作特性可知,每启动一次,定时时间由计数值而定。该特性适合本次设计PWM波形的工作要求。单片机向8253的通道0赋值给方式1的控制字及计数值T0,OUT0输出为高电平,但计数器0未启动不工作,这时通道处于等待状态,等待GATE0的上升沿到来。单片机向8253的通道1赋值给方式1的控制字及计数值T1,OUT1输出由低变高,因而在GATE0端得到一个上升触发脉冲启动通道0定时,在定时中OUT0变为低电平,这时8253开始进入双定时器互相触发启动的工作状态。在通道0第一次定时结束,OUT0输出变高,是GATE1端得到一个上升触发脉冲启动通道1定时,而通道0处于等待状态。当时钟频率为f0,调宽脉冲周期为T(T=t+t)时,则有: T0=f*t, T1=f*t (1)当t用T与t取代时,可得: T1=f*(T-t) (2)由此看来,当需要得到宽度为t的调宽脉冲时,必须给通道0置计数值为T0,通道1置计数值为T1,当需要调整脉宽时,只需按式(1)和式(2)重新计算T0和T1,置入各对应通道,输出波形后自动得到调整,从而实现了占空比可变的脉宽调制的目的在这里单片机除了需要给8253定时/计数器 8位数据以外,还需用到74LS373地址锁存器对单片机的地址进行锁存,由于74LS373内部是由8个D触发器构成的,在这里其中的两个触发器输出Q1和Q2是8253中的A0和A1的输入信号,使得8253得到正确的控制口地址和计数器口地址,这也是8253计数器正常工作所必须的。其次是单片机的P2.5作为8253的片选信号,以此来进一步确定8253的口地址,8253的读写信号分别由单片机的读写信号直接给予,然后是ALE地址所存信号给8253的CLK1和CLK0送同步时钟信号,最后通过OUT1的输出脉冲打开GATE0,使得OUT0经过一个反相器后得到我们最终所需的PWM脉冲信号。第三章 PWM波软件设计3.1 编程语言选择与确定3.1.1 编程常用语言 a、汇编语言 b、C语言3.1.2 语言确定语言确定根据:(1)、C语言一种结构化语言,在大多数情况下其机器代码生成效率和汇编语言相当,而且运用起来也比较简单,在MCS-51编程中更是很多程序员喜欢的语言,但是考虑到太久没有用,不是很熟悉了;(2)、汇编语言的机器代码生成效率很高,汇编语言的开发效率高,可以充分地利用片内的资源。具有直接和硬件打道、执行代码的效率高等特点,例如对时钟要求很严格时,使用汇编语言成了唯一的选择。汇编在延时和中断时有很大的作用,有时C是不太好用的;所以综合上述两点还是选择了汇编语言,其实选择汇编最主要还是因为刚学汇编比较熟悉,也比较顺手。3.2 7279键盘功能设计 3.2.1 键盘设计键盘按键功能设计如下:表3.1 7279键盘功能设计32107654设置/确认983.2.2 相关程序a、这部分其实是很简单的有TAB表实现,如下:TAB: DB 7EH,30H,6DH,79H,33H,5BH,5FH,70H,7FHDB 7BH,00H,01H,76h,30h,4Eh,6Fh,1Dh,3Dh b、说明:其中前11个是实现上键盘的码字表。3.3实现占空比可调的PWM波设计3.3.1 存储单元介绍表3.2 存储单元介绍DFFFH8253控制口地址DFFDH8253计数器1地址DFFCH8253计数器0地址50H,51H8253计数器0的计数初值存储单元48H,49H,4AH键入的占空比存储单元40H,41H,42H,43H,44H,45H,46H,47H显示缓冲区3.3.2 关键字介绍表3.3 关键字介绍MAIN主程序KEY读键值子程序STFS发送一字节子程序STJS接收一字节子程序DISPLAY7279显示子程序DIS_DEAL初始化显示处理子程序INT_72797279初始化子程序PWM_DEALPWM的占空比数据处理子程序PWM_OUTPWM的输出子程序DIS_DEAL1修改后的显示处理子程序TV4键入占空比子程序TAB07279键值表TAB0到9及good和nice字型码3.3.3 相关程序及简单说明ORG 0000HLJMP MAINMAIN:MOV SP,#67H ACALL INIT_7279 ;7279初始化L1:ACALL PWM_DEAL ;PWM的占空比数据处理 ACALL PWM_OUT ;PWM输出 ACALL DIS_DEAL ;显示处理L2:ACALL DISPLAY ;7279显示子程序 ACALL KEY CJNE A,#0FFH,L4 ;判断有无键按下LJMP L2L4:CJNE A,#0AH,L2 ;判断是否按下设置键 ACALL TV4 SJMP L1PWM的占空比数据处理PWM_DEAL:MOV R7,#02HMOV R0,#4AHMOV A,R0L6:MOV B,#0AH MUL AB ;十进制占空比转化为二进制 DEC R0ADD A,R0DJNZ R7,L6MOV B,#25H MUL ABMOV 50H,AMOV A,BMOV 51H,ARETPWM的输出PWM_OUT:MOV DPTR,#0DFFFH MOV A,#74H ;计数器1,方式2,二进制计数MOVX DPTR,AMOV DPTR,#0DFFDH;MOV A,#74H ;OUT1 输出 500HZ的方波,计数器1的初值为0E74H MOVX DPTR,AMOV A,#0EHMOVX DPTR,AMOV DPTR,#0DFFFHMOV A,#32H ;计数器0,方式1,二进制计数 MOVX DPTR,AMOV DPTR,#0DFFCHMOV A,50H ;OUT0 输出脉宽可调的频率为500HZ的脉冲,计数器0的初值为键入值,存在50H,51H单元里 MOVX DPTR,AMOV A,51H MOVX DPTR,ARET3.4 显示及显示处理部分3.4.1 显示部分显示部分比较简单就是将显缓区的40H-47H这8个单元中的数据由数码管显示出来,其相关程序及简单说明如下:显示部分DISPLAY:MOV R5,#08H ;显示子程序,显示8个字符,显缓区40H-47H MOV R0,#40H ;显缓区首址 MOV R1,#97H ;命令字控制显示的数码管 DL1:CLR P1.0 MOV R6,#0CH DL2:DJNZ R6,DL2 MOV A,R1 ;发送命令字 ACALL STFS; MOV R6,#06H DL3:DJNZ R6,DL3 ;延时 MOV A,R0 ADD A,#0DH MOVC A,A+PC ;查表 ACALL STFS ;发送显示内容 MOV R6,#02H DL4:DJNZ R6,DL4 ;延时SETB P1.0 INC R0 DEC R1 DJNZ R5,DL1 ;循环次数 RET TAB: DB 7EH,30H,6DH,79H,33H,5BH,5FH,70H,7FHDB 7BH,00H,01H,76h,30h,4Eh,6Fh,1Dh,3Dh 3.4.2 键盘扫描以及显示部分该部分由初始化处理,以及根据键盘扫描修改(键入修改占空比)后的处理:a、 初始化处理:初值为键入值,存在50H,51H单元里 MOVX DPTR,AMOV A,51H MOVX DPTR,ARET初始化显示处理DIS_DEAL:MOV 40H,#09H ;上电后,前五个数码管显示good MOV 41H,#10HMOV 42H,#10HMOV 43H,#11HMOV 44H,#0BHMOV 45H,4AH ;最后三个数码管所显示的占空比值存于48H-4AH单元中MOV 46H,49HMOV 47H,48HRETb、 修改后显示处理以及键盘扫描:修改后显示处理DIS_DEAL1:MOV 40H,#0CH ;按下确认键后,前五个数码管显示nice MOV 41H,#0DHMOV 42H,#0EHMOV 43H,#0fHMOV 44H,#0BH MOV 45H,4AH ;最后三个数码管所显示的占空比值存于 48H-4AH单元中MOV 46H,49HMOV 47H,48H RET键入占空比 TV4:MOV B,A CLR P1.0 MOV A,#88H ;7279闪烁指令 ACALL STFS MOV A,#0FBH ;第六个数码管闪烁 ACALL STFS SETB P1.0 MOV A,B ACALL DIS_DEAL1 ;显示结果处理 ACALL DISPLAY ;7279显示子程序 ACALL KEY ;键入第一个值 CJNE A,#01H,M1 ;与1比较,不能大于等于1 M1:JC M2 LJMP TV4 M2:MOV 4AH,A ;将第一个值存于4AH单元中 MOV B,A CLR P1.0 MOV A,#88H ACALL STFSMOV A,#0FDH ;第七个数码管闪烁 ACALL STFS SETB P1.0MOV A,BL12:ACALL DIS_DEAL1 ;显示结果处理 ACALL DISPLAY ;7279显示子程序 ACALL KEY ;键入第二个值 CJNE A,#0AH,L11 ;与10比较,不能大于等于10L11:JNC L12 MOV 49H,A ;将第二个值存于49H单元中 MOV B,A CLR P1.0 MOV A,#88H ACALL STFSMOV A,#0FEH ;第八个数码管闪烁 ACALL STFS SETB P1.0 MOV A,B L13:ACALL DIS_DEAL1 ACALL DISPLAY ACALL KEY ;键入第三个值 CJNE A,#0AH,L14 ;与10比较,不能大于等于10 L14:JNC L13 MOV 48H,A ;将第三个值存于48H单元中 L15:ACALL DIS_DEAL1 ACALL DISPLAY ACALL KEY CJNE A,#0AH,L16 ;判断确认键是否按下 MOV B,ACLR P1.0 MOV A,#88H ACALL STFSMOV A,#0FFH ;取消闪烁 ACALL STFS SETB P1.0 MOV A,B ACALL DIS_DEAL1 ;修改后的最终结果显示处理 ACALL DISPLAY ;7279显示最终结果 SJMP L18 L16:SJMP L15 L18:RET发送一字节STFS:MOV R7,#08H ;与7279串行发送子程序 SL1:RLC A MOV P1.2,C SETB P1.1 MOV R6,#02HSL2: DJNZ R6,SL2 CLR P1.1 MOV R6,#02HSL3: DJNZ R6,SL3 DJNZ R7,SL1 RET ;键扫KEY:ACALL KEY1 CJNE A,#0FFH,KL1CLR 00HRETKL1:JB 00H,KL2 SETB 00HACALL KEY2RETKL2:MOV A,#0FFH RETKEY1:CLR P1.0 ;读键值子程序 MOV R6,#0CH L01:DJNZ R6,L01 MOV A,#15H ACALL STFS MOV R6,#06H L02:DJNZ R6,L02 ACALL STJS SETB P1.0 RETSTJS:MOV R7,#08H ;与7279串行接收子程序 L21:SETB P1.1 SETB P1.2 MOV R6,#02H L22:DJNZ R6,L22 MOV C,P1.2 RLC A CLR P1.1 MOV R6,#02H L23:DJNZ R6,L23 DJNZ R7,L21 RETKEY2:MOV B,A MOV R2,#00H MOV R7,#0FH L31:MOV A,R2 ADD A,#0AH MOVC A,A+PC CJNE A,B,L32 SJMP L33L32:INC R2 DJNZ R7,L31 L33:MOV A,R2 RET TAB0: DB 1CH,1DH,1EH,1FH,14H ;7279键值表 DB 15H,16H,17H,0CH,0DH DB 0EH,0FH,04H,05H,06H DB 07H 7279初始化INIT_7279:CLR P1.0 ;7279初始化 MOV R6,#0CH NL0:DJNZ R6,NL0 MOV A,#0A4H ACALL STFS MOV R6,#02H NL1:DJNZ R6,NL1 SETB P1.0 MOV 4AH,#00H ;上电后,数码管显示初始值050,即占空比50% MOV 49H,#05H MOV 48H,#00H RET3.4 软件设计总框图程序开始运行时对存储区及7279初始化,判断是否有按键按下,无键按下,重新进行键盘扫描;有键按下,判断是哪个键按下,并进行相应的操作,因此整个系统设计的流程图如图3.1所示。图 3.1程序流程图第四章 设计结论及分析4.1 调试过程 (1)、首先开始软件设计,采用KeilC51编译器进行源程序编译及仿真调试,直到通过编译;(2)、紧接着开始硬件电路板的制作,硬件电路制作完毕,用万用表检测有无短路开路等现象,确定硬件电路没有问题后;(3)、将通过编译的程序烧进89C51芯片(89C52芯片),再用示波器的串口线与硬件电路相连,运行程序进行调试。在软件调试过程中发现程序运行没有错误,但在输入占空比数值后,按下确认键不能在数码管上显示修改后的占空比值,得不到想要的实验结果。而后凭借着流程图,一步一步地检查程序的走向,最终发现原来是程序中判断是否按下确认键后,没有调用显示程序。当加入显示子程序后,运行程序实现了预期的实验结果。而在硬件过程中,同样出现了问题,在各方面都检查无误后却总观察不到预期的PWM波形,更别说是可调的了,但是在我们很失望的时候,发现原来有根线接错了,在重新焊接后,顺利的达到了设计要求,得到了占空比可调的PWM波从而成功的完成了本次课程设计。4.2 设计结果分析制作完成后,将8253计数器0的OUT0端连接示波器上。上电后,7279显示器初始化显示“good050“字样,示波器上显示稳定的占空比为50%的方波。按下“设置/确认” 键后,显示器上第6个数码管开始闪烁,即提示可以修改此数值。选择一个数字键按下,若选择“1“或比”1“大的数字键,则这个数码管仍然闪烁,即提示输入错误;若选择”0“数字键,则第六个数码管消闪并显示了”0“,同时第七个数码管开始闪烁,这个“0”即作为占空比的百位值。接着输入数字,此时可以选择”0“到”9“中的任意一个数字作为占空比的十位值(比如“2”),按下后第七个数码管消闪并显示了所按下的数字,同时第八个数码管开始闪烁。与第七个数码管一样按下一个数字键作为占空比的个位值(比如“5”),第八个数码管则显示所按下的数字,但不消闪,直到再次按下“设置/确认”键后,第八个数码管消闪。此时修改完成,显示器上显示“nice025”,即占空比变为25%,从操作中可以发现提供修改的占空比范围为0%-99%。再观察示波器上的波形及相应测量参数,可以得出输出的PWM波占空比的确变为25%,达到设计要求。第五章 心得体会这已经第二次课程设计了。通过这次课程设计明白了许多,例如明白了许多自身的不足与缺点,如实践经验上的缺乏,对设计的原理理解缺乏等等。与此同时,也学到了许多宝贵的经验与教训,这是平时学不到的。这些可以受益一生。单片机的应用系统由硬件和软件所组成。硬件主要指单片机扩展的存储器,输入/输出设备等硬件部件机器,而软件是各种工作程序的总称。只有硬件和软件紧密配合,协调一致,才能组成高性能的单片机应用系统。对于本次专业课程设计PWM波的研制,是简单的单片机应用系统,采用顺序设计方法。通过此次专业课程设计,觉得能做这样的课程设计是十分有意义。在已度过的三年大学生活里大多数接触的是专业基础课。在课堂上掌握的仅仅是专业基础课的理论面,如何去面对现实中的各种设计要求?如何把所学到的专业基础理论知识用到实践中去呢?想做类似的大作业就提供了良好的实践平台。在做本次课程设计的过程中,感触最深的当属查阅了很多次设计书和指导书。为了让自己的设计更加完善,更加符合工程标准,一次次翻阅单片机课本和课件是十分必要的,同时也是必不可少的。作为一名专业学生掌握一门或几门编程软件同样是必不可少的,虽然本次课程设计没有要求用汇编语言,但整个设计过程中都用到了它。因为刚学不久,当然也有的同学用的是C语言,各有所长罢了。通过这次设计我们有些体会,其一是要多交流。交流能让大家的想法统一、能让大家把分歧解决,能较好的交流可以促进项目的开发进度,也可以让组员之间更加默契、效率更高。其二是多主动,其实也可以说是多思考。可能很多人都会想自己主动了,可是仔细想想,许多提出来的问题是动动脑筋能解决的事,只是习惯的和别人讨论另外,课堂上也有部分知识不太清楚,于是又不得不边学边用,时刻巩固所学知识,这也是本次课程设计的第三大收获。整个设计我基本上还满意,由于水平有限,难免会有错误,由此我更好地了解到自己的不足,以后要加以弥补。参考文献1 房小翠、王金凤. 单片机实用系统设计技术.北京:国防工业出版社,19962 楼然苗、李光飞.单片机课程设计指导.北京:北京航空航天大学出版社,20073 蔡明文、冯先成. 单片机课程设计. 武汉:华中科技大学出版社 , 20074苏凯,刘庆国.MCS-51系列单片机系统原理与设计.北京:冶金工业出版5徐建军主编.MCS-51系统单片机应用及接口技术.北京:人民邮电出版社,20036姜至海、刘连鑫主编.单片微型计算机原理及应用.北京:机械工业出版社,2007附 录 一系统设计程序代码ORG 0000HLJMP MAINMAIN:MOV SP,#67H ACALL INIT_7279 ;7279初始化L1:ACALL PWM_DEAL ;PWM的占空比数据处理 ACALL PWM_OUT ;PWM输出 ACALL DIS_DEAL ;显示处理L2:ACALL DISPLAY ;7279显示子程序 ACALL KEY CJNE A,#0FFH,L4 ;判断有无键按下LJMP L2L4:CJNE A,#0AH,L2 ;判断是否按下设置键 ACALL TV4 SJMP L1;PWM的占空比数据处理PWM_DEAL:MOV R7,#02HMOV R0,#4AHMOV A,R0L6:MOV B,#0AH MUL AB ;十进制占空比转化为二进制 DEC R0ADD A,R0DJNZ R7,L6MOV B,#25H MUL ABMOV 50H,AMOV A,BMOV 51H,ARET;PWM的输出PWM_OUT:MOV DPTR,#0DFFFH MOV A,#74H ;计数器1,方式2,二进制计数MOVX DPTR,AMOV DPTR,#0DFFDH;MOV A,#74H ;OUT1 输出 500HZ的方波,计数器1的初值为0E74H MOVX DPTR,AMOV A,#0EHMOVX DPTR,AMOV DPTR,#0DFFFHMOV A,#32H ;计数器0,方式1,二进制计数 MOVX DPTR,AMOV DPTR,#0DFFCHMOV A,50H ;OUT0 输出脉宽可调的频率为500HZ的脉冲,计数器0的初值为键入值,存在50H,51H单元里 MOVX DPTR,AMOV A,51H MOVX DPTR,ARET;初始化显示处理DIS_DEAL:MOV 40H,#09H ;上电后,前五个数码管显示good MOV 41H,#10HMOV 42H,#10HMOV 43H,#11HMOV 44H,#0BHMOV 45H,4AH ;最后三个数码管所显示的占空比值存于48H-4AH单元中MOV 46H,49HMOV 47H,48HRET;修改后显示处理DIS_DEAL1:MOV 40H,#0CH ;按下确认键后,前五个数码管显示nice MOV 41H,#0DHMOV 42H,#0EHMOV 43H,#0fHMOV 44H,#0BH MOV 45H,4AH ;最后三个数码管所显示的占空比值存于48H-4AH单元中MOV 46H,49HMOV 47H,48H RET;键入占空比 TV4:MOV B,A CLR P1.0 MOV A,#88H ;7279闪烁指令 ACALL STFS MOV A,#0FBH ;第六个数码管闪烁 ACALL STFS SETB P1.0 MOV A,BACALL DIS_DEAL1 ;显示结果处理ACALL DISPLAY ;7279显示子程序 ACALL KEY ;键入第一个值 CJNE A,#01H,M1 ;与1比较,不能大于等于1 M1:JC M2 LJMP TV4 M2:MOV 4AH,A ;将第一个值存于4AH单元中 MOV B,A CLR P1.0 MOV A,#88H ACALL STFSMOV A,#0FDH ;第七个数码管闪烁 ACALL STFS SETB P1.0MOV A,BL12:ACALL DIS_DEAL1 ;显示结果处理 ACALL DISPLAY ;7279显示子程序 ACALL KEY ;键入第二个值 CJNE A,#0AH,L11 ;与10比较,不能大于等于10L11:JNC L12 MOV 49H,A ;将第二个值存于49H单元中 MOV B,A CLR P1.0 MOV A,#88H ACALL STFSMOV A,#0FEH ;第八个数码管闪烁 ACALL STFS SETB P1.0 MOV A,B L13:ACALL DIS_DEAL1 ACALL DISPLAY ACALL KEY ;键入第三个值 CJNE A,#0AH,L14 ;与10比较,不能大于等于10 L14:JNC L13 MOV 48H,A ;将第三个值存于48H单元中 L15:ACALL DIS_DEAL1 ACALL DISPLAY ACALL KEY CJNE A,#0AH,L16 ;判断确认键是否按下 MOV B,ACLR P1.0 MOV A,#88H ACALL STFSMOV A,#0FFH ;取消闪烁 ACALL STFS SETB P1.0 MOV A,B ACALL DIS_DEAL1 ;修改后的最终结果显示处理 ACALL DISPLAY ;7279显示最终结果 SJMP L18 L16:SJMP L15 L18:RET;显示部分DISPLA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年餐饮管理专业人士招聘面试题库及参考答案
- 2025年航空服务专员招聘面试题库及参考答案
- 2025年NGO项目经理招聘面试题库及参考答案
- 2025年地方文化助理招聘面试参考题库及答案
- 2025年技术销售经理招聘面试参考题库及答案
- 2025年存货管理专员招聘面试题库及参考答案
- 2025年经济学顾问招聘面试题库及参考答案
- 2025年医药代表招聘面试参考题库及答案
- 2025年虚拟现实开发师招聘面试题库及参考答案
- 2025年商业合作专员招聘面试题库及参考答案
- 巡检记录表巡检记录表
- 蚁群算法课件完整版
- 音乐生职业生涯规划书
- 打散重构法优质课件
- 大气课设案例
- GB/T 893-2017孔用弹性挡圈
- GB/T 32727-2016肉豆蔻
- GB/T 2481.2-2020固结磨具用磨料粒度组成的检测和标记第2部分:微粉
- 安全员之A证(企业负责人)【含答案】
- 部编 二年级语文上册 第五单元【集体备课】课件
- 工业硅项目可行性研究报告
评论
0/150
提交评论