基于51单片机控制的函数波形发生器

基于51单片机控制的函数波形发生器
基于51单片机控制的函数波形发生器

毕业论文目录

前言 (1)

1 总体方案设计及原理 (2)

1.1 方案的设计与选择 (2)

1.2 设计原理 (3)

1.3 设计思想 (3)

1.4 设计功能 (4)

2 硬件单元模块设计 (5)

2.1 硬件原理框图 (5)

2.2 自制电源 (5)

2.3 主控电路 (5)

2.4 数/模转换电路 (6)

2.5 晶振电路 (7)

2.6 复位电路 (7)

3 软件设计 (8)

3.1 软件设计原理 (8)

3.2 软件工具简介 (8)

3.2.1 Proteus简介 (8)

3.2.2 Keil C简介 (10)

3.3 软件设计结构图及程序流程图 (10)

3.3.1软件设计结构图 (10)

3.3.2 软件设计程序流程图 (11)

4 软硬件联调 (13)

4.1软硬件输出结果对比 (13)

4.2 软硬件实现过程及结果分析 (15)

结论 (15)

小结 (16)

参考文献 (17)

5 英文部分 (18)

附录 (19)

全文共_25_页_8913_字

基于51单片机控制的函数波形发生器

计算机与信息工程学院 2009级通信班 ******* 2009******

指导教师张** 讲师

摘要此文介绍一种用AT89C51单片机构成的函数波形发生器,可产生方波、三角波、正弦波、锯齿波等多种波形,波形的频率可用程序改变,并可根据需要选择输出波形。其中运用软硬件结合的方法实现设计功能,具有线路简单、结构紧凑、性能优越等特点。

关键词:51单片机;DAC;函数波形发生器

前言

波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。在 70年代前,信号发生器主要有两类:正弦波和脉冲波,而函数发生器介于两类之间,能够提供正弦波、余弦波、方波、三角波、上弦波等几种常用标准波形,产生其它波形时,需要采用较复杂的电路和机电结合的方法。这个时期的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复杂。同时,主要表现为两个突出问题,一是通过电位器的调节来实现输出频率的调节,因此很难将频率调到某一固定值;二是脉冲的占空比不可调节。在 70 年代后,微处理器的出现,可以利用处理器、A/D 和 D/A,硬件和软件使波形发生器的功能扩大,产生更加复杂的波形。这时期的波形发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到各种简单的波形。90 年代末,出现几种真正高性能、高价格的函数发生器,但也只能产生为数不多的几种波形,且价格昂贵。到了二十一世纪,随着集成电路技术的高速发展,出现了多种工作频率可过GHz的DDS芯片,同时也推动了函数波形发生器的发展,2003年,Agilent的产品33220A能够产生 17种波形,最高频率可达到20M,2005年的产品N6030A能够产生高达500MHz的频率,采样的频率可达 1.25GHz。由上面的产品可以看出,函数波形发生器近几年来发展很快,国际上波形发生器技术发展主要体现在以下几个方面:(1)过去由于频率很低应用的范围比较狭小,输出波形频率的提高,使得波形发生器能应用于越来越广的领域。波形发生器软件的开发正使波形数据的输入变得更加方便和容易。波形发

生器通常允许用一系列的点、直线和固定的函数段把波形数据存入存储器。同时可以利用一种强有力的数学方程输入方式,复杂的波形可以由几个比较简单的公式复合成v=f(t)形式的波形方程的数学表达式。从而促进了函数波形发生器向任意波形发生器的发展,各种计算机语言的飞速发展也对任意波形发生器软件技术起到了推动作用。目前可以利用可视化编程语言(如Visual Basic ,Visual C 等等)编写任意波形发生器的软面板,这样允许从计算机显示屏上输入任意波形,来实现波形的输入。(2)与VXI资源结合。目前,波形发生器由独立的台式仪器和适用于个人计算机的插卡以及新近开发的VXI模块。由于VXI总线的逐渐成熟和对测量仪器的高要求,在很多领域需要使用VXI系统测量产生复杂的波形,VXI 的系统资源提供了明显的优越性,但由于开发VXI模块的周期长,而且需要专门的VXI机箱的配套使用,使得波形发生器VXI模块仅限于航空、军事及国防等大型领域。在民用方面,VXI模块远远不如台式仪器更为方便。(3)随着信息技术蓬勃发展,台式仪器在走了一段下坡路之后,又重新繁荣起来。不过现在新的台式仪器的形态,和几年前的己有很大的不同。这些新一代台式仪器具有多种特性,可以执行多种功能。而且外形尺寸与价格,都比过去的类似产品减少了一半。基于这种现状此设计运用软硬件联调的方法设计一种电路简单,价格低廉,性能优越的函数波形发生器,并让其实现正弦波,方波,锯齿波,三角波的输出,各波形频率幅度可调,方波占空比可调。

1 总体方案设计及原理

1.1 方案的设计与选择

方案一:采用单片函数发生器(如8038),8038可同时产生正弦波、方波等,而且方法简单易行,用D/A转换器的输出来改变调制电压,也可以实现数控调整频率,但产生信号的频率稳定度不高【1】。

方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。

方案三:采用单片机编程的方法来实现。该方法可以通过编程的方法来控制信号波形的频率和幅度,而且在硬件电路不变的情况下,通过改变程序来实现频

率的变换。此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高。

鉴于方案一的信号频率不够稳定和方案二的电路复杂,频率覆盖系数难以达标等缺点,所以决定采用方案三的设计方法。它不仅采用软硬件结合,软件控制硬件的方法来实现,使得信号频率的稳定性和精度的准确性得以保证,而且它使用的几种元器件都是常用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。

1.2 设计原理

数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及其接口、显示器及其接口、数模转换及波形输出、指示灯及其接口等四部分,即可构成所需的波形发生器,其信号发生器构成原理框图如图1所示。

图1 信号发生器原理框图

89C51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。

1.3 设计思想

(1)利用单片机产生方波、正弦波、三角波和锯齿波等信号波形,信号的频率和幅度可变。

(2)将一个周期的信号分离成256个点(按X 轴等分),每两点之间的时间间隔为?T ,用单片机的定时器产生,其表示式为:?T=T/256。 如果单片机的晶振为12MHz ,采用定时器方式0,则定时器的初值为: X=213—?T/T mec (1) 定时时间常数为:

