基于AT89C51的PWM信号发生器设计报告_第1页
基于AT89C51的PWM信号发生器设计报告_第2页
基于AT89C51的PWM信号发生器设计报告_第3页
基于AT89C51的PWM信号发生器设计报告_第4页
基于AT89C51的PWM信号发生器设计报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 皖西学院 课程设计报告书 基于at89c51的pwm信号发生器设计摘 要 单片机集成度高,功能强,可靠性高,体积小,功耗低,使用方便,价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎无处不在,无所不为。单片机的应用领域已经从面向工业控制,通讯,交通,智能仪表等迅速发展到家用消费产品,办公自动化,汽车电子,pc机外围以及网络通讯等广大领域。 单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,成为普林斯机构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前单片机以采用程序存储器

2、截然分开的结构多。本课题讨论的占空比与周期可调的信号发生器的核心是目前应用极为广泛的51系列单片机。基于单片机的信号发生器的设计,该课题的设计目的是充分运用大学期间所学的专业知识,考察现在正在使用的信号发生器的基本功能,完成一个基本的实际系统的设计全过程。关键是这个实际系统设计的过程,在整个过程中我可以充分发挥自动化的专业知识。特别是这个信号发生器的设计中涉及到一个典型的控制过程。通过单片机控制一个有特殊功能的信号发生芯片,可以产生一系列有规律的周期和占空比可调的波形。这样一个信号发生器装置在控制领域有相当广泛的应用范围。因为产生一系列的可调波形可以作为其他一些设备的数值输入,还可以应用与设备

3、检测,仪器调试等场合。高频稳定的波形信号也可以用于无线电波的调频,解调。这些都是现代生活中必不可少的一些应用。关键词:pwm 信号发生器- 25 -目 录1.简介- 3 -1.1 proteus- 3 -1.2 keil- 4 -1.3 pwm- 5 -1.4 at89c51- 6 -2.设计原理和方法- 9 -2.1单片机的基本组成- 9 -2.2方案的设计与选择- 9 -2.3定时器、的工作原理- 10 -2.3.1工作方式寄存器tmod- 11 -2.3.2定时/计数器控制寄存器tcon- 12 -2.4定时/计数器的工作方式- 12 -2.5设计方法- 13 -3.系统硬件电路设计图-

4、 14 -4.程序框图- 16 -4.1主程序框图:- 16 -4.2系统初始化:- 16 -4.3定时器中断程序框图:- 16 -4.4键盘扫描程序框图:- 17 -5.性能分析- 18 -5.1定时器中断分析- 18 -5.2系统性能分析- 18 -6.源程序- 18 -7. 仿真效果图- 22 -总 结- 24 -致 谢- 25 -参考文献- 25 -1.简介1.1 proteus proteus isis是英国labcenter公司开发的电路分析与实物仿真软件。它运行于windows操作系统上,可以仿真、分析(spice)各种模拟器件和集成电路,该软件的特点是:(1)实现了单片机仿真和

5、spice电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、rs232动态仿真、i2c调试器、spi调试器、键盘和lcd系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、avr系列、pic12系列、pic16系列、pic18系列、z80系列、hc11系列以及各种外围芯片。(3) 提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和

6、调试环境,如keil c51 uvision2等软件。(4) 具有强大的原理图绘制功能。总之,该软件是一款集单片机和spice分析于一身的仿真软件,功能极其强大。本章介绍proteus isis软件的工作环境和一些基本操作。特点:支持arm7,pic ,avr,hc11以及8051系列的微处理器cpu模型,更多模型正在开发中: 交互外设模型有lcd显示、rs232终端、通用键盘、开关、按钮、led等;强大的调试功能,如访问寄存器与内存,设置断点和单步运行模式;支持如iar、keil和hitech等开发工具的源码c和汇编的调试;一键“make”特性:一个键完成编译与仿真操作;内置超过6000标准

7、spice模型,完全兼容制造商提供的spice模型;dll界面为应用提供特定的模式;基于工业标准的spice3f5混合模型电路仿真器14种虚拟仪器:示波器、逻辑分析仪、信号发生器、规程分析仪等;高级仿真包含强大的基于图形的分析功能:模拟、数字和混合瞬时图形;频率;转换;噪声;失真;付立叶;交流、直流和音频曲线;模拟信号发生器包括直流、正旋、脉冲、分段线性、音频、指数、单频fm;数字信号发生器包括尖脉冲、脉冲、时钟和码流;集成proteus pcb设计形成完整的电子设计系统。1.2 keil keil c51是美国keil software公司出品的51系列兼容单片机c语言软件开发系统,与汇编相

