单片机课程设计信号发生器

合集下载

单片机原理及应用课程设计--信号发生器

单片机原理及应用课程设计--信号发生器

武汉纺织大学单片机原理及应用课程设计姓名:向彬彬学号: 1103751068班级:光电1102班指导教师:邹崇涛所在院系:电子与电气工程学院2013年12月精选文档目录1 设计目的及要求 (3)1-1 设计目的 (3)1-2 设计要求 (3)2 方案设计 (3)2-1 总体方案设计 (3)2-1.1 系统原理分析 (3)2-2 硬件电路设计 (4)2-2.1 主要芯片介绍 (4)2-3 软件设计 (7)2-3.1 软件程序流程图 (7)2-3.2 发送数据子程序 (8)2-3.3 波形产生过程 (8)3 Protues仿真......................................................... . (9)4 调试及实验结果 (10)5 实验中遇到的问题 (12)5-1 错误 (12)5-2 不足 (12)6 心得体会 (12)7 参考文献 (13)附录程序清单......................................................... . (14)精选文档基于STC89C52的信号发生器课程设计报告1设计目的及要求1-1 设计目的(1) 掌握各个接口芯片(如DAC0832等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。

(2) 以单片机为基础,设计并开发能输出多种波形(正弦波、三角波、方波等)且频率可变的函数发生器。

(3) 利用所学单片机的理论知识进行软硬件整体设计,锻炼我们理论联系实际、提高我们的综合应用能力。

(4) 通过运用相关芯片实现信号发生器的功能,从而达到熟练掌握各种器件的目的,同时,锻炼动手能力及编程调试能力,更深地理解课上所学的单片机的知识,增加电子电路知识,提升作为一个电子信息工程专业学生的专业素养1-2 设计要求(1)用单片机加之DAC芯片等器件,实现能产生方波,三角波,正弦波且频率可变的信号发生器。

单片机课程设计2——数控低频正弦信号发生器

单片机课程设计2——数控低频正弦信号发生器

单片机课程设计2 高精度数控低频正弦信号发生器余水宝信息科学与工程学院2005年6月高精度数控低频正弦信号发生器任务书一、任务设计一款基于AT89C51单片机和锁相技术的高精度数控低频正弦信号发生器。

二、设计要求1、基本要求⑴采用DDFS(直接数字频率合成)和锁相技术, 实现1Hz~1KHz变化的正弦信号。

⑵通过面板键盘控制输出频率,频率最小步进1Hz。

⑶输出双极性。

⑷用LED数码管实时显示波形的相关参数。

⑸写出详细的设计报告,给出全部电路和源程序。

2、发挥部分⑴不改变硬件设计,将上限频率扩展到10KHz。

⑵不改变硬件设计,扩展实现三角波和方波信号。

⑶可通过PC机上的“虚拟键盘”,实现频率等参数的控制。

⑷实现对幅度的控制。

高精度数控低频正弦信号发生器函数信号发生器作为一种常用的信号源,广泛应用于电子电路、自动控制和科学研究等领域[7]。

它是一种为电子测量和计量工作提供符合严格技术要求的电信号设备,因此是电子测试系统的重要部件,是决定电子测试系统性能的关键设备。

它与示波器、电压表、频率计等仪器一样是最普通、最基本的,也是得到最广泛应用的电子仪器之一。

1总体方案论证与设计数字式函数信号发生器的实现方案很多,主要有如下几种:方案一:采用微处理器和数模转换器直接合成的数字式函数信号发生器。

这种信号发生器具有价格低,在低频范围内可靠性好,体积小,功耗低,使用方便等特点,它输出的频率是由微处理器向数模转换输出数据的频率和信号在一个周期内的采样点数(N)来决定的,因此受单片机的时钟频率的限制很大,如果单片机的晶振取12MHz,则单片机的工作频率为1MHz,若在一个周期内输出360个数据,则输出信号的频率理论上最高只能达到2777Hz。

实际上单片机完成一次数据访问并输出到D/A电路,至少要5个机器周期,因此实际输出信号的频率只有500Hz 左右。

即使增大晶振频率,减小一个周期内输出数据个数,在稍高的频率下输出的波形频率误差也是很大的,而且计算烦琐,软件编程麻烦,控制不方便。

基于单片机制作高频DDS信号发生器

基于单片机制作高频DDS信号发生器

基于单片机制作高频DDS信号发生器在现代科学和电子技术的不断进步下,数字信号发生器(DDS)已经成为了频率控制和生成的重要工具。

尤其是高频DDS信号发生器,其在雷达、通信、电子对抗等领域的应用具有不可替代的地位。

本文将介绍如何使用单片机制作高频DDS信号发生器。

一、DDS技术概述DDS,全称Direct Digital Synthesizer,即直接数字合成器,其工作原理是将数字信号通过数模转换器(DAC)转换成模拟信号。

DDS 技术的核心是相位累加器,它将输入的数字信号的相位进行累加,从而生成新的频率信号。

二、硬件设计1、单片机选择:本设计选用具有高速、低功耗、高集成度的单片机,如STM32F4系列。

2、频率控制字:通过设置频率控制字(FCW),可以控制输出信号的频率。

频率控制字由一个16位二进制数组成,表示了相位累加的步进大小。

3、存储器:使用Flash存储器存储预设的频率波形数据。

4、DAC:数模转换器将存储器中的波形数据转换成模拟信号。

本设计选用具有高分辨率、低噪声、低失真的DAC芯片。

5、滤波器:使用LC滤波器对DAC转换后的信号进行滤波,以得到更加纯净的信号。

三、软件设计1、相位累加器:相位累加器是DDS的核心,它将输入的数字信号的相位进行累加,从而生成新的频率信号。

2、波形查找表:将所需的波形数据存储在波形查找表中,通过查表的方式获取波形数据,可以大大提高DDS的工作效率。

3、控制逻辑:控制逻辑负责处理输入的控制信号,如启动、停止、频率控制字等。

4、通信接口:为了方便远程控制,需要设计通信接口,如SPI、I2C 等。

四、性能测试1、频率范围:测试DDS输出信号的频率范围是否满足设计要求。

2、频率分辨率:测试DDS输出信号的频率分辨率是否达到设计要求。

3、信号质量:测试DDS输出信号的信噪比、失真度等指标是否满足设计要求。

4、稳定性:长时间运行后,测试DDS输出信号的频率是否稳定。

5、远程控制:测试通信接口是否正常工作,可以通过计算机或者其他控制器对DDS进行远程控制。

单片机简易信号发生器课程设计

单片机简易信号发生器课程设计

单片机简易信号发生器课程设计
本课程设计旨在介绍如何使用单片机制作简易信号发生器。

通过本课程的学习,学生将学习如何设计和实现基本的信号发生器电路,了解单片机的基本原理和编程方法,掌握调试和测试信号发生器的方法。

本课程设计包括以下主要内容:
1. 信号发生器的基本原理和电路设计。

学生将学习如何使用电容、电感、振荡器等元件构建基本的信号发生器电路,并了解不同类型的信号发生器的特点和应用。

2. 单片机的基本原理和编程方法。

学生将学习单片机的基本原理和编程方法,包括汇编语言和C语言编程。

通过编程实现信号发生器的各种功能,如不同频率和波形的输出。

3. 调试和测试信号发生器。

学生将学习如何使用示波器和信号分析仪等测试工具对信号发生器进行调试和测试,以确保其输出信号的准确性和稳定性。

通过本课程的学习,学生将掌握基本的电路设计和单片机编程技能,为日后的电子设计和开发打下坚实的基础。

同时,通过实现信号发生器的过程,学生将深入了解信号处理和控制的基本原理,为日后的学习和研究提供帮助。

- 1 -。

基于单片机DDS信号发生器的硬件设计

基于单片机DDS信号发生器的硬件设计

基于单片机DDS信号发生器的硬件设计单片机DDS信号发生器是一种利用数字直接频率合成技术(Direct Digital Synthesis, DDS)来生成高精度信号波形的设备。

它通过调用存储在单片机中的频率、幅度和相位数据,实时更新波形,从而实现高速、高分辨率和低失真的信号发生器功能。

在本文中,将简要介绍单片机DDS信号发生器的设计流程以及其硬件实现。

设计流程:1.确定需求和规格:首先需要明确所需信号的频率范围、分辨率、输出幅度和失真要求等基本参数,以确定设计的方向和重点。

2.硬件选型:根据需求确定适合的单片机型号和外围器件,如振荡器、滤波器、放大器等。

3.硬件连接:根据单片机的引脚功能和外部器件的连接方式设计电路图,将各模块连接起来。

4.编程开发:编写单片机控制程序,实现DDS算法和信号波形生成,并将其烧录到单片机中。

5.调试和优化:通过实际调试和测试,不断优化硬件和软件设计,使其符合设计要求。

硬件实现:1.单片机选择:选择一款适合的高性能单片机作为控制核心,如STM32系列、PIC系列等,具有较高的计算性能和丰富的功能模块。

2.时钟源部分:基于晶振或者DDS芯片提供的时钟信号作为主时钟源,保证信号发生器稳定输出。

3.数字与模拟部分:DDS信号发生器的核心是DDS芯片,它与单片机通过SPI接口通信,实现信号波形的生成和调试。

4.输出功率放大器:将DDS芯片输出的信号通过功率放大器放大至所需的幅度,以驱动外部电路工作。

5.滤波器设计:为了消除输出信号中的高次谐波和噪声干扰,需要设计合适的低通滤波器,保证输出信号的纯净度和稳定性。

6.电源管理:为各个模块提供稳定可靠的电源,充分考虑信号发生器的功耗和稳定性要求。

7.外部控制:设计合适的用户接口和控制按钮,方便用户操作和调节信号波形的参数。

总结:单片机DDS信号发生器的硬件设计涉及到信号生成、时钟同步、数字模拟转换、输出功率放大和滤波等多个方面,需要综合考虑各个模块的性能和需求,以实现高质量、高稳定性的信号输出。

单片机课程设计报告(信号发生器)

单片机课程设计报告(信号发生器)

单片机课程设计报告系部:电子通信工程系专业:电子信息工程课程设计报告前言:本文以8051f410单片机为核心设计了一个低频函数信号发生器。

信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、锯齿、三角波、及其他任意波形,波形的频率和幅度在一定范围内可任意改变。

波形和频率的改变通过软件控制,幅度的改变通过硬件实现。

介绍了波形的生成原理、硬件电路和软件部分的设计原理。

本系统可以产生最高频率99999HZ的波形。

该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。

设计报告:一、工作原理数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。

8051f410单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将8051f410再配置键盘及、及波形输出、放大电路等部分,即可构成所需的波形发生器。

经过考虑,我们确定方案如下:利用F410单片机采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A转换器将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制四种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。

1.1、设计要求1)、利用单片机采用软件设计方法产生四种波形2)、四种波形可通过键盘选择3)、波形频率可调4)、需显示波形的种类及其频率二、主程序思路主程序先是进行一些初始化的工作,然后根据波形标志代码的值,使其形成多个数组,每个数组都是一个波形代码。