TL =(8192—?T )/MOD256 (2)

TH=(8192*?T)/256 (3)

MOD256表示除256取余数【2】。

(3)正弦波的模拟信号是D/A 转换器的模拟量输出,其计算公式为: Y=(A/2sin ?t )+A/2 (其中A=VREF) (4) ?t=N*?T (N=1--256) (5)

那么对应着存放在计算机里的这一点的数据为:

(6)

(4)一个周期被分离成256个点,对应的四种波形的256个数据存放在以TAB1--TAB4为起始地址的存储器中。 1.4 设计功能

(1)本方案利用AT89C51扩展9个独立式按键,1个数码管显示器。其中“S1”号键代表正弦波输出,“S2”号键代表方波输出,“S3”号键代表锯齿波输出,“S4” 号键代表三角波输出,“S5” 号键代表方波占空比增加, “S6” 号键代表方波占空比减少,“S7” 号键代表波形频率增加,“S8” 号键代表波形频率减少,“S9” 号键代表复位 。

(2)利用一个共阳极数码管显示数字来判断输出的相应波形。

(3)频率,幅度可调,频率范围为100—1000 Hz ,幅度范围为100—800 mv 。

(sin 1)255(255)/2t Di Y A ?+?=?=

2 硬件单元模块设计

2.1 硬件原理框图

硬件原理方框图如图1所示。

图2 硬件原理框图

2.2 自制电源

此电源由桥型整流电路和由7805芯片组成的稳压电路组成,具有电压稳定,可靠性高等优点【1】。如图3所示。

图3 自制电源

2.3 主控电路

AT89C51单处机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及四种工作模式。在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,

最高位产生溢出时向CPU请求中断【3】。

中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。在波形发生器中,只用到片内定时器/计数器溢出时产生的中断请求,即是在AT89C51输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,AT89C51等待,直到定时器计时结束,产生中断请求,AT89C51响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形【4】。

如图4所示,AT89C51从P1口接收来自键盘的信号,并通过P2口输出一些控制信号,用于控制其信号的输出。如果有键按下,则在读控制端会产生一个读信号,使单片机读入信号。如果有信号输出,则在写控制端产生一个写信号,并将所要输出的信号输出,并在数码管上显示出来。

图4 主控电路

2.4 数/模转换电路

数模转换就是将离散的数字量值转换为连续变化的模拟量值,实现该项功能的电路或器件称为数模转换电路,通常称为D/A转换器或DAC(Digital Analog Converter)。其基本原理是将输入的每一位二进制代码按其权的大小转换成相应的模拟量,然后将代表各位的模拟量相加,所得的总模拟量就与数字量成正比,这样便实现了从数字量到模拟量的转换。这就是构成 D/A 转换器的基本思路。

由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分

辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。如图5所示。

图5 数/模转换电路

2.5 晶振电路

单片机系统里都有晶振,且在单片机系统里晶振作用非常大,全程叫晶体振荡器。它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步【5】。如图6所示。

2.6 复位电路

复位电路的作用是在上电或复位过程中,控制CPU的复位状态。这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。无论用户使用哪种类型的单片

机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。复位电路如图7所示。

图6 晶振电路图7 复位电路

3 软件设计

3.1 软件设计原理

函数波形发生器的软件设计是基于Keil C和Proteus软件联合调试实现的。首先在Keil C软件环境下写入源程序然后建立工程文件编译运行无误后使其生成相应的.HEX文件,接着在Proteus软件环境中将生成的.HEX文件加载进入51单片机中,在电路连接无误的情况下进行调试运行即可【6】。

3.2 软件工具简介

3.2.1 Proteus简介

英国Labcenter公司推出的Proteus软件是一款极好的单片机应用开发平台,它以其特有的虚拟仿真技术很好地解决了单片机及其外围电路的设计和协同仿真问题,可以在没有单片机实际硬件的条件下,利用 PC以虚拟仿真方式实现单片机系统的软、硬件同步仿真调试,使单片机应用系统设计变得简单容易。Proteus软件涵盖了PIC、AVR、MCS8051、68HC11、ARM等微处理器模型,以及多种常用电子元器件,包括74系列、CMOS 4000系列集成电路、A/D和D/A转换器、键盘、LCD显示器、LED显示器,还提供示波器、逻辑分析仪、通信终端、

电压/电流表、I2C/SPI终端等各种虚拟仪表,这些都可以直接用于仿真设计,极大地提高了设计效率和设计水平。

Proteus软件已有20多年的历史,在国外应用较为普遍,尤其在教育界的口碑极佳。近年来Proteus软件被引入国内,在多所高等工科院校中得到成功应用。在单片机教学中采用Proteus软件,使单片机的学习过程变得直观形象,可以直接在基于原理图的虚拟模型上进行编程,并实现源码级的程序仿真调试,如有显示及输出,还能看到程序运行后的输出效果,配合各种虚拟仪表来展现整个单片机系统的运行过程,很好地解决了长期以来困扰单片机教学过程中软件和硬件无法很好结合的难题。

采用PC进行虚拟仿真实验要比采用单片机实验箱更为有效,因为用户可以根据需要随时对原理电路图进行修改,并立即获得仿真结果。由于在PC上修改原理电路图要比在实验箱上修改硬件电路容易得多,而且还可以根据设计要求采用不同元器件,或者修改元器件参数以获得不同输出结果,在成功进行虚拟仿真并获得期望结果的条件下,再制作实际硬件进行在线调试,可以获得事半功倍的效果。学生普遍反映,在Proteus软件平台上学习单片机知识,比以往单纯学习书本知识更易于接受,以原理图虚拟模型进行程序仿真调试,更易于提高单片机编程能力,还可以通过绘制和修改原理电路图增加很多实践经验。

Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。Proteus 产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。

其功能模块:—个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真; ARES PCB设计。PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs甚至LCD显示CPU模型.

3.2.2 Keil C简介

Keil软件是目前最流行开发MCS-51系列单片机的软件, Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil 软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。Keil C51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强, 使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。

3.3 软件设计结构图及程序流程图