8、比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uvision)将这些部分组合在一起。运行keil软件需要win98、nt、win2000、winxp等操作系统。如果你使用c语言编程,那么keil几乎就是你的不二之选,即使不使用c语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 (1)系统概述 keil c51软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。另外重要的一点,只要看一下编译后

9、生成的汇编代码,就能体会到keil c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍keil c51开发系统各部分功能和使用。 (2)keil c51单片机软件开发系统的整体结构 c51工具包的整体结构,uvision与ishell分别是c51 for windows和for dos的集成开发环境(ide),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用ide本身或其它编辑器编辑c或汇编源文件。然后分别由c51及c51编译器编译生成目标文件(.obj)。目标文件可由lib51创建生成库文件,也可以与

10、库文件一起经l51连接定位生成绝对目标文件(.abs)。abs文件由oh51转换成标准的hex文件,以供调试器dscope51或tscope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如eprom中。1.3 pwm(1)简介 脉冲宽度调制(pwm),是英文“pulse width modulation”的缩写,简称脉宽调制,是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效

11、的技术。 pwm控制技术以其控制简单,灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。由于当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振软开关技术将会成为pwm控制技术发展的主要方向之一。(2)基本原理 随着电子技术的发展,出现了多种pwm技术,其中包括:相电压控制pwm、脉宽pwm法、随机pwm、spwm法、线电压控制pwm等,而在镍氢电池智能充电器中采用的脉宽pwm法,它是把每一脉冲宽度均相等的脉冲列作为pwm波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过

12、调整pwm的周期、pwm的占空比而达到控制充电电流的目的。 尽管模拟控制看起来可能直观而简单,但它并不总是非常经济或可行的。其中一点就是,模拟电路容易随时间漂移,因而难以调节。能够解决这个问题的精密模拟电路可能非常庞大、笨重(如老式的家庭立体声设备)和昂贵。模拟电路还有可能严重发热,其功耗相对于工作元件两端电压与电流的乘积成正比。模拟电路还可能对噪声很敏感,任何扰动或噪声都肯定会改变电流值的大小。 通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。此外,许多微控制器和dsp已经在芯片上包含了pwm控制器,这使数字控制的实现变得更加容易了。(3)脉冲宽度调制优点 pwm的一个优点是从处

13、理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。 对噪声抵抗能力的增强是pwm相对于模拟控制的另外一个优点,而且这也是在某些时候将pwm用于通信的主要原因。从模拟信号转向pwm可以极大地延长通信距离。在接收端,通过适当的rc或lc网络可以滤除调制高频方波并将信号还原为模拟形式。 总之,pwm既经济、节约空间、抗噪性能强,是一种值得广大工程师在许多设计应用中使用的有效技术。1.4 at89c51 at89c51是一种带4k字节flash存储器(fperomfla

14、sh programmable and erasable read only memory)的低电压高性能cmos 8位微处理器,俗称单片机。(1)主要特性: 全静态工作:0hz-24mhz 三级程序存储器锁定 1288位内部ram 32可编程i/o线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路(2)管脚说明: vcc:供电电压。 gnd:接地。 p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当 p0口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在fia

15、sh编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须接上拉电阻。 p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为低八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2

16、口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 p3口也可作为at89c51的一些特殊功能口,如下表所示: 口管脚 备选功能 p3.0 rxd(串行输入口) p3.1 t