这样写的好处是输出的波形频率也可以有定时常数决定,找到定时常数和输出频率的关系。

在按键设置波形转换状态的循环中,波形的转换状态在按键上可以一一看出,把四种波形设置成0、1、2、3、在数码管的最高位设置成循环显示,然后把每个波形的代码值通过单片机自带的AD 转换赋给输出的数据口,确定每个数组然后确定数组的列是否为数组中最后行的一个元素,若是则运行下一行的元素(另一个波形),并通过端口输出P0.0。

基于单片机的函数信号发生器设计设计

基于单片机的函数信号发生器设计设计

基于单片机的函数信号发生器设计设计基于单片机的函数信号发生器是一种能够产生各种波形信号的电子设备。

它利用单片机控制并产生不同频率、幅度和相位的信号,可以应用于实验室教学、科研实验、电子设备测试等领域。

本文将详细介绍基于单片机的函数信号发生器的设计原理、硬件实现、软件设计和功能实现等方面。

设计原理函数信号发生器的基本原理是使用振荡电路产生基准信号,再通过放大和滤波电路得到所需频率和幅度的信号。

传统的信号发生器采用模拟电路实现,如RC振荡器和多谐振荡器等。

而基于单片机的信号发生器则利用单片机高度集成的特点,通过软件控制实现信号的产生。