3.3.1软件设计结构图

软件设计中,先确定设计方案及功能,然后在Keil C中编译程序,最后进行Proteus仿真。如图8所示。

图8软件设计结构图

3.3.2 软件设计程序流程图

本文中子程序的调用是通过按键的选择来实现,在取得按键相应的键值后,启动计时器和相应的中断服务程序,再直接查询程序中预先设置的数据值,通过转换输出相应的电压,从而形成所需的各种波形。

主程序的流程图如图9所示,在程序开始运行之后,首先是对单片机进行初始化,之后判断按键值,如符合所需的按键,则重置时间常数,并通过显示器显示出来,不符则返回。在中断结束后,还要来判断波形是否符合,如符合,则调用子程序,不符则返回,重新判断。

图9 主程序流程图

图10为各波形子程序的流程图。如图所示,在中断服务子程序开始后,通过判断来确定各种波形的输出,当判断选择的不是正弦波后,则转向对方波的判断,如此反复。如果选择的是正弦波,则用查表的方法求出相应的数据,并通

过D/A转换器将数据转换成模拟信号,形成所需波形信号。

图10 子程序的流程图

图11为各波形频率调节子程序流程图。

图12为方波占空比调节子程序流程图。

图11 波形频率调节子程序流程图图12 方波占空比调节子程序流程图

4 软硬件联调

4.1软硬件输出结果对比

(1)软硬件输出正弦波对比,如图13,图14所示。

图13 软件正弦波输出

图14 硬件正弦波输出(2)软硬件输出方波对比,如图15,图16所示。

图15 软件方波输出

图16 硬件方波输出

(3)软硬件输出方波占空比增加,如图17,图18所示。

图17 软件输出方波占空比增加

图18 硬件输出方波占空比增加(4)软硬件输出方波占空比减少,如图19,图20所示。

图19 软件输出方波占空比减少

图20 硬件输出方波占空比减少(5)软硬件输出锯齿波对比,如图21,图22所示。

图21 软件输出锯齿波

图22 硬件输出锯齿波(6)软硬件输出三角波对比,如图23,图24所示。

图23 软件输出三角波

图24 硬件输出三角波

4.2 软硬件实现过程及结果分析

软件设计过程中遇到问题颇多:首先对软件Keil C和Proteus不了解,以前没有接触过。在查阅资料和请教老师后才解决了软件安装问题。接着在Keil C 软件中编译源程序,由于是初次在其中编程,不了解头文件的应用及程序编排格式,在运行程序时错误百出,经过看书和同学讨论后才将程序编译无误。再次,用proteus仿真时起初一些元器件找不到,在查阅资料后才将电路图连接出来。当再调试仿真时发现51芯片中未加载程序,在将Keil C环境下生成的.HEX文件加载入51芯片后仿真波形才出现。

硬件实现过程中遇到的主要问题是焊接问题。由于焊接电路板采用的是万用板,因此在焊接时要自己电线搭建电路,这就为焊接带来麻烦。焊接过程中出现了虚焊和错焊问题,导致输不出波形。在经过检测和排查后,才将实物电路焊接完成。

软硬件输出结果由图13至图24对比分析可知:软件输出结果良好,硬件输出结果有一定失真,由此可见理论与实践是有差距的。在实物输出中,输出波形抖动且一定失真,其原因可能是电源输出电压不稳或者数模转换电路频率与晶振频率不匹配,也有可能是电路还存在虚焊。

结论

此次毕业设计基本实现了设计要求,产生了设计需要的正弦波,方波,三角波,且各波形频率幅度可调,并在此基础上多增加一种波形——锯齿波,又增加一种功能——方波占空比可调和自制一个9v电源。美中不足的是实物输出波形时无法消除抖动现象,分析其原因可能是自制电源输出电压不稳或数模转换时频率不匹配。

小结

回顾此次毕业设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在一两个月的日子里,可以说得是苦多于甜,但是学到很多的东西,同时不仅可以巩固以前所学过的知识,而且还学到了很多在书本上所没有学过的知识。通过这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。在设计的过程中遇到问题,可以说得是困难重重,毕竟是第一次做这么大的系统,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对C

语言掌握得不好等问题。

这次毕业设计终于顺利完成了,在设计中遇到了很多问题,最后在张鹏举老师的辛勤指导下,终于迎刃而解。同时,在张**老师那里我学到了很多实用的知识,在此我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示衷心的感谢!

参考文献

[1] 童诗白.模拟电路技术基础[M].北京:高等教育出版社,2000.171~202.

[2] 程全.基于AT89C52实现的多种波形发生器的设计[J].周口师范学院学报,2005.22(5):

57~58.

[3] 杜华.任意波形发生器及应用[J].国外电子测量技术,2005.1:38~40.

[4] 李叶紫. MCS-51单片机应用教程[M].北京:清华大学出版社,2004.232~238.

[5] 张友德.单片微型机原理、应用与实践[M].上海:复旦大学出版社,2004.40~44.

[6] 陈海宴.51单片机原理及应用——基于Keil C与Proteus[M].北京:北京航空航天大学出版社,2010.

5 英文部分

Function waveform generator controlled by 51 MCU

Computer and Information Engineering College Communications Engineering

Wang*** 2009****

Directed by Zhang ** lecturer

Abstract This paper introduces a function waveform generator controlled by 51 MCU , which can generate square wave, triangle wave, sine wave, sawtooth wave and so on. The generator can change the wave’s frequency and amplitude and select what kind of wave to output. The design used the method which combined the hardware and software to achive the design function. So, it has the advantages of simple circuit, compact structure and superior performance characteristics.

Keywords MCU;DAC;Function waveform generator

附录

附录1 源程序

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit s1=P1^0; //定义S1~S8控制单片机P1口输入

sbit s2=P1^1;

sbit s3=P1^2;

sbit s4=P1^3;

sbit s5=P1^4;

sbit s6=P1^5;

sbit s7=P1^6;

sbit s8=P1^7;

uint d1,d2;

uint s,p;

uint n;

uchar code bxnum[ ]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82, //设置数码管初始化0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

uchar code sintab[256]= //256个采样点取值输出正弦波{

0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,

0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,

0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,

0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,

0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,

0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,