17、xd(串行输出口) p3.2 /int0(外部中断0) p3.3 /int1(外部中断1) p3.4 t0(记时器0外部输入) p3.5 t1(记时器1外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平 时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。 在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作

18、对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 /ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为re

19、set;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。 (3)振荡器特性: xtal1和xtal2分别为反向放大器的输入和输出。该反向放大器可以配置 为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件, xtal2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外 部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2.设计原理和方法2.1单片机的基本组成图1 51单片机框图2.2方案的设计与选择

20、在电子技术领域中,实现函数信号发生器的方法有很多种,可以采用不同的原理及器件构成不同的电路,但是可以实现相同的功能。(1)方案的比较:方案一:采用单片函数发生器如8038,8038可同时产生正弦波,方波等,而且方法简单易行。用d/a转换器的输出来改变调制电压,也可以实现数控的调频进而改变周期,但是产生的频率稳定度不高。方案二:采用锁相式频率合成器,利用锁相环,降压控振荡器(voc)的输出,频率锁定在所需的频率上,该方案性能良好,但是难以达到输出频率覆盖系数的要求,其电路复杂。方案三:采用单片机编程的方法实现。该方法可以通过编程,来控制方波信号输出的周期和占空比,并且只要改变程序的相关参数,便可

21、以改变输出波形的周期和占空比。由于编程的方法产生的是数字信号,所以信号的精度可以做到很高。并且电路简单。 鉴于方案一的信号频率不够稳定和方案二的电路复杂,频率覆盖系数难以达标等缺点,所以决定采用方案三的设计方法。方案三不仅仅是软硬件结合,而且它使用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。 在此次设计中,利用at89c51单片机,软硬件结合,实现占空比和周期可调。案件的操作是通过数字电路跟外部中断0来控制的。可以输出占空比在1%到99%可调,精度为1%,周期在5ms到60ms可调,精度为5ms的方波。 本设计用到一个at89c51微处理器,4个按键,一个四输入与门。at89c51

22、用到两个定时器,定时器0和定时器1。其中定时器0工作在方式1下,决定输出信号的周期,定时器1工作在方式1下,决定输出信号的占空比。按键period+和period-改变信号的周期,按键period+用于增大信号的周期,按一下就增大5ms,当增大到60ms后,就归为5ms。按键period-用于减小输出信号的周期,按一次键,输出信号的周期增大5ms,当增大到60ms后,周期就归于5ms。按键zkb+和zkb-改变信号的占空比,按键zkb+用于增加信号的占空比,按下一次键,占空比就增加1,上限值为99,当再次按键时,就让占空比归1。按键zkb-用于减小信号的占空比,按下一次键,占空比就减1,下限值

23、为1,当再次按键时,就让占空比回归到99。通过上面的步骤,可以实现占空比和周期的可调。 同时,设计中采用了上电或开关复位电路用以应对其他可能事件。开关闭合复位后回复初值:占空比50%,周期35ms。2.3定时器、的工作原理定时/计数器实质上是一个加1计数器,它可以工作于定时方式,也可以工作于计数方式,两种工作方式实际是对脉冲计数,只不过是所计脉冲来源不同。定时/计数器的内部结构和控制信号如下图2所示:当其工作于定时方式时, =0,开关s打向上,计数器,的计数脉冲来自振荡器的12分频后的脉冲(即fosc/12),即对系统的机器周期计数。档开关k受控合上时,每过一个周期,计数器,加1;当记满了预设

24、的个数,回零,置位定时/计数器溢出中断标志位,产生溢出中断。图2 定时器/计数器内部结构和控制信号2.3.1工作方式寄存器tmod工作方式寄存器tmod(地址:89h)为8位寄存器,8位分为两组,高四位控制t1,低四位控制t0。用于设置定时/计数器的工作方式。其格式如下表2.3.1所示。表2.3.1 定时/计数器方式控制寄存器tmod d7 d6d5 d4d3 d2 d1 d0gatem1m0gatem1m0| t1方式字段 | t0方式字段 |下面对tmod的各位作以说明: (1)gate:门控位。 gate0时,仅有运行控制位tr0(或tr1)=1,就可以启动定时/计数器工作; gata1

25、时,由tr0(或tr1)=1和外部中断引脚(int0或int1)上的高电平共 同启动定时/计数器工作。 (2) 定时/计数模式选择位。 =0为定时模式; =1为计数模式。 (3)m1,m0工作方式选择位。定时/计数器工作方式选择如下表2.3.2所示。 表2.3.2 定时/计数器工作方式设置表m1 m0工作方式说明0 0方式013位定时/计数器0 1方式116位定时/计数器1 0方式28位初值自动重装入的8位定时/计数器1 1方式3仅适用于t0,分成两个8位定时/计数器;t1停止计数2.3.2定时/计数器控制寄存器tcon tcon的字节地址为88h,可进行位寻址,位地址为88h8fh。 格式如

26、下表2.3.3所示。表2.3.3 定时/计数器控制寄存器tcon d7 d6d5 d4d3 d2d1 d0tf1tr1tf0tr0ie1it1ie0it0在tcon寄存器中,定时/计数器的控制仅用了其中的高四位。 (1)tf1,tf0t1,t0溢出中断请求标志位。当计数溢出时该位由硬件自动置为1。cpu响应中断后由硬件自动清0。工作时,cpu可随时查询tf的状态。所以,可用作查询测试的标志。也可以用软件置1或清0,同硬件置1或清0的效果一样。 (2)tr1,tr0运行控制位。 置1时,启动定时/计数器工作;还与gate位的状态有关。 置0时,停止定时/计数器工作。由软件置1或清0。所以,用软件

27、可控制定时/计数器的启动与停止。2.4定时/计数器的工作方式 (1)方式0为13位计数,由tl0的低5位(高3位未用)和th0的8位组成,最大计数值为(8192个脉冲)。启动后计数器加1计数。tl0的低5位计数满回零后向进位,当13位计数满回零时,中断溢出位置1,产生中断请求。定时器模式时有:nt/ tcy (tcy指令周期)计数初值计算的公式为: (x计数初值,n计数个数)定时器的初值还可以采用计数个数直接取补法获得。 (2)方式1和方式0基本相同,唯一的区别是方式1的计数位数是16位,由tl1作为低8位、th1作为高8位,组成了16位加1计数器 。其最大计数值为(65536个脉冲),是几种

28、方式中计数值最大的方式。计数个数(n)与计数初值(x)的关系为: (3)方式2为自动重装初值的8位计数方式。在这种方式下,在和两个寄存器中,专用于寄存8位计数初值并保持不变,进行8位加1计数,当计数溢出时,除产生溢出中断请求外,还自动将中不变的初值重新装载到。计数个数与计数初值的关系为: (4)方式3只适用于t0定时/计数器,t0定时器处于方式3时,t1只能工作在0,1,2方式。tl0和th0被分成为两个独立的8位定时/计数器。其中tl0可作为8位定时/计数器,th0只能作为8位定时器。2.5设计方法 (1)方波的产生 在本设计方案中,采用的定时器产生周期和占空比可调的方波。对比于工作方式0,

29、工作方式1具有16位的寄存器,定时时间更长,产生的频率范围更宽。对比于工作方式2,虽然方式2的自动重载功能使定时更加准确,但对于产生低频来说,方式2的只有256us的定时时间,产生的中断多,误差更大,因此选择设置在工作方式1下,gate=0。设定定时器设置初始值,即给高低电平分别分配定时时间。当程序启动,由输入给定高电平,定时器开始加1计数,当高电平16位计数满回零时,tf置1,产生中断,高电平转为低电平,当低电平16位计数满回零时,tf置1,产生中断,低电平再转为高电平,得出方波。(2)高电平时间的测量本设计方案中,采用定时器测量高电平的时间。将定时器设置在工作方式1下,并设置gate=1,

30、此时要用软件使tr1=1,同时外部中断1(int1)引脚也为高电平时,才能启动定时/计数器工作。所以将控制输出的方波接在外部中断1的输入引脚上,当输入高电平,定时器开始启动,在下降沿的时候,读t1的值,即可算出高电平时间t1_high。3.系统硬件电路设计图 对于系统的软件仿真采用了proteus软件设计仿真。 四个独立按键分别与单片机的p1.0,p1.1,p1.2,p1.3相连接,并且通过一个四输入的与非门,将与非门的输出当做单片机外部中断0的触发信号。当有按键按下时,就会进入外部中断程序。 p1.4口输出信号连接到示波器,检测输出波形。 rst复位引脚接入上电或开关复位,电源接通后,单片机

31、自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。系统硬件仿真电路原理图如下图所示:4.程序框图4.1主程序框图:图4 主程序流程图4.2系统初始化: 初始化程序主要是给计数器0和1赋初值,初始化占空比为50%,信号周期为35ms,设置定时器0和定时器1的工作方式,并开启计数器0和计数器1,设置外部中断的触发方式,开启总中断。4.3定时器中断程序框图: 定时器0用于控制输出信号的周期,定时器1用于控制输出信号的占空比。开始赋初始值结束 图5 定时器中断程序框图4.4键盘扫描程序框图: 当有按键按下时,进入到外部中断,然后暂时关闭外部中断,启动延时程序,以消除抖动。然后检测是哪个按键被

32、按下,然后对频率或占空比的变量做出相应的赋值,并且将占空比的值送到数码管显示。并且对定时器0和定时器1分别赋新的初值,开启外部中断,定时器0和1中断,中断程序结束。开始 关中断延时消抖是否有键按下 n n判断按键号 y按键处理计算定时器初值送入初值关中断结束 图6 键盘扫描程序框图5.性能分析5.1定时器中断分析 本次周期占空比可调的信号发生器的设计采用了定时器0和定时器1中断,定时器0中断用于控制信号的周期,定时器1用于控制信号的占空比。当调节输出信号的占空比时,信号的频率就不变;如果调节信号的频率,占空比就不变。设period表示输出的周期,zkb表示输出的占空比,tx为定时器0的计数次数

33、,tz为定时器1的计数次数。给tx装入初值为:tx=(65536-n);给tz装入初值为tz=(65536-n); 当定时器0计数到时,开启定时器1,定时器1开始计数,并且p1.4口输出高电平。当经过一个周期中高电平持续的时间后,定时器1计数时间就到了,程序进入到定时器1中断执行,然后关掉定时器1,并且输出低电平。因为定时器0中断是一直开着的,当经过一个周期中低电平持续的时间后,定时器0计数又到了,进入定时器0中断执行,如此循环。当改变period或者zkb的时候,就可以相应改变输出信号的周期跟占空比。5.2系统性能分析 该系统实现占空比跟周期可调的信号发生器。占空比的调节范围是1%到99%,

34、精度是1%,当达到上限值时,再次增加时,占空比归于1%,达到下限时,再次减少,占空比自动归于99%。周期的调节范围是5ms到60ms,精度是5ms,当达到上限值时,再次增加时,周期自动归于5ms,当达到下限值时,再次减少时,周期自动归于60ms)。 总之,这次设计达到了设计要求,输出的信号稳定度高,误差小,并且方便调节,硬件电路简单。6.源程序#include #define uchar unsigned char#define uint unsigned int/float fosc=12000000; /系统时钟频率sbit key1=p10; /控制周期的增加sbit key2=p11;