硬件实现振荡电路可以采用单片机内部的定时器/计数器模块来实现。

通过合理设置定时器的工作模式、时钟频率和计数值,可以产生所需的频率信号。

放大和滤波电路用于将振荡电路产生的小幅度信号放大到所需的幅度,并进行滤波处理,消除杂散和谐波。

AD转换电路用于将模拟信号转换为数字信号,以供单片机进行处理和输出。

可以采用单片机内部的ADC模块或外部的ADC芯片来实现。

软件设计单片机的驱动程序用于初始化相关外设,如定时器、IO口和ADC等,并提供相应的读写函数接口。

信号发生器的控制程序通过设置定时器的工作模式和时序控制,生成不同频率和波形的信号。

通过ADC转换获得外部设置的幅度参数,并通过PWM输出产生所需的幅度信号。

功能实现波形选择功能通过软件控制输出不同类型的波形信号,如正弦波、方波、三角波、锯齿波等。

频率调节功能通过改变定时器的工作模式和时钟频率,实现信号频率的调节。

可以设置不同的频率范围和分辨率,满足不同应用的需求。

幅度调节功能通过ADC转换获取外部设置的幅度参数,并通过PWM输出产生所需的幅度信号。

可以设置不同的幅度范围和分辨率,实现信号幅度的调节。