0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,

0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,

0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,

0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,

0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,

0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,

0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,

0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,

0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,

0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,

0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,

0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,

0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,

0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,

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

龙源期刊网 https://www.360docs.net/doc/ad14199458.html, 基于51单片机的函数信号发生器的设计 作者:朱兆旭 来源:《数字技术与应用》2017年第02期 摘要:本文所设计的系统是采用AT89C51单片机和D/A转换器件DAC0832产生所需不 同信号的低频信号源,AT89C51 单片机作为主体,采用D/A转换电路、运放电路、按键和LCD液晶显示电路等,按下按键控制生成方波、三角波、正弦波,同时用LCD显示相应的波形,输出波形的周期可以用程序改变,具有线路简单、结构紧凑、性能优越等特点。 关键词:51单片机;模数转换器;信号发生器 中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2017)02-0011-01 1 前言 波形发生器,是一种作为测试用的信号源,是当下很多电子设计要用到的仪器。现如今是科学技术和设备高速智能化发展的科技信息社会,集成电路发展迅猛,集成电路能简单地生成各式各样的波形发生器,将其他信号波形发生器于用集成电路实现的信号波形发生器进行对比,波形质量、幅度和频率稳定性等性能指标,集成电路实现的信号波形发生器都胜过一筹,随着单片机应用技术的不断成长和完善,导致传统控制与检测技术更加快捷方便。 2 系统设计思路 文章基于单片机信号发生器设计,产生正弦波、方波、三角波,连接示波器,将生成的波形显示在示波器上。按照对作品的设计研究,编写程序,来实现各种波形的频率和幅值数值与要求相匹配,然后把该程序导入到程序存储器里面。 当程序运行时,一旦收到外界发出的指令,要求设备输出相应的波形时,设备会调用对应波形发生程序以及中断服务子程序,D/A转换器和运放器随之处理信号,然后设备的端口输出该信号。其中,KEY0为复位键,KEY1的作用是选择频率的步进值,KEY2的作用是增加频 率或增加频率的步进值,KEY3的作用是减小频率或减小频率的步进值,KEY4的作用是选择三种波形。103为可调电阻,用于幅值的调节。自锁开关起到电源开关的作用。启动电源,程序运行的时候,选择正弦波,红色LED灯亮起;选择方波,黄色LED灯亮起;选择三角波,绿色LED灯亮起。函数信号发生器频率最高可达到100Hz,最低可达到10Hz,步进值0.1- 10Hz,幅值最高可到3.5V。系统框图如图1所示。 3 软件设计

基于单片机正弦信发生器












专业班级:
学生姓名:
指导教师(签名):
一、课程设计(论文)题目
正弦波信号发生器设计
二、本次课程设计(论文)应达到的目的
本次课程设计是自动化专业学生在学习了《单片机原理及应用》课程 及《模拟电子线路》、《数字电子线路》等专业基础课程之后进行的一次综 合训练,其主要目的是加深学生对单片机软硬件技术和相关理论知识的理 解,进一步熟悉 51 单片机系统设计的基本理论、方法和技能;掌握工程 应用的基本内容和要求,力争做到理论与实际的统一;同时培养学生分析 问题、解决问题的能力和独立完成系统设计的能力,并按要求编写相关的 技术文档和设计报告等。
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技 术参数、设计要求等)
1.设计内容
(1)选择 51 单片机,晶振采用 12MHz。
(2)设计一个能产生 0 至 50HZ 正弦波信号。通过 0832D/A 芯片完成 数模转换。

(3)频率值由键盘输入。 (4)将频率值由 LED 数码管上显示(两位)。 2.设计要求 (1)按照任务书的要求完成系统分析及方案设计。 (2)完成硬件原理图的设计,并选择相关元器件。 (3)完成控制软件流程图的设计,编写相应的单片机控制程序。 (4)撰写设计报告。 四、应收集的资料及主要参考文献: 1.李建忠.单片机原理及应用.西安电子科技大学出版社,2008 2.杨居义.单片机课程设计指导.清华大学出版社,2009 3.李海滨等.单片机技术课程设计与项目实例.中国电力出版社,2009 以及与 51 系列单片机相关的文献及教材。 五、审核批准意见
教研室主任(签字) 正弦信号发生器设计方案框图

单片机中断程序大全

单片机中断程序大全公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

//实例42:用定时器T0查询方式P2口8位控制L E D闪烁#include // 包含51单片机寄存器定义的头文件void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 //实例43:用定时器T1查询方式控制单片机发出1KHz音频

#include // 包含51单片机寄存器定义的头文件sbit sound=P3^7; //将sound位定义为P3.7引脚 void main(void) {// EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%256; //定时器T1的高8位赋初值 TR1=1; //启动定时器T1 TF1=0; while(1)//无限循环等待查询 { while(TF1==0); TF1=0; sound=~sound; //将P3.7引脚输出电平取反 TH1=(65536-921)/256; //定时器T0的高8位赋初值 TL1=(65536-921)%256; //定时器T0的高8位赋初值 } } //实例44:将计数器T0计数的结果送P1口8位LED显示 #include // 包含51单片机寄存器定义的头文件sbit S=P3^4; //将S位定义为P3.4引脚

51单片机中断程序大全

//实例42:用定时器T0查询方式P2口8位控制LED闪烁#include // 包含51单片机寄存器定义的头文件 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 } } //实例43:用定时器T1查询方式控制单片机发出1KHz音频#include // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7引脚 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值

51单片机实例(含详细代码说明)

1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理:

如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 2+2×248=498 20× DJNZ R7,$ 2个2×248 (498 DJNZ R6,D1 2个2×20=40 10002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时, 延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms, 10ms×R5=200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管 的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平, 即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0 端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 5.程序框图 如图4.1.2所示

基于51单片机电子闹钟的设计(1)

单片机原理与接口技术课程设计题目:多功能电子闹钟 院系:电气与电子工程系 专业:电气工程及其自动化 班级:电气工程1503 姓名: 学号: 指导教师: 二零一七年十二月

多功能电子闹钟 摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。 本设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由5V直流电源供电。在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED采用的是动态扫描显示,使用74LS245芯片进行驱动。通过LED能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用C语言编程。整个电子钟系统能完成时间的显示、调时、校时和三组定时闹钟的功能。 选用单片机最小系统应用程序,添加比较程序、时间调整程序及蜂鸣程序,通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境。介绍并使用Keil 单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 关键词:单片机定时器中断闹钟 LED

目录 第1章方案的选择和论证 (1) 1.1单片机型号的选择 (1) 1.2按键的选择 (1) 1.3显示器的选择 (1) 1.4计时部分的选择 (1) 1.5发音部分的设计 (2) 1.6显示器驱动电路 (2) 1.7电源的选择 (2) 第2章数字电子钟的设计原理和方法 (3) 2.1设计原理 (3) 2.2硬件电路的设计 (3) 2.2.1 AT89C51单片机简介 (3) 2.2.2 键盘电路的设计 (3) 2.2.3 段码驱动电路 (4) 2.2.4 蜂鸣器驱动电路 (4) 2.3软件部分的设计 (5) 2.3.1 主程序部分的设计 (5) 2.3.2 中断定时器的设置 (5) 2.3.3 闹钟子函数 (6) 2.3.4 计时函数 (6) 2.3.5 键盘扫描函数 (8) 2.3.6 时间和闹钟的设置 (8) 第3章实验结果 (10) 总结 (11) 致谢 (12) 参考文献 (13) 附录 (14)

基于51单片机的波形发生器的设计讲解

目录 1 引言 (1) 1.1 题目要求及分析 (1) 1.1.1 示意图 (1) 1.2 设计要求 (1) 2 波形发生器系统设计方案 (2) 2.1 方案的设计思路 (2) 2.2 设计框图及系统介绍 (2) 2.3 选择合适的设计方案 (2) 3 主要硬件电路及器件介绍 (4) 3.1 80C51单片机 (4) 3.2 DAC0832 (5) 3.3 数码显示管 (6) 4 系统的硬件设计 (8) 4.1 硬件原理框图 (8) 4.2 89C51系统设计 (8) 4.3 时钟电路 (9) 4.4 复位电路 (9) 4.5 键盘接口电路 (10) 4.7 数模转换器 (11) 5 系统软件设计 (12) 5.1 流程图: (12) 5.2 产生波形图 (12) 5.2.1 正弦波 (12) 5.2.2 三角波 (13) 5.2.3 方波 (14) 6 结论 (16) 主要参考文献 (17) 致谢...................................................... 错误!未定义书签。

1引言 1.1题目要求及分析 题目:基于51单片机的波形发生器设计,即由51单片机控制产生正弦波、方波、三角波等的多种波形。 1.1.1示意图 图1:系统流程示意图 1.2设计要求 (1) 系统具有产生正弦波、三角波、方波三种周期性波形的功能。 (2) 用键盘控制上述三种波形(同周期)的生成,以及由基波和它的谐波(5次以下)线性组合的波形。 (3) 系统具有存储波形功能。 (4) 系统输出波形的频率范围为1Hz~1MHz,重复频率可调,频率步进间隔≤100Hz,非正弦波的频率按照10次谐波来计算。 (5) 系统输出波形幅度范围0~5V。 (6) 系统具有显示输出波形的类型、重复频率和幅度的功能。

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

摘要: 本系统利用单片机AT89S52采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz—3kHz的波形。通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。 关键词:单片机AT89S52、DAC0832、液晶1602 Abstract: this system capitalize on AT89s52,it makes use of central processor to generate three kinds of waves, they are triangle wave, and use D/A conversion module, wave generate module and liquid crystal display of 1602, it can have the 1Hz-3KHz profile. In this system it can control wave form choosing, frequency, range,can have the sine wave, the square-wave, the triangular wave. Simultaneously may also take the frequency measurement frequency,and displays them through liquid crystal display of 1602. this design includes three modules. They are D/A conversion module, wave generate module and liquid crystal display of LED module. In this design, the wave generator into wave form module and D/A conversion module are discussed in detail. key word: AT89S52, DAC0832, liquid crystal 1602. 目录

基于单片机的信号发生器(完整电路_程序)资料

电子与信息工程学院综合实验课程报告 实验名称:基于单片机的信号发生器的设计与实现班级:10电工2班 学号:20101851046 姓名:李俊 指导教师: 时间:

摘要 本文以STC89C51单片机为核心设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如 正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。介绍了波形的生成原理、硬件电路和软件部分的设计原理。本系统可以产生最高频率798.6HZ的波形。该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。 关键词:低频信号发生器;单片机;D /A转换; 1设计选题及任务 设计题目:基于单片机的信号发生器的设计与实现 任务与要求: 设计一个由单片机控制的信号发生器。运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。信号发生器所产生的波形的频率、幅度均可调节。并可通过软件任意改变信号的波形。 基本要求: 1. 产生三种以上波形。如正弦波、三角波、矩形波等。 2.最大频率不低于500Hz。并且频率可按一定规律调节,如周期按1T,2T,3T,4T 或1T,2T,4T,8T变化。 3.幅度可调,峰峰值在0——5V之间变化。 扩展要求:产生更多的频率和波形。 2系统概述 2.1方案论证和比较 2.1.1总体方案: 方案一:采用模拟电路搭建函数信号发生器,它可以同时产生方波、三角波、正弦波。但是这种模块产生的不能产生任意的波形(例如梯形波),并且频率调节很不方便。 方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。

51单片机定时中断C语言的写法步骤

51单片机定时中断C语言的写法步骤 程序说明:51单片机定时器0工作于方式一,定时50ms中断一次 晶振为12M #include void main { TOMD = 0X01;//配置定时器0工作于方式一 TH1 = (65536-50000)/256; //高八位装入初值 TL1 = (65536-50000)%256; //低八位装入初值 ET0 = 1; //开定时器0中断 EA = 1; //开总中断 TR0 = 1; //启动定时器0 while(1) { ; } } void Timer0_int() interrupt 1 { //重新装初值 TH1 = (65536-50000)/256; //高八位装入初值 TL1 = (65536-50000)%256; //低八位装入初值 } /****************************************************************************** *********************************/ 上面是比较好理解的。如果实在要求简洁的话,看下面的,跟上面功能一样 #include void main { TOMD = 0X01;//配置定时器0工作于方式一 TH1 = 0x3c; //高八位装入初值 TL1 = 0xb0; //低八位装入初值 IE = 0x82;//开总中断并开定时器0中断 TR0 = 1; //启动定时器0 while(1) { ; } }

void Timer0_int() interrupt 1 { //重新装初值 TH1 = 0x3c; //高八位装入初值TL1 = 0xb0; //低八位装入初值}

基于51单片机的函数发生器和示波器解析

《智能仪器仪表设计基础》 课程设计报告 单位:自动化学院 学生姓名:汪连升 专业:测控技术与仪器 班级:0821001 学号:2010212950 指导老师:耿道渠 成绩: 设计时间:2013 年5月 重庆邮电大学自动化学院制

一、题目:基于单片机的多波形信号发生器设计 二、指导教师:耿道渠 三、设计要求: 设计一个信号发生器,实现如下功能: (1)可产生正弦波、方波、三角波、脉冲等波形; (2)通过按钮或键盘选定输出波形; (3)波形频率可设定; (4)波形可通过液晶屏显示。 四、给定条件: 1、8051单片机最小系统; 2、ADC,DAC器件; 五、设计: 1、方案论证,并确定设计方案 2、给出信号发生器的整体设计框图 3、硬件电路设计 4、软件设计(画出程序流程图,并给出相应模块程序代码) 5、完成设计报告 六、具体设计过程及实验结果: 七、设计的心得体会: 八、附件:(可选) 完成心率波、指数上升和指数下降波形; 九、参考书目: 给出主要参考书目(如:《单片机原理与应用》、《电子测量技术》、《单片机C语言程序设计》等),包括作者,书目名称,出版社等。

基于51单片机的波形发生器 引言 波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。函数波形发生器具有连续的相位变换、和频率稳定性等优点,不仅可以模拟各种复杂信号,还可对频率、幅值、相移、波形进行动态、及时的控制,并能够与其它仪器进行通讯,组成自动测试系统,因此被广泛用于自动控制系统、震动激励、通讯和仪器仪表领域。 本系统通过对51单片机的控制,用DA-AD等模块实现了正弦波、方波、三角波和锯齿波的产生,同时可以通过按键实现波形的选择和波形频率的改变。在实现波形的发生的同时又实现了波形图线的显示,通过NoKia5110对AD实时采集数据的显示、波形类型和波形频率的显示。 摘要: 本系统采用单片C8052为控制核心,通过其端口实现数字量的输出,然后由DAC0832把数字量转换成模拟量;但是DAC芯片输出的是电流信号,本系统用LM324运放把电流信号转换为电压信号。然后利用LM358搭建一个同相比例放大器,将转换后的电压信号按可调比例放大一定倍数。波形显示利用NoKia5110液晶屏,显示其波形、频率和实时的图像。显示其图像的时候我们利用ADC0804模数转换芯片将产生的模拟信号转换为数字信号,把AD实时读取到的值等比例显示到液晶屏上。本系统通过按键实现波形的选择以及波形频率的改变。 关键字:STC89C52 DAC0832 Nokia5110 ADC0804 LM324 独立按键

51单片机制作的波形发生器

51单片机制作的波形发生器 相信很多朋友都可能接触到一个波型发生器的制作,可能刚刚入门,做的东西也不会说是很复杂。可能就一 个矩形波,或者是三角波。但是网上的很多资料是忽悠 人的,就此,我也提供一个比较完整的波型发生器 C51 原代: 该系统的软件比较典型:包括键盘的应用,显示的 应用和 DA 转换器的应用。本设计中,输出的波形有三种:正弦波,方波,三角波。 方波的输出最为简单,只要按照设定的周期值将输 出的电压改变即可。 三角波的输出也比较简单,单片机的输出只要完成 数字量递增和递减交替进行即可。、 正弦波的输出最麻烦,如果在软件中计算出输出的 各点电压值,将会浪费很多的 CPU 时间,以至于无法满足频率的要求。通常最简单的方法是通过手动的方法计 算出输出各点的电压值,然后在编写程序时以数组的方 式给出。当需要时,只要按照顺序进行输出即可。这种 方法比运算法速度快且曲线的形状修改灵活。在本设计 中将 360 度分为 256 个点,则每两个点之间的间隔为1.4 度,然后计算出每个点电压对应的数字量即可。只

要反复输出这组数据到 DAC0832, 就可以在系统输出端得到想要的正弦波。 具体程序如下: #include ; #define uchar unsigned char #define uint unsigned int #define DAdata P0 uchar code Sinetab[256]= { 0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e, 0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e, 0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xab,0xad, 0xaf,0xb1,0xb2,0xb4,0xb6,0xb7,0xb9,0xba, 0xbc,0xbd,0xbf,0xc0,0xc1,0xc3,0xc4,0xc5, 0xc6,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce, 0xce,0xcf,0xd0,0xd1,0xd1,0xd2,0xd2,0xd3, 0xd3,0xd3,0xd2,0xd2,0xd1,0xd1,0xd0,0xcf, 0xce,0xce,0xcd,0xcc,0xcb,0xca,0xc9,0xc8, 0xc6,0xc5,0xc4,0xc3,0xc1,0xc0,0xbf,0xbd, 0xbc,0xba,0xb9,0xb7,0xb6,0xb4,0xb2,0xb1, 0xaf,0xad,0xab,0xaa,0xa8,0xa6,0xa4,0xa2, 0xa0,0x9e,0x9c,0x9a,0x98,0x96,0x94,0x92,

51单片机开发板使用手册

STU_MAIN单片机开发板使用手册 第一章STU_MAIN 单片机开发板简介 (2) 1.1 单片机开发板概述 (2) 1.2 单片机开发板载资源介绍 (2) 1.3 STU_MAIN 单片机开发板接口说明 (4) 1.4 如何开始学习单片机 (5) 第二章软件使用方法 ......................... . (6) 2.1 KEIL 软件的使用方法 (6) 2.2 STC-ISP 软件的安装与使用 (13) 2.3 使用USB 口下载程序时设置步骤 (18) 第三章STU_MAIN 开发板例程详细介绍 (21) 3.1 准备工作 (21) 3.2 安装STC-ISP下载程序 (21) 3.3 闪烁灯 (22) 3.4 流水灯 (23) 3.5 单键识别 (25) 3.6 利用定时器和蜂鸣器唱歌 (28) 3.7 DS18B20 温度测量显示实验 (31) 3.8 LCD1602 字符液晶显示 (36) 3.9 串口通讯实验 (39) 3.10 基于DS1302的多功能数字钟实验 (41) 3.11 EEPROM X5045 实验 (47)

第一章STU_MAIN 单片机开发板简介 1.1 单片机开发板概述 STU_MAIN 单片机开发板是经过精心设计开发出的多功能MCS-51 单片 机开发平台。该开发板集常用的单片机外围资源、串口调试下载接口于一身,可以让您在最短的时间内,全面的掌握单片机编程技术。该开发板特别适合单片机初学者、电子及通信等专业的课程设计以及电子爱好者自学使用。 STU_MAIN 单片机开发板可作为单片机课程的配套设备,课程从最基本的预备知识开始讲起,非常详细的讲解KEIL 编译器的使用,包括软件仿真、测定时间、单步运行、全速运行、设置断点、调试、硬件仿真调试、变量观察等,整个过程全部用单片机的C 语言讲解,从C 语言的第一个主函数MAIN 讲起,一步步一条条讲解每一个语法、每条指令的意思,即使对单片机一巧不通,对C 语言一无所知,通过本课程的学习也可以让你轻松掌握MCS-51 单片机的C 语言编程。全新的讲课风格,跳过复杂的单片机内部结构知识,首先从单片机的应用讲起,一步步深入到内部结构,让学生彻底掌握其实际应用方法,把MCS-51单片机的所有应用、每个部分都讲解的非常清晰明了,授课教师在教室前面用电脑一条一条写程序,旁边用STU_MAIN 单片机开发板逐个实验的演示,给学生解释每条指令的意思及原理,通过一学期的学习让学生完全掌握单片机的C 语言编程及单片机外围电路设计的思想。以实践为主、学生现场写程序、直接下载到开发板观察现象。 1.2 单片机开发板载资源介绍 一. STU_MAIN单片机开发板(串口直接下载程序) 本开发板以STC 公司生产的STC90C54RD+ 单片机做核心控制芯片,它是 一款性价比非常高的单片机,它完全兼容ATMEL 公司的51/52系列单片机,除此之外它自身还有很多特点,如:无法解密、低功耗、高速、高可靠、强抗静电、强抗干扰等。 其次STC 公司的单片机内部资源比起ATMEL 公司的单片机来要丰富的多,它内部有1280 字节的SRAM、8-64K 字节的内部程序存储器、2-8K 字节的ISP 引导码、除P0-P3 口外还多P4 口(PLCC封装)、片内自带8路8位AD(AD 系列)、片内自带EEPROM、片内自带看门狗、双数据指针等。目前STC 公司的单片机在国内市场上的占有率与日俱增,有关STC 单片机更详细资料请查阅相关网站。 STU_MAIN单片机开发板可完全作为各种MCS-51单片机的开发板,用汇编语言或C 语言对其进行编程。当用STC 公司的单片机时,直接用后面介绍的串口线将开发板与计算机串口相连,按照STC 单片机下载操作教程便可下载程序,

基于51单片机的简易函数信号发生器

创新性实验研究报告实验项目名称_简易函数信号发生器

四、实验内容

2、实验内容 1、运用keil软件对程序进行编写,运行程序,并进行程序修改。 2、运用protues软件进行硬件电路仿真设计。 3、将程序下载到仿真单片机中,并观测输出波形。 4、对程序进行修改,再次运行仿真软件,直到输出理想的波形。 5、仿照仿真软件进行硬件电路的焊接。 6、将程序下载到单片机,并用示波器测试输出波形。 7、对程序进行修改,直到输出满意的波形为止。

3、实验步骤 1、首先打开keil软件. 2、运用keil软件对程序进行编写,程序见附件。 3、打开protues软件. 4、运用protues软件对硬件电路进行设计。 9C51单片机是该信号发生器的核心,具有2个定时器,32个并行I/O口,1个串行I/O口,5个中断源。由于本设计功能简单,数据处理容易,数据存储空间也足够,因为我们采用了片选法选择芯片,进行芯片的选择和地址的译码。在单片机最小最小系统中,单片机从P1口接收来自键盘的信号,并通过P0口输出控制信号,通过DA转换芯片最终由示波器显示输出波形。单片机引脚分配如下:?XTAL1,XTAL2:外接晶振,产生时钟信号。 ?RST:复位电路; ?P2口:8位数字信号输出输出,外接DAC0832; ?P3.6口和P3.7口:DAC0832的时钟信号; 单片机模块 单片机输出的是数字信号,因为要得到模拟信号的波形就必须对其进行数模转换。我们采用了DAC0832数模转换器,该芯片具由8位输入锁存器、8位DAC寄存器、8位D/A转换器及转换控制电路四部分构成。由于其输出为电流输出,因为外加运算放大器LM324使之转换为电压输出。最后通过示波器显示输出的波形。

51单片机-波形发生器

单片机课程设计报告 题目波形发生器 专业电子信息科学与技术 班级 2008级1班 学生姓名 ***** 学号 3080422*** 指导老师 ***** 2011年 7 月 8 日

目录 一、设计目的……………………………………………………错误!未定义书签。 二、设计的主要内容和要求……………………………………错误!未定义书签。 2.1基本内容和要求…………………………………………………………错误!未定义书签。 2.2创新部分…………………………………………………………………错误!未定义书签。 三、整体设计思路………………………………………………错误!未定义书签。 3.1设计思路…………………………………………………………………错误!未定义书签。 3.2元件选型…………………………………………………………………错误!未定义书签。 3.3功能原理图………………………………………………………………错误!未定义书签。 四、方案论证…………………………………………………… - 3 - 五、硬件电路设计……………………………………………… - 4 - 5.1硬件连线图………………………………………………………………错误!未定义书签。 5.2主要芯片介绍……………………………………………………………错误!未定义书签。 六、软件设计………………………………………………………错误!未定义书签。 6.1正弦波的产生过程………………………………………………………错误!未定义书签。 6.2方波产生过程……………………………………………………………错误!未

定义书签。 6.3锯齿波的产生过程……………………………………………………错误!未定义书签。 6.4三角波的产生过程……………………………………………………错误!未定义书签。 6.5通过开关实现波形切换和调频…………………………………………错误!未定义书签。 6.7附程序代码………………………………………………………………错误!未定义书签。 七、调试与仿真……………………………………………………错误!未定义书签。 八、总结……………………………………………………………错误!未定义书签。 九、参考文献……………………………………………………错误!未定义书签。 波形发生器 一、设计目的 (1)利用所学单片机机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。 (2)我们这次的课程设计是以单片机为基础,设计并开发能输出多种波形(正弦波、三角波、锯齿波、方波、梯形波等)且频率、幅度可变的波形发生器。 (3)掌握各个接口芯片(如0832等)的功能特性及接口方法,并能运用其实现一个简单的单片机应用系统功能器件。 (4)在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的内容进行练习。因此,缺乏一种系统的设计锻炼。在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。 (5)通过这几个波形进行组合形成了一个波形发生器,使得我对系统的整个框架的设计有了一个很好的锻炼。这不仅有助于大家找到自己感兴趣的题目,更可以

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

摘要:本系统利用单片机AT89S52采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz—3kHz的波形。通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。 关键词:单片机AT89S52、DAC0832、液晶1602 Abstract: this system capitalize on AT89s52,it makes use of central processor to generate three kinds of waves, they are triangle wave, and use D/A conversion module, wave generate module and liquid crystal display of 1602, it can have the 1Hz-3KHz profile. In this system it can control wave form choosing, frequency, range,can have the sine wave, the square-wave, the triangular wave. Simultaneously may also take the frequency measurement frequency,and displays them through liquid crystal display of 1602.this design includes three modules. They are D/A conversion module, wave generate module and liquid crystal display of LED module. In this design, the wave generator into wave form module and D/A conversion module are discussed in detail. key word: AT89S52, DAC0832, liquid crystal 1602.

51单片机新手入门实例详解

51单片机新手入门实例详解 1.硬件和软件准备 实验系统:EL89C单片机学习开发系统一套 电脑:具有标准串口的台式机或笔记本电脑,如果没有串口也可购买一条USB转串口线代替 工具软件:Keil uVision2(用于编写和编译源程序、仿真调试); 光盘上非安装烧写软件,路径 \单片机EL89C\EL89C光盘\STC52单片机下载程序\\ (EL89C的编程控制烧写软件) 2.源程序编写和编译 EL89C的8个发光二极管负极通过限流电阻接入单片机的~端口,下面的范例程序可以使这8个发光二极管轮流点亮,形成流水灯效果。 我们使用的开发工具是Keil C51,是目前世界上最优秀、最强大的51单片机应用平台之一,它集编辑、编译、仿真调试于一体,支持汇编、C语言以及混合编程。同时具备功能强大的软件仿真和硬件仿真功能。 下面以一个简单的流水灯程序为例子来介绍Keil C51的使用方法: 2.1首先在硬盘上建立一个文件夹,命名为ledtest(当然可以是其他名字),为方便程序的编写 和调试,我们将调试过程中产生的文件都将放在这个目录中。 2.2启动Keil软件,点击菜单project,选择new project,然后选择你要保存的路径,输入工 程文件的名字,我们现在保存到刚才建立的ledtest目录中,工程文件命名为ledtest,然后点击保存。 2.3这时会弹出下面的对话框Select Device for Target,要求你为刚才的项目选择一个CPU。 我们选择Atmel的AT89C52,如图所示,选择AT89C52之后,右边一栏是对这个单片机的基本的说明,然后点击确定。

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

湘南学院 电子工程设计 题目:基于51单片机的函数信号发生器设计 学院(系):电子信息与电气工程学院 年级专业: 2013级电子信息科学与技术 学号: 201314110144 ,201314110106 学生姓名:周慧程迅 指导教师:王龙 2016年 4 月 1 日

课程设计任务书 学生姓名:程迅周慧 专业班级:电子信息科学与技术(一)班 指导教师:王龙 工作单位:电子信息与电气工程学院 题目:基于51单片机的函数信号发生器的设计 初始条件: 1. 运用所学的单片机原理与接口技术知识和数字电路知识; 2. 51单片机最小系统; 3. PC机及相关应用软件。 要求完成的主要任务: 系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,通过程序设计方法产生锯齿波、正弦波、三角波、矩形波四种波形,通过按键来控制四种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及频率值。 1.完成函数信号发生器的设计和调试。 2.撰写课程设计说明书,说明书使用A4打印纸计算机打印,用proteus等仿真软件绘制电子线路图纸。

基于51单片机的函数信号发生器的设计 摘要 本系统利用单片机STC89C52采用程序设计方法产生锯齿波、正弦波、三角波、矩形波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产0Hz—535Hz的波形。通过按键来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。 关键词:单片机STC89C52、DAC0832、液晶1602

信号发生器 (正弦波,方波,三角波)51单片机 C语言代码

/**************************************/ /* 信号发生器(正弦波,方波,三角波) */ /*************************************/ #include #include #define uchar unsigned char #define uint unsigned int sbit cs=P2^0; //tlc5615片选端口 sbit clk=P2^1; //tlc5615时钟线 sbit din=P2^2; //tlc5615传输端口 sbit key1=P1^0; sbit key2=P1^1; //按键的单片机接口 uchar keydat; uchar flag; //波形发生终止信号的标志位一旦被置零立马停止发信号

uchar flagsqu; //方波高低电平控制为(运用定时器1中断控制) uchar m,num; uchar dat=0xff; uchar code tosin[141]={ //正弦波的编码 0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16, 0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b, 0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45, 0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63, 0x66,0x69,0x6c,0x6f,0x70,0x71,0x72,0x73,0x74,0x75, 0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7e, 0x7f,0x80,0x7f,0x7e,0x7e,0x7d,0x7c,0x7b,0x7a,0x79, 0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x6f,0x6c,0x69, 0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c, 0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30, 0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a, 0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a, 0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01, 0x00};

相关文档
最新文档