35、 /控制周期的减少sbit key3=p12; /控制占空比的增加sbit key4=p13; /控制占空比的减少sbit clk=p14; /信号输出端口uint zkb=50; /占空比初值,取值范围为1到99uint period=35; /周期初值,取值范围为5ms到60msuint time0_h,time0_l,time1_h,time1_l; /延时程序 void delayms(uint z) uint i,j; for(i=z;i-;i0) for(j=110;j-;j0);/系统初始化void init() tmod=0x11; /定时器0和1都工作在方式1 time0_h

36、=(65536-35000)/256; time0_l=(65536-35000)%256; time1_h=(65536-17500)/256; time1_l=(65536-17500)%256; th0=time0_h; /定时器0装入初值,计数器计数35000次,35ms tl0=time0_l; th1=time1_h; /定时器1装入初值,计数器计数17500次,17.5ms tl1=time1_l; it0=1; /外部中断0为下降沿触发 ex0=1; /开外部中断0允许位 et0=1; /定时器t0中断允许 et1=1; /定时器t1中断允许 ea=1; /开启总中断 tr0=

37、1; /开启定时器0/主程序void main() init( ); while(1); /to中断程序void t0_time() interrupt 1 tr1=1; /开定时器1 th0=time0_h; tl0=time0_l; clk=1;/t1中断程序void t1_time() interrupt 3 tr1=0; /关定时器1 th1=time1_h; tl1=time1_l; clk=0;/键盘扫描程序void keyscan() interrupt 0 /外部中断0 float tx,tz; ex0=0; /关中断 delayms(10); /延时消抖 if(p1!=0x0

38、f) if(key1=0) period=period+5; if(period60) period=5; if(key2=0) period=period-5; if(period99) zkb=1; if(key4=0) zkb=zkb-1; if(zkb1) zkb=99; tx=(65536-(period)*1000); tz=(65536-(period/2)*1000+(50-zkb)*period*10); time0_h=(uint)tx/256; time0_l=(uint)tx%256; time1_h=(uint)tz/256; time1_l=(uint)tz%256; p1=0x0f; ex0=1; tr0=1; tr1=1;7. 仿真效果图1. 电路通电仿真初始状态 初始

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论