相位调节功能通过改变定时器的时序控制,实现信号相位的调节。

可以设置不同的相位范围和分辨率,满足不同实验或测试的需求。

总结基于单片机的函数信号发生器是一种功能强大、灵活性高的电子设备。

基于单片机的信号发生器设计

基于单片机的信号发生器设计

基于单片机的信号发生器设计
基于单片机的信号发生器是一种能够产生不同频率、幅度和波形的信号的设备。

它在电子实验、通信系统测试和音频设备调试中起到重要作用。

本文将介绍信号发生器的工作原理、设计要点以及一些应用案例。

信号发生器的核心部分是单片机,它是一种集成了处理器、存储器和输入输出接口的微型计算机。

单片机通过程序控制产生不同频率的脉冲信号,并通过数模转换器将数字信号转换为模拟信号输出。

为了保证信号的准确性和稳定性,还需要使用精密的时钟电路和滤波电路。

在设计信号发生器时,需要考虑以下几个要点。

首先是频率范围和分辨率的选择。

不同的应用场景需要不同的频率范围,而分辨率则决定了信号的精度。

其次是波形的选择和产生方式。

常见的波形有正弦波、方波、三角波等,可以通过查表、数学模拟或直接输出等方式产生。

此外,还需要考虑信号的幅度调节和输出阻抗匹配等问题。

信号发生器在实际应用中有着广泛的用途。

在电子实验中,它可以用来测试电路的频率响应、相位特性和失真情况。

在通信系统测试中,它可以模拟各种信号场景,用来验证系统的性能和稳定性。

在音频设备调试中,它可以生成各种音频信号,用来测试音响设备的音质和效果。

基于单片机的信号发生器是一种功能强大的设备,它能够产生多种频率、幅度和波形的信号,用于电子实验、通信系统测试和音频设备调试等领域。

通过合理的设计和实现,可以满足不同应用场景的需求,并提高工作效率和准确性。

希望本文对读者理解信号发生器的工作原理和设计要点有所帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计实验报告电子信息工程学院指导教师:***08年6月30日单片机课程设计实验报告一.系统总体介绍1)题目意义:这次课程设计的题目我选择的是信号发生器,我之所以选择这个题目的原因有三个①它是一个DA转换的实验,在前不久的市电子大赛中,我们做的是AD的转换,所以想将模数/数模都熟悉一遍,为今后可能遇到的接口实验打下坚实的基础;②另外一个原因是用到的芯片是MAX518,该芯片是串行数模转换,运用I2C总线,通过这个实验可以更好的运用串行通信,同时能够学习I2C总线的协议,掌握了一门新的总线,我觉得比其他实验收获更大;③MAX518的时序比较复杂,通过练习针对时序的编程可以更好的提高自己读PDF资料的能力和编程的能力。

2)本人所做的工作这个实验从始至终都是自己完成的。

