基于51单片机汇编程序波形发生器实训报告
- 格式:wps
- 大小:137.50 KB
- 文档页数:11
51单片机实现波形发生器摘要这个系统是基于AT89C51单片机的波形信号发生器。
使用AT89C51单片机作为控制核心,该系统由数字/模拟转换电路(DAC0832)、运放电路(OP07)、按键电路和6位数码管等组成。
通过按键可控制方波、三角波、正弦波的产生,并且用数码管显示其对应的频率和波形的类型。
这个设计方法简单、性能良好,这个系统可在多种需要低频信号的场所使用,它具有良好的实用性。
关键词:AT89C51 数模转换电路数码管信号发生器1 总体方案设计本次设计的任务是设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形。
示意图如下:基本要求如下:(1)具有产生正弦波、方波周期性波形的功能;(2)输出波形的频率范围为100Hz~20kHz(非正弦波频率按10次谐波计算);重复频率可调,频率步进间隔≤100Hz;(3)输出波形幅度范围0~5V(峰-峰值),可按步进0.1V(峰-峰值)调整;(4)具有显示输出波形的类型、重复频率(周期)和幅度的功能。
1.1 方案论证方案一:采用单片函数发生器可产生正弦波、方波等,操作简单易行,用 D/A 转换器的输出来改变调节电压,可以实现数控调整频率,但产生信号的频率稳定度不高。
方案二:利用芯片组成的电路输出波形,MAX038是MAXIM公司生产的一个只需要很少外部元件的精密高频波形产生器,它能产生准确的高频正弦波、三角波、方波。
输出频率和占空比可以通过调整电流、电压或电阻来分别地控制。
所需的输出波形可由在A0和A1输入端设置适当的代码来选择,且具有输出频率范围宽、波形稳定、失真小、使用方便等特点。
方案三:采用Atmel公司的AT89C51单片机编程方法实现,该方案可以通过编程的方法控制信号波形的频率和幅度,而在硬件电路不便的情况下,通过程序实现频率的变化和输出波形的选择,并同时在显示器显示相应的结果。
方案一输出信号频率不够稳定;方案二成本高,程序复杂度高;方案三软硬件结合,硬件成本低,软件起点低,用汇编语言即可完成,优化型相对比较好,容易实现,且满足设计要求。
关于单片机实训报告万能【六篇】【篇1】单片机实训报告万能通过今次单片机实训,使我对单片机的认识有了更深刻的理解。
系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。
由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。
例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。
踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。
当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。
我相信其中的酸甜苦辣最终都会化为甜美的甘泉。
但在这次实训中同时使我对汇编语言有了更深的认识。
当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。
这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。
这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。
希望这次的经历能让我在以后学习中激励我继续进步。
【篇2】单片机实训报告万能通过这一个学期的单片机学习,我收获了很多关于单片机的知识,并且这些知识和日常的生活息息相关。
了解了一些简单程序的录入,LED显示器、键盘、和显示器的应用和原理。
LED显示器:LED显示器是由发光二管组成显示字段的器件。
通常的8段LED显示器是由8个发光二极管组成,LED显示器分共阳极和共阴极两种。
有段选码和和位选码。
当LED显示器每段的平均电流位5MA时,就有较满意的亮度,一般选择断码5-10MA 电流;位线的电流应选择40-80MA。
LED显示器的显示方式有动态和静态两种。
7289A芯片是具有SPI串行接口功能的显示键盘控制芯片,它可同时取得8位共阴极数码管和64个键的键盘矩阵。
目录第一章概述 (2)第二章设计任务 (3)第三章硬件设计 (3)3.1系统主体构造 (3)3.2硬件元件概述 (3)3.3硬件连接 (9)3.4硬件参数简介 (10)第四章软件设计 (10)4.1锯齿波程序设计 (11)4.2三角波程序设计 (12)4.3正弦波程序设计 (13)第五章系统功能描述和功能 (15)第六章设计心得 (16)第七章参考文献 (16)附录 (16)程序设计 (20)第一章概述课程设计是一项重要的实践性教育环节,是学生在完成本专业所有课程学习后必须接受的一项结合本专业方向的、系统的、综合的工程训练。
在教师指导下,运用工程的方法,通过一个较复杂课题的设计练习,可使学生通过综合的系统设计,熟悉设计过程、设计要求、完成的工作内容和具体的设计方法,掌握必须提交的各项工程文件。
课程设计的基本目的是:培养理论联系实际的设计思想,训练综合运用电路设计和有关先修课程的理论,结合生产实际分析和解决工程实际问题的能力,巩固,加深和扩展有关电子类方面的知识。
课程设计的主要任务是运用所学微控制器技术、微机原理等方面的知识,设计出一台以AT89C51为核心的单片机数据采集、通讯或测控系统,完成信息的采集、处理、输出及人机接口电路等部分的软、硬件设计。
多功能波形发生器设计课题需要充分灵活运用编程语言所提供的各种指令语句,巧妙利用软硬件实现以上所要求的功能,在程序逻辑设计上也要求正确,合理的对项目进行分解分块,合理的逻辑设计可以起到事半功倍的效果,是整个项目当中最富有创新性和挑战性的部分。
第二章设计任务本次设计要求采用单片机和DAC设计波形发生器,具体要求如下:(1)利用单片机和DAC0832产生三角波、正弦波等波形。
(2)完成DAC与运放的连接,输出可供示波器显示。
(3)用按键改变波型的种类,同时显示波形的代号,波形的幅值与频率。
第三章硬件设计3.1 系统主体构造芯片方面选用AT89C51与DAC0832为主要芯片,根据要求采用键盘选择产生的波形的类型,所以基本电路有键盘电路,数模转换电路。
目录1、课程设计目的 (1)2、课程设计题目和实现目标 (1)3、设计方案 (1)4、Proteus仿真原理图 (1)5、程序流程图 (1)6、程序代码 (1)7、调试总结 (1)8、设计心得体会 (1)9、参考文献 (1)1、课程设计目的《单片机原理及应用》课程设计是与《单片机原理及应用》课程相配套的实践教学环节。
《单片机原理及应用》是一门实践性很强的专业基础课,通过课程设计,达到进一步理解单片机的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。
培养大胆发明创造的设计理念,为今后就业打下良好的基础。
通过课程设计,掌握以下知识和技能:1.单片机应用系统的总体方案的设计;2.单片机应用系统的硬件设计;3.单片机应用系统的软件程序设计;4.单片机开发系统的应用和调试能力2、课程设计题目和实现目标本次课程设计的题目是;制作一个波形发生器,产生单极性、幅度可调、周期可调的方波、锯齿波、三角波、正弦波信号,不同波形用不同符号显示在一个LED上,用一个LCD显示幅值和频率。
本次课程设计的目标:设计一个波形发生器,带有四个按钮,分别是波形选择、增加频率、减少频率、调节幅度,并带有一个LCD和一个LED,LED用来显示波形的符号LCD 用来显示频率、幅值。
波形符号用1表示正弦波,2表示三角波,3表示方波,4表示锯齿波。
频率的调节幅度是10HZ,幅值调节幅度分别是0.2V,0.02V,0.3V,0.4V。
3、设计方案本次设计采用AT89C51及其外围扩展系统和PCF8591,软件方面主要是应用C语言设计程序。
系统以AT89C51为核心,配置相应的外设及接口电路,用Keil C及Proteus 等软件开发,用C语言编程,组成一个多功能信号发生器。
用户通过按键选择输出实验室中经常使用到的几种基本波形:方波、锯齿波、正弦波和三角波。
方波由AT89C51单片机将最大值和最小值输出给D/A进行转换,并由用户通过键盘选择波形周期。
基于51单片机的波形发生器的设计讲解波形发生器是电子设备中常见的一种电子设备,它可以产生各种不同形状的波形信号。
在这篇文章中,我们将会详细介绍基于51单片机的波形发生器的设计。
一、波形发生器的原理及分类波形发生器的原理是利用电子元件、电路以及控制信号源,将一定幅度的电压信号变化成为需要的各种形状的波形信号。
根据波形的形状分类,可以将波形发生器分为以下几种类型:1.正弦波发生器:产生正弦波信号的发生器,常用于音频设备中。
2.方波发生器:产生方波信号的发生器,常用于数字电路中,也可用于频率测量和脉冲调制等应用。
3.三角波发生器:产生三角波信号的发生器,常用于音频设备以及频率测试等领域。
4.锯齿波发生器:产生锯齿波信号的发生器,常用于音频设备、测试仪器以及数据采集和测量等领域。
二、基于51单片机的波形发生器设计下面我们将详细介绍基于51单片机的波形发生器的设计步骤。
1.硬件设计:在基于51单片机的波形发生器设计中,我们需要准备的硬件元件有:-51单片机控制芯片-芯片烧录器-液晶显示屏-按键开关-电源模块-杜邦线等电子连接线2.硬件连接:根据电路原理图进行将电子元件进行正确的电路连接。
其中,51单片机作为核心控制芯片,负责生成波形信号,液晶显示屏用于显示波形信号,按键开关用于控制波形发生器的启动、停止以及参数调整等操作。
3.软件设计:利用Keil C编译软件进行51单片机的软件设计,根据控制芯片的指令集编写相应的程序代码,实现以下几个功能:-波形信号的产生:根据选择的波形类型(正弦波、方波、三角波或锯齿波),利用特定的算法生成相应形状的波形信号。
-参数调节:通过按键开关控制波形的频率、幅度以及相位等参数的调节,使波形发生器能够产生不同特性的波形信号。
-波形信号显示:通过LCD显示屏将生成的波形信号进行实时显示,以方便观察和调试。
4.软硬件的调试与优化:三、波形发生器的应用1.音频设备:波形发生器可以生成不同频率的正弦波信号,用于音频信号的发生和测试等应用。
创新性实验研究报告实验项目名称_简易函数信号发生器四、实验内容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使之转换为电压输出。
最后通过示波器显示输出的波形。
数模转换模块运放模块整体硬件电路图五、实验结果与分析1、实验现象、数据记录仿真波形2、对实验现象、数据及观察结果的分析与讨论:经过观察调试,再观察,再调试,最终输出的波形较为理想。
此次试验经过一系列的调试,最终输出的波形为正弦波、方波、三角波。
基于51系列单片机的多功能波形发生器及特定波形幅值调节概述:随着科技的不断进步,波形发生器在各种测量、调试和实验中发挥着重要的作用。
本文将介绍一种基于51系列单片机的多功能波形发生器,并且可以对特定波形的幅值进行调节。
设计原理:本波形发生器采用51系列单片机作为核心控制器,并通过DAC芯片将数字信号转换为模拟信号输出。
通过LCD显示模块显示当前所选的波形类型和幅值,并通过按键来切换和调节相应的参数。
主要功能:1.多波形输出:本波形发生器可以输出多种波形,如正弦波、方波、三角波、锯齿波等。
用户可以通过按键选择所需的波形类型。
2.幅值调节:本波形发生器还可以根据用户的需求,对特定波形的幅值进行调节。
3.频率调节:用户可以通过按键来调节波形的频率,以满足不同的实验需求。
4.输出控制:用户可以通过按键选择启用或停用输出信号。
硬件设计:1.单片机控制电路:使用51系列单片机作为核心控制器,通过控制IO口的状态来实现波形选择和参数调节。
2.DAC芯片:将单片机输出的数字信号转换为模拟信号,实现波形的输出。
3.LCD显示模块:用于显示当前所选的波形类型和幅值。
4.按键模块:用于选择波形类型、调节幅值和频率等参数。
5.输出控制电路:通过控制开关,使得输出信号可以被启用或停用。
软件设计:1.系统初始化:包括设置IO口的状态、初始化LCD显示模块、初始化按键模块等。
2.波形选择:通过按键选择所需的波形类型,并将相应的参数传递给DAC芯片。
3.幅值调节:根据用户的需求,通过按键调节特定波形的幅值,并通过DAC芯片实现相应的调节。
4.频率调节:通过按键调节波形的频率,并通过定时器来实现相应的调节。
5.输出控制:根据用户选择的开关状态,控制输出信号的启用或停用。
总结:基于51系列单片机的多功能波形发生器及特定波形幅值调节是一种灵活、实用的设计方案。
它可以满足各种不同波形的输出需求,并且可以根据用户的需求对波形的幅值进行调节。
单片机课程设计报告东莞理工学院课程单片机课程设计题目多波形发生器院系电子工程学院专业班级2011级电子信息工程2班2013年6月27日目录第一部分1.1波形发生器的概述 (3)1.2 本设计任务 (3)第2 部分2.1本设计的意义 (4)2.2 设计要求 (4)2.3 设计原理 (4)2.4 硬件设计 (4)2.5 软件设计 (8)第三部分3.1 心得 (19)3.2参考文献 (19)第一部分1.1波形发生器的概述波形发生器:顾名思义,一个能产生各种波形的仪器。
波形发生器可通过以下方法产生:(1):利用模拟电路的运放电路,可以产生三角波、锯齿波、正弦波。
用数字电路的555电路可以产生方波。
这方法的电路元件数量不多,焊接简单,但不稳定难以调试,产生的波形也不理想。
(2):利用市面上可以购得的专用直接数字合成DDS芯片的波形发生器:能产生任意波形。
而且可以达到很高的频率,其他方法很难做到这一点,所产生的的波形频率不高。
但这方法成本高,而且课程设计用这些芯片就没意思了。
(3):用AT89c51单片机和DAC0832芯片,用轻触按键组成的键盘来控制波形的选择以及各种扩展功能。
P1口连接按键键盘,作为波形的选择和其他扩展功能的输入口。
P0口连上上拉电阻后,接上数码管,用来显示所选择波形的类型。
这方法较上面两种方法好。
调试主要通过编辑89c51的程序,而且89c51、DAC0832、LM339这几个芯片的价格不贵。
至于编程方面,锯齿波、三角波、正弦波这三种分段后呈单调性的波形,可以通过等差增减来实现。
但是经过Proteus 7 Professional仿真后,所产生的波形不理想。
所以通过手动的方法计算出输出各点的电压值,然后在编写程序时以数组的方式给出。
当需要时,只要按照顺序进行输出即可。
1.2 本设计任务设计要求:一、基本功能:1 、可产生多种波形,如正弦波、三角波、锯齿波、方波;2 、各种波形可通过按键选择;二、扩展功能:1 、可调节信号的频率、占空比等参数;2 、其他自行增加的功能;扩展部分:按键s5、s6分别是控制方波的占空比增、减;s7、s8分别是控制波形的频率增、减。
基于51单片机的波形发生器的设计汇总波形发生器是电子领域中常用的一种设备,用于产生各种不同形式的波形信号。
本文将基于51单片机的波形发生器的设计进行汇总。
设计思路如下:一、基本原理波形发生器的基本原理是通过控制数字信号的高低电平来产生不同的波形。
在这个设计中,我们将使用51单片机作为控制器来产生波形信号。
二、硬件部分1.时钟电路:使用一个晶体振荡器作为时钟源,提供稳定的时钟脉冲给51单片机。
2.电源电路:使用稳压电源提供稳定的电压给51单片机和其他电路。
3.单片机电路:将51单片机与其他电路进行连接,包括输入输出端口和相应的外部电路。
4.波形输出电路:根据需要产生不同的波形,设计相应的输出电路,包括滤波器、电阻、电容等元器件。
三、软件部分1.系统初始化:在系统上电后,进行相应的初始化工作,包括设置引脚功能、中断,设置计时器等。
2.波形生成算法:根据用户的选择,使用合适的算法生成相应的波形信号。
常见的波形有正弦波、方波、三角波等。
3.输出控制:根据生成的波形信号,通过设置相应的输出引脚,将波形信号输出到波形输出电路中。
4.用户界面:设计一个简单的用户界面,让用户可以选择不同的波形、调整频率、幅度等参数。
5.中断处理:使用中断功能来处理波形输出频率的控制,实现较高的输出稳定性。
四、设计考虑1.精度要求:根据具体应用场景,确定波形发生器的精度要求。
如果需要较高的精度,可能需要采用更复杂的算法和更精密的输出电路。
2.输出负载:考虑波形发生器的输出负载情况,选择合适的输出电路,以确保波形信号的准确性和稳定性。
3.电源稳定性:电源的稳定性对波形发生器的性能也有影响,需要注意电源供电的稳定性。
五、测试与优化完成波形发生器设计后,进行相应的测试与优化。
包括波形信号的频率、幅度等测试,以及对输出电路、算法等进行优化。
最后,通过以上的设计思路,我们可以完成基于51单片机的波形发生器的设计。
根据具体的应用需求,可能需要对硬件和软件进行相应的调整和优化。
以多种波形发生器为对象,选择单片机、独立按键及D/A转换器,设计相应的电路构成多种波形发生器。
功能要求:1.有4个功能键,分别用来选择输出:三角波、锯齿波、梯形拨、方波。
2.按下某个功能键,进入中断,在中断程序中查询、确定是哪个功能键,并输出对应的波形。
3.显示器2位,显示功能号01、02、03、04,代表输出三角波、锯齿波、梯形拨、方波。
设计任务:1、完成单片机最小系统电路设计。
2、完成按键电路设计。
3、完成D/A转换及接口电路的设计。
4、完成显示电路的设计。
电路图如下:(proteus 仿真通过)其一仿真图:源程序如下:ORG 0000HSTART: LJMP MAINORG 0003H ;外部中断入口LJMP INSER ;转到中断服务程序ORG 0030HMAIN: MOV DPTR,#7FFFH ;DAC0832地址SETB EX0 ;允许中断SETB IT0 ;负边沿触发方式SETB EA ;开中断HERE: JB 20H.0,ST ;锯齿波处理JB 20H.1,TRI ;三角波处理JB 20H.2,SQ ;方波处理JB 20H.3,TXB ;梯形波处理SJMP HERE ;等待中断INSER: JNB P1.0, LL1 ;中断服务程序,查询按键SJMP L1LL1: MOV 20H,#00HSETB 20H.0 ;设置锯齿波标志SJMP RTL1: JNB P1.2, LL2SJMP L2LL2: MOV 20H,#00HSETB 20H.1 ;设三角梯波标志SJMP RTL2: JNB P1.4, LL3SJMP L3LL3: MOV 20H,#00HSETB 20H.2 ;设置方波标志SJMP RTL3: JNB P1.6, LL4SJMP RTLL4: MOV 20H,#00HSETB 20H.3 ;设置梯形波标志RT: RETI ;中断返回ST: CLR P1.1 ;锯齿波CLR P1.3SETB P1.5CLR P1.7MOV A,#00HLOOPP: MOVX @DPTR,A ;启动D/A转换INC AJB 20H.0,LOOPP ;连续输出波形LJMP HERETRI: CLR P1.1 ;三角波CLR P1.3CLR P1.5SETB P1.7MOV A,#00HUP: MOVX @DPTR,A ;启动D/A转换INC A ;上升沿CJNE A,#0FFH,UPDOWN: MOVX @DPTR,A ;启动D/A转换DEC A ;下降沿CJNE A,#00H,DOWNJB 20H.1, UP ;连续输出波形LJMP HERESQ: CLR P1.1 ;方波SETB P1.3CLR P1.5CLR P1.7MOV A,#00HMOVX @DPTR,A ;DAC输出低电平ACALL DELAY ;延时1MOV A,#0FFHMOVX @DPTR,A ;DAC输出高电平ACALL DELAY ;延时2JB 20H.2, SQ ;连续输出波形LJMP HERETXB: CLR P1.1 ;梯形波CLR P1.3SETB P1.5SETB P1.7MOV A,#00HMOVX @DPTR,AACALL DELAYLOOP: MOVX @DPTR,AINC ACJNE A,#0FFH,LOOPACALL DELAYMOVX @DPTR,ALOOP1: DEC AMOVX @DPTR,ACJNE A,#00H,LOOP1MOVX @DPTR,AACALL DELAYJB 20H.3,LOOPDELAY: MOV R4,#0FH ;延时子程序LOOP11: MOV R5,#10HLOOP22: NOPNOPNOPDJNZ R5,LOOP22DJNZ R4,LOOP11RETEND。
单片机实训报告
(波形发生器)
一、设计方案
(1)、硬件基本设计思路
本设计方案采用8051单片机和
DAC0832将数字信号转化成模拟信
号,并通过LM324运算放大器将信
号进行处理,最终得到各种波形。
其中,波形的切换采用矩阵键盘通
过外部中断0来实现。
(2)、软件基本设计思路
首先,将基本波形通过程序进行
编写,并调试成功;其次,再编写
按键扫描子程序;最后,将按键程
序放入中断中,并进行整体调试,
直到调通为止。
(3)、程序说明
略
二、原理图
波形发生器原理图
三、程序
JUCHI EQU 50H
SANJI EQU 51H
FANGB EQU 52H
TIXIN EQU 53H
KU EQU 55H
ORG 0000H ;程序入口
AJMP MAIN ;指向主程序
ORG 0003H ;主程序入口地址
AJMP INTT0 ;指向按键中断程序
ORG 0030H ;中断程序入口地址
MAIN: ;主程序
MOV P2,#00H ;将P2口初始化为0
SETB EA ;开总中断
SETB EX0 ;开启外部中断0
SETB IT0 ;将外部中断0设置为下降沿有效
MOV DPTR,#00FFH ;设置输入寄存器地址
MOV JUCHI,#00H ;初始化
MOV SANJI,#00H
MOV FANGB,#00H
MOV TIXIN,#00H
;***************************************************
START:
MOV A,KU ;将键码送累加器A
CJNE A,#00H,W1 ;将累加器A和00H比较,如果相等,则00键按下
顺序执行,否则跳到W1再判断01键是否按下
MOV SANJI,#00H ;屏蔽其他波形
MOV FANGB,#00H
MOV TIXIN,#00H
AJMP JCB ;跳转到锯齿波形
W1: CJNE A,#01H,W2 ;判断01键是否按下
MOV JUCHI,#00H ;屏蔽其他波形
MOV FANGB,#00H
MOV TIXIN,#00H
AJMP SJB ;跳转到三角波形
W2: CJNE A,#02H,W3 ;判断02键是否按下
MOV TIXIN,#00H
MOV JUCHI,#00H ;屏蔽其他波形
MOV SANJI,#00H
AJMP FB ;跳转到方波
W3: CJNE A,#03H,W4 ;判断03键是否按下,没有按下,跳转回去继续循
环扫描
MOV JUCHI,#00H ;屏蔽其他波形
MOV SANJI,#00H
MOV FANGB,#00H
AJMP TXB ;跳转到梯形波
W4: AJMP START
;**********************************************
INTT0: ;中断程序
;***********键盘扫描子程序KEY*****************
KEY: ACALL KS ;调按键查询子程序,判断是否有键按下
JNZ K1 ;有键按下,转移 WEI1跳转
ACALL DELAY ;无键按下,调延时程序去抖
AJMP K4 ;继续查询按键
;***********键盘逐列扫描程序***********************************
K1: ACALL DELAY
ACALL KS ;再次判别是否有键按下
JNZ K2 ;有键按下,转移
AJMP K4
K2: MOV R3,#0FEH ;首列扫描字送R3
MOV R4,#00H ;首列号送R4
K3: MOV A,R3
MOV P2,A ;列扫描字送P2口
MOV P1,#0FFH ;初始化P1口
MOV A,P1 ;读取行扫描值
JB ACC.0,L1 ;第零行无键按下转查第一行为1跳转
MOV A,#00H ;第零行有键按下,行首键号送A
AJMP LK ;转求键号
L1: JB ACC.1,NEXT ;第一行无键按下,转查下一列
MOV A,#03H
AJMP LK ;键扫描结束,返回
;************************************************************
NEXT:
INC R4 ;修改列号
MOV A,R3
JNB ACC.2,KEY ;三列扫描完返回按键查询状态
RL A ;未扫描完,改为下列扫描字
MOV R3,A ;扫描字暂存R3
AJMP K3 ;转列扫描程序
LK: ADD A,R4 ;形成键码送A
MOV KU,A
PUSH ACC ;键码入栈保护
;**********************************************
K4:
ACALL KS ;等待键释放
JNZ K4
POP ACC ;键释放,弹栈送A
RETI ;中断返回
;**********按键查询子程序**************************************
KS: ;MOV A,#00H
MOV P2,#00H ;全扫描字送p2口
MOV P1,#0FFH
MOV A,P1 ;读入P1口状态
CPL A ;变正逻辑,高电平表示有键按下
ANL A,#0FH ;屏蔽高四位
RET ;子程序返回
;****************锯齿波***********************
JCB:
MOV A,JUCHI ;转换初值
WW: MOVX @DPTR,A ;D/A转换
INC A ;A自加1
NOP ;延时
CJNE A,#255,WW ;判断A是否加到255,若没有返回到WW继续加
MOV JUCHI,A
AJMP START
;******************三角波********************
SJB:
MOV A,SANJI ;转换初值
EE: MOVX @DPTR,A ;D/A转换
INC A
NOP
CJNE A,#255,EE
DEC A
QQ: MOVX @DPTR,A
DEC A
NOP
CJNE A,#00,QQ
MOV SANJI,A
AJMP START
;******************方波*********************
FB:
MOV A,FANGB
MOVX @DPTR,A
ACALL DELAY3
ACALL DELAY3
CPL A
MOVX @DPTR,A
ACALL DELAY3
ACALL DELAY3
MOV FANGB,A
POP ACC
AJMP START
;***************梯形波**********************
TXB:
MOV A,TIXIN
SS: MOVX @DPTR,A
INC A
ACALL DELAY3
CJNE A,#255,SS
ACALL DELAY3
ACALL DELAY3
DEC A
ZZ: MOVX @DPTR,A
DEC A
ACALL DELAY3
CJNE A,#00,ZZ
ACALL DELAY3
ACALL DELAY3
MOV TIXIN,A
AJMP START
;*******************************************************1ms
DELAY3: MOV R0,#7DH
DEL7: NOP
NOP
DJNZ R0,DEL7
RET
;*******************************************50毫秒延时子程序
DELAY2: MOV R0,#05
DEL5: MOV R1,#10
DEL4: MOV R2,7DH
DEL3: NOP
NOP
DJNZ R2,DEL3
DJNZ R1,DEL4
DJNZ R0,DEL5
RET
;******************************************
END
四、实训总结
通过两周的实训,我们对单片机有
了一个基本的认识和了解,我们学
到了怎样从一个设计课题入手去编
写相关程序,并通过硬件实现。