低频信号源单片机课程设计

上传人:痛*** 文档编号:78949506 上传时间:2022-04-22 格式:DOC 页数:24 大小:229.52KB
返回 下载 相关 举报
低频信号源单片机课程设计_第1页
第1页 / 共24页
低频信号源单片机课程设计_第2页
第2页 / 共24页
低频信号源单片机课程设计_第3页
第3页 / 共24页
点击查看更多>>
资源描述
单片机原理课程设计摘 要近年来,单片微型计算机作为微型计算机的一个很重要的分支,以其强大的生命力飞速发展,在工业控制、智能仪器仪表、智能化设备和家用电器等领域得到了广泛的应用,因而引起了各行各业的极大关注,有着广阔的发展前景。本次设计的是编写低频信号发生器程序。本程序80C2051单片机为核心,用C语言开发,组成一个单片机控制低频信号发生器。低频信号发生器是一种能够产生多种波形,如三角波、锯齿波、方波、正弦波等波形的电路被称为信号发生器。我们可以通过按键选择输出波形转换以及频率的控制。现在我们通过对信号发生器的原理以及构成设计一个能变换出三角波、正弦波、方波的简易信号发生器。我们通过对电路的分析,参数的确定选择出一种最适合本课题的方案。本设计是基于单片机的低频信号发生器,低频信号发生器作为一种常用的信号源,广泛应用于电子电路、自动控制和科学研究等领域。它是一种为电子测量和计量等工作提供符合严格技术要求的电信号设备,因此是电子测试系统的重要部件,也是决定电子测试系统性能的关键设备。次设计中要求输出信号的频率较低,因此使用了单片机作为控制器,用中断查表法完成波形数据的输出,再用D/A转换器将输出的数字电信号转化为模拟电信号。其中,D/A转换器输出规定的正弦波或三角波信号,方波信号则直接由单片机的端口输出。结合功能要求情况,使用51系列单片机作为控制器,用DAC0832作为D/A转换器,功能按键使用单片机的3个端口。关键词 三角波信号,正弦信号,方波信号,波形转换AbstractIn recent years, single-chip micro-computer micro-computer as a very important branch, the rapid development of its vitality, in industrial control, smart instrumentation, smart devices and appliances and other fields has been widely applied, giving rise to great concern to all walks of life, has broad prospects for development. The design process is the preparation of low-frequency signal generator. 80C2051 chip as the core of this program, using C language development, the formation of a single-chip control low-frequency signal generator. Is a low frequency signal generator can produce a variety of waveforms such as triangle, sawtooth, square wave, sine wave such as the circuit is known as signal generator. We can convert button to select the output waveform and frequency control. Now we are through the principle of signal generator and a form designed to transform a triangle wave, sine wave, a simple square wave signal generator. Through the circuit analysis to determine the parameters choose the most suitable solution of this issue. The design is based on single-chip low-frequency signal generator, low frequency signal generator as a common source, widely used in electronic circuits, automatic control and scientific research. It is an electronic measuring and metering work to meet the stringent technical requirements of the electrical signal equipment, electronic test system is therefore an important component in determining the performance of critical electronic device test system. Times the design requirement of the output signal frequency is low, so the use of single-chip as a controller, complete with look-up table interrupt the output waveform data, and then D / A converter to output the digital signals into analog electrical signals. One, D / A converter provides output sine wave or triangular wave signal, square-wave signal is output directly from the microcontroller port. Combined with functional requirements, use the 51 series as a controller, as with the DAC0832 D / A converter, microcontroller use function keys of the three ports.Keywords triangular wave signal, sinusoidal, square wave signal, the waveform conversion目 录摘 要IABSTRACTII目 录III1引言11.1单片机概述11.2单片机的发展过程11.3低频信号源概述12 总体方案论证与设计33系统电路设计53.1 系统控制部分53.1.1 AT89C51的主要性能53.1.2 AT89C2051的引脚功能63.2数/模转换部分73.2.1 DAC0832的主要性能83.2.2 DAC0832的引脚功能83.2.3 DAC0832的工作方式83.3整体系统原理94 系统程序的设计104.1 初始化子函数104.2 键扫描子函数104.3 波形数据产生子函数114.4 调试及性能分析12结 论13致 谢14参考文献15附录116附录222- 19 - 1引言1.1单片机概述 在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。单片机体积小、价格低、可靠性高,其非凡的嵌入式应用形态对于满足嵌入式应用需要具有独特的优势。目前,单片机应用技术已经成为电子应用系统设计最为常用的技术手段。1.2单片机的发展过程单片机技术发展的十分迅速,产品种类已琳琅满目。总观整个单片机发展过程,可以分为三个主要阶段:一、 单芯片微型机形成阶段1976年,Intel公司推出了MCS-48系列单片机。该系列单片机早期产品在芯片内集成有:8位CPU、1K字节程序存储器(ROM)、64字节数据存储器(RAM)、2根I/O线和1个8位定时/计数器。二 、性能完善提高阶段1980年,Intel公司推出MCS-51系列单片机。该系列单片机载芯片内集成有:8位CPU、4K字节程序存储器(ROM)、128字节数据存储器(RAM)、4 个8位并行接口、1个全双工串行接口和2个16位定时/计数器。寻址范围为64K,并集成有控制功能较强的布尔处理器完成位处理功能。三 、为控制器化阶段1982年,Intel公司推出MCS-96系列单片机。该系列单片机载芯片内集成有:16位CPU、8K字节程序存储器(ROM)、232字节数据存储器(RAM)、5个8位并行接口、1个全双工串行接口和2个16位定时/计数器。寻址范围最大为64K。片上还有8路10位ADC、1路PWM(D/A)输出及高速I/O等部件。1.3低频信号源概述在科学研究、工程教育及生产实践中,常常需要用到低频信号发生器。如工业过程控制、教学实验、机械振动试验、动态分析、材料试验、生物医学等领域。 我们长期使用的信号发生器,大部分是由模拟电路构成的,这类仪器作为信号源,频率可达上百MHz,在高频范围内其频率稳定性高、可调性好。但用于低频信号输出时,它所需要的RC值很大,参数准确度难以保证,而且其体积大,损耗也大。传统的设计方法先是采用RC振荡器或LC振荡器,后采用石英晶体振荡器为核心,提供一个高稳定度的信号源,但是其电路复杂,结构庞大造价也很高。之后有人研究制造了采用8031单片机及程序存储器构成的最小系统组成的数字式低频信号发生器,它在低频范围内性能好,但是体积较大,价格较贵。随着大规模集成电路技术的发展,集成度不断提高,使得微型机的速度和性能大为提高,可靠性增加,成本降低。本次设计采用一片AT89C51单片机作为控制器,用DAC0832作为D/A转换器做成的低频信号发生器。功能按键使用单片机的3个端口,用中断查表法完成波形数据的输出。输出频率有较好的稳定性,元器件比较常见,价格低廉,电路设计方便,操作方便,体积小,性能高。2 总体方案论证与设计低频信号发生器的实现主要有如下几种:一:利用单片机与精密函数发生器构成的程控信号发生器。这种信号发生器能够克服常规信号发生器的缺陷,保证在某个信号的频带内正弦波的失真度小于0.5。它的输出信号频率调整和幅值调整都由单片机完成。但是,由于数模转换器的非线性误差和函数发生器本身的非线性误差,这种信号发生器输出信号的频率与理论值会有一定的偏差。二:利用DSP处理器,根据幅值,频率参数,计算产生高精度的信号所需数据表,经数模转换后输出,形成需要的信号波形。这种信号发生器可实现程控调幅,调频。但这种信号发生器输出频率不能连续可调,计算烦琐,控制也不便。三:基于单片机,锁相环,可编程分频、相位累加、存储器波形存储以及D/A转换器等组成的数字式函数信号发生器。输出的频率的大小由锁相环和可编程计数器来控制,最终由地址发生器对存储器中的波形数据硬件扫描,单片机提供要输出的波形数据给存储器。这种方案电路简洁,不受单片机的时钟频率的限制,输出信号精度高,频率“连续”,稳定性好,可靠性高,功耗低,调频,调幅都很方便,而且可简化软件设计,实现模块化设计的要求。四:考虑到输出信号的频率较低,使用单片机作为控制器使用单片机作为控制器,用中断查表法完成波形数据的输出,再用D/A转换器输出规定的波形信号。方波信号直接由单片机的端口输出。结合功能要求情况,使用80C51单片机作为控制器,用DAC0832作为D/A转换器。功能按键使用单片机的3个端口。能使输出频率有较好的稳定性,元器件比较常见,价格低廉,电路设计方便。综合考虑,方案四各项性能和指标都优于其他几种方案,能使输出频率有较好的稳定性,充分体现了模块化设计的要求,而且这些芯片及器件均为通用器件,在市场上较常见,价格也低廉,样品制作成功的可能性比较大,所以本设计采用方案四。其系统组成原理框图如图2.1所示。 DAC0832D0D7 OUT AT89C51 单片机控制器P1.2INT0 P0INT1 | P7控制键 波形输出图2. 组成原理框图1系统组成原理框图3系统电路设计3.1 系统控制部分 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.1.1 AT89C51的主要性能l 与MCS-51 兼容 l 4K字节可编程FLASH存储器 l 寿命:1000写/擦循环 l 数据保留时间:10年 l 全静态工作:0Hz-24MHz l 三级程序存储器锁定 l 1288位内部RAM l 32可编程I/O线 l 两个16位定时器/计数器 l 5个中断源 l 可编程串行通道 l 低功耗的闲置和掉电模式 l 片内振荡器和时钟电路3.1.2 AT89C2051的引脚功能 l VCC:供电电压。l GND:接地。 l P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 l P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 l P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 l P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 图3.1 管脚备选功能P3口引脚 功能 P3.0 RXD(串行输入端口) P3.1 TXD(串行输出端口) P3.2 INT0(外中断0) P3.3 INT1(外中断1) P3.4 TO(定时器0外部输入) P3.5 T1(定时器1外部输入) l RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。l PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。l EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。l XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。l XTAL2:来自反向振荡器的输出。3.2数/模转换部分DAC0832是CMOS工艺制造的8位数/模(D/A)转换器,属于8位电流输出型D/A转换器,转换时间为1us,片内带输入数字锁存器,其引脚排列和内部组成原理如图3.2所示。DAC0832与单片机接成数据直接写入方式,当单片机把一个数据直接写入DAC寄存器时,DAC0832的输出模拟电压信号随之变化。利用D/A转换器可以产生各种波形,如方波,三角波,锯齿波等以及它们组合产生的复合波形和不规则波形。这些复合波形利用标准的测试设备很难产生的。图3.2 DAC0832引脚排列和内部组成原理图3.2.1 DAC0832的主要性能l 输入数据量为8位。l 采用CMOS工艺,所有引脚的逻辑电平与TTL兼容。l 数据输入可以采用双缓冲,单缓冲或直通方式。l 转换时间:1US。l 精度:1LSB。l 分辨率:8位。l 单一电源:515V,功耗20MV。l 参考电压:+10-10V。 3.2.2 DAC0832的引脚功能l D7D0:8位数据量输入。l ILE:数据输入锁存允许,高电平有效。l :片选。l :输入寄存器写信号。当ILE、同时有效时,数据装入输入寄存器,实现输入数据的第一级缓冲。l :数据传送控制信号。控制从输入寄存器到DAC寄存器的内部数据传送。l :DAC寄存器写信号。当和均有效时,将输入寄存器中的数据装入DAC寄存器并开始D/A转换,实现输入数据的第二级缓冲。l VREF:参考电压源。电压为-10+10V。l Rfb:内部反馈电阻接线端。l IOUT1:DAC电流输出1。其值随输入数字量线性变化。l IOUT2:DAC电流输出2。当DAC寄存器内容全为1时,IOUT1最大,IOUT2=0;当DAC寄存器内容全为0时,IOUT1=0,IOUT2最大;当DAC寄存器内容为N时,IOUT1= VREF *N/(256* Rfb), IOUT2= VREF / RfbIOUT1,无论N值多大, IOUT1+ IOUT2= VREF / Rfb *(128)=常数,约等于VREF / Rfb。l VCC:工作电源。其值为+515V,典型值为+15V。l AGND:模拟信号地线。l DGND:数字信号地线。3.2.3 DAC0832的工作方式DAC0832有双缓冲、 单缓冲和直通3种工作方式。l 双缓冲工作方式:进行两级缓冲。l 单缓冲工作方式:只进行一级缓冲。l 直通工作方式:不进行缓冲,适应于比较简单的场合。3.3整体系统原理简易低频信号源系统结构原理图见附录。单片机外接12M 的晶振。方波的产生是通过执行波形发生程序,由DAC8032输出。三角波、正弦波波形的产生是通过AT89C51 执行某一波形发生程序,对三角波、正弦波的每个周期波形用256个采样点合成,之后由P0.0P0.7向D/A转换器的输入端发送具有一定规律的数据,经过DAC0832数/模转换后,在D/A转换电路的输出端得到相应的电压波形。连接示波器后即可显示出波形。分别在单片机的P1.2、P3.2、P3.3口接3个按键,T1为波形选择按键,采用键盘扫描方式。T2为频率增加按键,T3为频率减小按键,频率加减采用了外部中断方式。 4 系统程序的设计4.1 初始化子函数初始化子函数的主要工作是设置定时器的工作模式、初值预置、开中断和打开定时器等。在这里,定时器T0工作于16位定时模式,单片机按定时时间重复地把波形数据送到DAC0832的寄存器。其程序流程图如图4.1所示:开 始T0置初值,设为16位定时模式T0中断允许,开定时器,开总中断返 回图4.1 初始化子函数程序流程图4.2 键扫描子函数键扫描子函数的任务是检查波形变换按键是否按下,若有键按下,则执行相应的功能。这里按键用于波型选择,其程序流程图如图4.2所示:查键开始P1.2键按下? NO YES波形选择 返回图4.2 查键子函数程序流程图4.3 波形数据产生子函数波形数据产生函数是定时器T0的中断程序。当定时器计数益出时,发生一次中断。当发生中断时,单片机按次序将波形数据表中的波形数据一一送入DAC0832,DAC0832根据输入的数据大小输出对应电压。波形数据产生子函数程序流程图如图4.3所示:图4.3 波形数据产生子函数程序流程图4.4 调试及性能分析硬件电路的调试比较简单,只要元器件安装无误,一般都能一次成功。软件的调试主要是各子程序的调试,对于频率的增减按键,由于计时器为16位定时器,最大值为65535,在加减时用255作为加减数,这样频率的调整变化较快些,但是在接近最高频率时变化太快;如果加减时用1作为加减数,那么在频率的高端变化平稳,而在频率的低端则变化太慢。调试时可根据应用特点选择加减数的大小。简易低频信号源输出频率指标实际测试如下:l 正弦波(三角波)输出频率:0.1-50Hz,幅值1.01.5V。l 方波输出频率:0.1-50Hz,幅值为5V。低频信号源输出的频率不是很高,在设计时每周期波形用256个采样点合成,波形不是很光滑。如果增加采样点,则输出的频率会更低,所以在设计时应根据应用特点选择合理的采样点数。用单片机产生低频率信号的最大优点是可以输出产生复杂的不规则波形,这是一般通用信号源无法做到的。结 论通过了一学期的单片机原理及应用的理论学习,终于迎来了为期两周的单片机课程设计。通过两周紧张而忙碌的课程设计,我最终完成了低频信号源的设计,并且从中受益匪浅。在我知道的设计题目是低频信号源后,我感到无从下手,并深感自己单片机知识的不足。接下来我到处去搜集有关低频信号源的资料。经过去图书馆查找相关书籍,上网查找有关资料以及向老师询问等,我终于找到了一些头绪,对低频信号源的设计有了一个整体的构思。通过我对找道的材料仔细研究,最终确定了设计方案。在确定了相关元器件并画好原理框图之后,开始进行低频信号源控制程序的设计。我查阅单片机C语言设计有关指导的书,设计的程序包括主函数、初始化子函数、键扫描子函数、波形数据产生子函数,完成了函数的正确定义及调用。此外还找到了单片机控制芯片AT89C51和数模转换器DAC8032的相关内容,对其主要性能和引脚功能进行了大致了解,大大的丰富了我的单片机知识,开阔了视野。其中还有一大项就是利用Keil软件和Proteus软件进行程序的仿真,那么对此软件掌握的程度就至关重要了。经过半天的上机操作,对Keil软件的基本操作熟悉之后,在自己的探索和同学的帮助之下,把源程序写入,设置好各项参数之后,编译、连接、运行,成功的完成了程序的仿真。经过各方面的加工之后,低频信号源的设计终于完成了。这次设计使我成长了许多,我明白了低频信号源的设计过程,对一些单片机控制芯片和数模转换器有了更深的了解,对Keil软件和Proteus软件有了更好的掌握。懂得了如何利用自己学过的知识,如何把学过的知识融会贯通,灵活运用,单片机知识大大增加。我明白了只有通过这样的课程设计及实践,让同学们自己去查找资料,才能更有效的使同学们增进知识,它与理论学习是相辅相成,密不可分,缺一不可的。致 谢通过了一学期的单片机原理及应用的理论学习,终于迎来了为期两周的单片机课程设计。通过两周紧张而忙碌的课程设计,我最终完成了低频信号源的设计,并且从中受益匪浅。两周的时间虽然很短暂,但使我从中获益匪浅。在这里我要对帮助我的老师和同学表示感谢。首先,感谢田景贺老师对我的谆谆教诲。本次设计的工作都是在田老师的指导下进行的,尽管他很忙,但是仍然抽出宝贵的时间给我们讲解很多不懂的程序,直到我们完全明白为止。他像朋友一样与我们亲切的探讨论文,纠正论文的错误,指导我们如何把从网上和图书馆查阅的资料变成我们自己的作品,在此我深深鞠躬。田老师有着的渊博的学术知识,严谨的科学知识和对工作认真负责的态度,让我体会到了学者的风范,而他谆谆教导的为师之道也将令我终身难忘。其次,感谢曾帮助和鼓励过我,与我同组的白婷、董航、孙国锋同学,我们在设计期间互相探讨,互相学习,才取得了这样的成绩。是你们在我最困难的时候给与我克服困难的勇气,是你们在我最无助的时候给与我力量,在此中心的说声“谢谢”!最后,感谢美丽的学校,是它提供给我便利的环境,使我的本次课程设计顺利完成。参考文献1 张迎新等. 单片机原理及应用 M. 北京:电子工业出版社,2004.102 张友德等. 单片微型机原理、应用和实验M. 北京:电子工业出版社,2005.63 李勋等编著. 单片机实用教程M. 北京:航空航天大学出版社,2000.64 李群芳. 单片机微型计算机与接口技术M. 北京:电子工业出版社,2006.35 夏继强、沈德金编著. 单片机实验与实践教程M. 北京:航空航天大学出版社,2001.116 黄智伟. 全国大学生电子设计竞赛训练教程M. 北京:电子工业出版社,2005.77 周立功.单片机实验与实践M. 北京:航空航天大学出版社,2006.88 周坚. 单片机C语言轻松入门M. 北京:航空航天大学出版社,2006.79 李华主编. MCS-51系列单片机实用接口技术M. 北京:航空航天大学出版社,1993.810 李朝青编著. 单片机原理及接口技术M. 北京:航空航天大学出版社,1999.311 张友德等. 单片微型机原理M、应用和实验M.电子工业出版社,200112 吴经国等.单片机应用技术M. 中国电力出版社,200413 李群芳.单片机微型计算机与接口技术M.电子工业出版社,200414 黄智伟.全国大学生电子设计竞赛训练教程M.电子工业出版社,200315 周立功.单片机实验与实践M.北京航空航天大学出版社,2004附录1简易低频信号源程序:#include #define uchar unsigned char#define uint unsigned int#define out P0#define in P1uchar boxing,temp1,i;uint b=390;uint a; /定义全局变量/*正弦波数据表*/uchar code sin_tab256= 0x80,0x83,0x85,0x88,0x8A,0x8D,0x8F,0x92,0x94,0x97,0x99,0x9B,0x9E,0xA0,0xA3,0xA5,0xA7,0xAA,0xAC,0xAE,0xB1,0xB3,0xB5,0xB7,0xB9,0xBB,0xBD,0xBF,0xC1,0xC3,0xC5,0xC7,0xC9,0xCB,0xCC,0xCE,0xD0,0xD1,0xD3,0xD4,0xD6,0xD7,0xD8,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE3,0xE4,0xE4,0xE5,0xE5,0xE6,0xE6,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE6,0xE6,0xE5,0xE5,0xE4,0xE4,0xE3,0xE3,0xE2,0xE1,0xE0,0xDF,0xDE,0xDD,0xDC,0xDB,0xDA,0xD8,0xD7,0xD6,0xD4,0xD3,0xD1,0xD0,0xCE,0xCC,0xCB,0xC9,0xC7,0xC5,0xC3,0xC1,0xBF,0xBD,0xBB,0xB9,0xB7,0xB5,0xB3,0xB1,0xAE,0xAC,0xAA,0xA7,0xA5,0xA3,0xA0,0x9E,0x9B,0x99,0x97,0x94,0x92,0x8F,0x8D,0x8A,0x88,0x85,0x83,0x80,0x7D,0x7B,0x78,0x76,0x73,0x71,0x6E,0x6C,0x69,0x67,0x65,0x62,0x60,0x5D,0x5B,0x59,0x56,0x54,0x52,0x4F,0x4D,0x4B,0x49,0x47,0x45,0x43,0x41,0x3F,0x3D,0x3B,0x39,0x37,0x35,0x34,0x32,0x30,0x2F,0x2D,0x2C,0x2A,0x29,0x28,0x26,0x25,0x24,0x23,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x1D,0x1C,0x1C,0x1B,0x1B,0x1A,0x1A,0x1A,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1A,0x1A,0x1A,0x1B,0x1B,0x1C,0x1C,0x1D,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29,0x2A,0x2C,0x2D,0x2F,0x30,0x32,0x34,0x35,0x37,0x39,0x3B,0x3D,0x3F,0x41,0x43,0x45,0x47,0x49,0x4B,0x4D,0x4F,0x52,0x54,0x56,0x59,0x5B,0x5D,0x60,0x62,0x65,0x67,0x69,0x6C,0x6E,0x71,0x73,0x76,0x78,0x7B,0x7D;/*三角波数据表*/uchar code thr_tab256= 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,0xBF,0xBE,0xBD,0xBC,0xBB,0xBA,0xB9,0xB8,0xB7,0xB6,0xB5,0xB4,0xB3,0xB2,0xB1,0xB0,0xAF,0xAE,0xAD,0xAC,0xAB,0xAA,0xA9,0xA8,0xA7,0xA6,0xA5,0xA4,0xA3,0xA2,0xA1,0xA0,0x9F,0x9E,0x9D,0x9C,0x9B,0x9A,0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90,0x8F,0x8E,0x8D,0x8C,0x8B,0x8A,0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80,0x7F,0x7E,0x7D,0x7C,0x7B,0x7A,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,0x6F,0x6E,0x6D,0x6C,0x6B,0x6A,0x69,0x68,0x67,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x5F,0x5E,0x5D,0x5C,0x5B,0x5A,0x59,0x58,0x57,0x56,0x55,0x54,0x53,0x52,0x51,0x50,0x4F,0x4E,0x4D,0x4C,0x4B,0x4A,0x49,0x48,0x47,0x46,0x45,0x44,0x43,0x42,0x41,0x40,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F;void init(void) /初始化函数boxing=0; in=0xff;out=0x00; P3=0xff;TMOD=0x01; TCON=0x05;a=65536-b;TH0=a/256;TL0=a%256;ET0=1;EX0=1;EX1=1; EA=1;TR0=1;void delay (uint t) /延时函数 uint j; for(j=0;jt;j+);void keyscan(void) /按键检测 temp1=in&0x0f;delay(550); temp1=in&0x0f;if(temp1!=0x0f) switch (temp1) case 0x0b : boxing+; break; default : break; void timer0(void) interrupt 1 /计数器中断函数 i+;a=65536-b; TH0=a/256;TL0=a%256; if(i=256) i=0;void main() /主函数 init(); while(1) keyscan(); if(boxing=3) boxing=0; if(boxing=0) if(i=123) out=0xdf; else out=0x3f; if(boxing=1) out=sin_tabi; if(boxing=2) out=thr_tabi; void intt0(void) interrupt 0 /频率加中断函数 EA=0; TR0=0; b=(b-b/10);a=65536-b;TH0=a/256;TL0=a%256; TR0=1; EA=1;void intt1(void) interrupt 2 /频率减中断函数 EA=0; TR0=0; b=(b+b/10);a=65536-b;TH0=a/256;TL0=a%256; TR0=1; EA=1;/*结束*/附录2图5 电路连接原理图
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!