①程序的编写,程序的编写是我结合MAX518的时序图编写出来的,编程的重点在于对与MAX518的编程,在编程的过程中对于应答信号的理解和处理是整个程序的核心,在单步调试中能够很明显的观测到SDA和SCL信号线上电平的变化;②四种波形的表格数据的建立。

表格的建立是通过MATLAB函数产生的。

其函数分别为:正弦波y=round(127*sin(0:2*pi/256:2*pi))+127锯齿波y=round(0:1:255)三角波y=round(0:2:255)Y=round(255:2:0)方波直接是0和255由于MATLAB产生的数据之间含有回车和空格,不符合汇编语言的语法规则,所以要用WORD对所得的数据进行处理,利用WORD的查找替换同能讲回车和空格替换为英文的逗号,其中回车的表示方法为^p③学习KEIL和SSTFlashFlex51.exe的使用④元器件的购买和焊接⑤实验报告的完成3)系统的主要功能该系统能够产生正弦波,锯齿波,三角波和方波四种波形,同时能够产生16HZ,12HZ,10HZ,8HZ四种频率,也就是可以产生4*4=16种信号,通过8个按键开关来选择,同时有八个发光二极管来指示产生信号的频率和波形,形象直观。

经过改进后增加了双路输出的功能,按下双波形选择键,可以同时发出两路波形,波形的种类由按下的两个波形选择开关决定。

定义位于左边的按键优先级高,右边的优先级低,优先级高的波形将由通道0输出,优先级低的将由通道1输出。

单路输出时功能同前所述。

二.硬件电路设计及描述本电路由SST89E58单片机,开关(10个),放光二极管(8个),11.0592M晶振,电容电阻组成。

为保证单片机能正常工作,首先将电源和地接好,将EA/VPP接到+5V;P1.4~P1.7,P3.0~P3.3口作为开光控制端口,用10K电阻上拉到+5V,通过开关控制是否接地;P1.1和P1.2作为SCL和SDA线,与MAX518通信;MAX518的AD0和AD1接地,地址为00,模拟信号由OUT0输出,由于MAX518的参考电压由电源电压提供,不用外接参考电压;三.软件设计流程及描述;首先是检测频率按键和波形按键,如果没有键按下就循环等待,选择好波形和频率后就进入主程序循环发送数据。

先发送MAX 518地址58H,然后发送控制信号00H,再发送数据,重复上述过程256次发送完一个周期的波形,再发送下一个周期,循环往复四.程序代码及源注释SDA EQU P1.2SCL EQU P1.1ORG 0000HAJMP FQ0 ;跳转到频率查询程序ORG 0100HFQ0: JB P1.7,FQ1 ;查询1.7口是否为低电平,高电平的话继续查询1.6口MOV R5,#02H ;延迟2usSETB P0.0 ;灭0.0口指示灯SETB P0.1 ;灭0.1口指示灯SETB P0.2 ;灭0.2口指示灯CLR P0.3 ;亮0.3口指示灯AJMP SS ;跳转到波形查询程序FQ1: JB P1.6,FQ2 ;查询1.6口是否为低电平,高电平的话继续查询1.5口MOV R5,#22H ;延迟34usSETB P0.0SETB P0.1SETB P0.3CLR P0.2 ;亮0.2口指示灯AJMP SS ;跳转到波形查询程序FQ2: JB P1.5,FQ3 ;查询1.5口是否为低电平,高电平的话继续查询1.4口MOV R5,#42H ;延迟66usSETB P0.0SETB P0.2SETB P0.3CLR P0.1 ;亮0.1口指示灯AJMP SS ;跳转到波形查询程序FQ3: JB P1.4,FQ0 ;查询1.7口是否为低电平,高电平的话继续查询1.6口MOV R5,#62H ;延迟98usSETB P0.1SETB P0.2SETB P0.3CLR P0.0 ;亮0.0口指示灯AJMP SS ;跳转到波形查询程序SS: MOV R0,#00H ;R0保存是单数循环还是双数循环JB P1.0,SIN ;没有按下开关时是单路输出,跳到SINAJMP LOPSIN: JB P3.0,JUCHI ;查询3.0口是否为低电平,高电平则查询3.1口MOV DPTR,#TABSIN ;DPTR指针指向正弦波数CLR P0.4 ;亮0.4口指示灯SETB P0.5 ;灭0.5口指示灯SETB P0.6 ;灭0.6口指示灯SETB P0.7 ;灭0.7口指示灯AJMP ST ;跳转到主程序JUCHI: JB P3.1,SANJIAO ;查询3.0口是否为低电平,高电平则查询3.1口MOV DPTR,#TABJUCHI ;DPTR指针指向锯齿波数据CLR P0.5 ;亮0.5口指示灯SETB P0.4SETB P0.6SETB P0.7AJMP ST ;跳转到主程序SANJIAO:JB P3.2,FANGBO ;查询3.0口是否为低电平,高电平则查询3.1口MOV DPTR,#TABSANJIAO;DPTR指针指向三角波数据CLR P0.6 ;亮0.6口指示灯SETB P0.4SETB P0.5SETB P0.7AJMP ST ;跳转到主程序FANGBO:JB P3.3,SIN ;查询3.0口是否为低电平,高电平则查询3.1口MOV DPTR,#TABFANGBO ;DPTR指针指向方波数据CLR P0.7 ;亮0.7口指示灯SETB P0.4SETB P0.5SETB P0.6AJMP ST ;跳转到主程序LOP: MOV R7,#255 ;R7存放每个波形的取样点数MOV R0,#00H ;R0保存是单数循环还是双数循环SETB P0.7SETB P0.6SETB P0.5SETB P0.4SENDA:JB P1.0,ST ;单输出的时候跳到ST正常输出MOV A,R7 ;ANL A,#01H ;判断是单数还是双数循环JNZ SINGLE ;单数的话跳到SINGLEMOV R0,#01H ;双数的话将R0赋1WAVE0: JB P3.3,WAVE1 ;倒序判断,从2通道输出MOV DPTR,#TABFANGBO ;DPTR指针指向方波数据CLR P0.7 ;亮0.7口指示灯AJMP STWAVE1: JB P3.2,WAVE2MOV DPTR,#TABSANJIAO ;DPTR指针指向三角波数据CLR P0.6 ;亮0.6口指示灯SETB P0.7 ;灭0.7口指示灯AJMP STWAVE2: JB P3.1,WAVE3MOV DPTR,#TABJUCHI ;DPTR指针指向锯齿波数据CLR P0.5 ;亮0.5口指示灯SETB P0.7 ;灭0.7口指示灯SETB P0.6 ;灭0.6口指示灯AJMP STWAVE3: JB P3.0,WAVE0MOV DPTR,#TABSIN ;DPTR指针指向正弦波数CLR P0.4 ;亮0.4口指示灯SETB P0.5 ;灭0.5口指示灯SETB P0.6 ;灭0.6口指示灯SETB P0.7 ;灭0.7口指示灯AJMP STSINGLE:MOV R0,#00HWAVE4: JB P3.0,WAVE5MOV DPTR,#TABSIN ;DPTR指针指向正弦波数CLR P0.4 ;亮0.4口指示灯AJMP STWAVE5: JB P3.1,WAVE6MOV DPTR,#TABJUCHI ;DPTR指针指向锯齿波数据CLR P0.5 ;亮0.5口指示灯SETB P0.4 ;灭0.7口指示灯AJMP STWAVE6: JB P3.2,WAVE7MOV DPTR,#TABSANJIAO ;DPTR指针指向三角波数据CLR P0.6 ;亮0.6口指示灯SETB P0.4 ;灭0.4口指示灯SETB P0.5 ;灭0.5口指示灯AJMP STWAVE7: JB P3.3,WAVE4MOV DPTR,#TABFANGBO ;DPTR指针指向方波数据CLR P0.7 ;亮0.7口指示灯SETB P0.4 ;灭0.4口指示灯SETB P0.5 ;灭0.5口指示灯SETB P0.6 ;灭0.6口指示灯AJMP STST: SETB SDA ;起始信号SETB SCLCLR SDAMOV A,#58H ;发送地址MOV R6,#08H ;每个字节有8位LOP0: CLR SCLRLC A ;左移一位,将最高位移至C寄存器MOV SDA,C ; 写入地址线SETB SCLDJNZ R6,LOP0 ;没发送完8为则继续发送CLR SCLJB SDA,$ ;应答信号,SDA为高点平则等待SETB SCLJB SDA,$ ;SCL置成高电平后继续查询SDA是否为低电平CLR SCLMOV A,R0 ;发送控制命令,过程同上MOV R6,#08HLOP1: CLR SCLRLC A ;左移一位MOV SDA,C ; 写一位SETB SCLDJNZ R6,LOP1CLR SCLJB SDA,$ ;应答信号,同上SETB SCLJB SDA,$CLR SCLLOP2: JB P1.0,SINGL ;发送数据MOV A,#0FFHSUBB A,R7MOVC A,A+DPTR ;将DPTR指向单元中的送入A中AJMP BSENDSINGL: MOV A,#00HMOVC A,A+DPTR ;将DPTR指向单元中的送入A中BSEND: MOV R6,#08H ;1字节8位LOP3: CLR SCLRLC A ;左移一位MOV SDA,C ;写一位SETB SCLDJNZ R6,LOP3INC DPTRCLR SCLJB SDA,$ ;应答信号SETB SCLJB SDA,$CLR SCLCLR SDA ;结束信号SETB SCLSETB SDAMOV A,R5 ;延时,用来控制波形的频率MOV R4,ADLY_MS:DJNZ R4,DLY_MSDJNZ R7,ZJT ;设置一个中间跳转,因为超出了DJNZ的跳转围AJMP FQ0ZJT: LJMP SENDA ;是否发送完256个数,发送完则进入下一个周期TABSIN:DB 127,130,133,136,139,143,146,149,152,155, 158,161,164,167,170,173,176,178,181,184DB187,190,192,195,198,200,203,205,208,210,212,215,217,219,221,223,225 ,227,229,231DB233,234,236,238,239,240,242,243,244,245,247,248,249,249,250,251,252 ,252,253,253DB253,254,254,254,254,254,254,254,253,253,253,252,252,251,250,249,249,248, 247,245DB244,243,242,240,239,238,236,234,233,231,229,227,225,223,221,219,217,215, 212,210DB208,205,203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161, 158,155DB152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,9 6,93,90DB87,84,81,78,76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27, 25DB23,21,20,18,16,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,2,2,3 DB4,5,5,6,7,9,10,11,12,14,15,16,18,20,21,23,25,27,29,31,33,35,37,39,42,44,46,4 9,51,54DB56,59,62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,12 1,124,127TABJUCHI:DB0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28, 29,30,31,32,33DB34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58, 59,60,61,62,63DB64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88, 89,90,91,92,93DB94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,11 3,114,115,116DB117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133 ,134,135,136,137DB138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155, 156,157,158DB159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175 ,176,177,178,179DB180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200DB201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217 ,218,219,220,221DB222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238 ,239,240,241,242DB 243,244,245,246,247,248,249,250,251,252,253,254,255 TABSANJIAO:DB0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,5 0,52,54,56,58,60,62DB64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108, 110,112,114DB116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150, 152,154,156DB158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192, 194,196,198DB200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234, 236,238,240DB242,244,246,248,250,252,254,255,253,251,249,247,245,243,241,239,237,235, 233,231,229DB227,225,223,221,219,217,215,213,211,209,207,205,203,201,199,197,195,193, 191,189,187DB185,183,181,179,177,175,173,171,169,167,165,163,161,159,157,155,153,151, 149,147,145DB143,141,139,137,135,133,131,129,127,125,123,121,119,117,115,113,111,109, 107,105,103DB101,99,97,95,93,91,89,87,85,83,81,79,77,75,73,71,69,67,65,63,61,59,57, 55,53,51,49,47DB 45,43,41,39,37,35,33,31,29,27,25,23,21,19,17,15,13,11,9,7,5,3,1 TABFANGBO:DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DB0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255, 255,255DB255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255DB255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255DB255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,2 55,255DB255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,2 55,255DB255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,2 55,255DB255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255END五.课程设计体会这是实验从电路的设计到程序的编写和调试是我自己独立完成的,这本身就是一个极大的锻炼,经过了无数次的失败最终产生了完美的波形。

相关文档
最新文档