单片机课程设计-波形发生器_第1页
单片机课程设计-波形发生器_第2页
单片机课程设计-波形发生器_第3页
单片机课程设计-波形发生器_第4页
单片机课程设计-波形发生器_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

常州大学硬件实习报告第28页共28页目录TOC\o"1-4"\h\z\u1波形发生器概述 11.1波形发生器的背景 11.2波形发生器的发展状况 12设计要求 23硬件设计 33.1设计方案 33.1.1系统总框图 33.28255可编程通用并行接口芯片 43.3DAC0832芯片 63.4ADC0832芯片 73.551单片机原理………………….3.6硬件原理图设计……………….4软件设计 84.1软件框图设计…………………4.2源程序代码…………5系统调试及分析 175.1运行结果 175.2软件调试错误及处理 195.3硬件接线调试 196心得体会 19参考文献 19附录1 20 1.波形发生器概述1.1背景波形发生器也称函数发生器,作为实验信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件的搭接而成,且波形种类有限,多为锯齿波,正弦波,方波,三角波等波形。在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的信号波形发生器。随着集成电路的迅速发展,用集成电路可很方便地构成各种信号波形发生器。用集成电路实现的信号波形发生器与其它信号波形发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。1.2波形发生器的发展状况及应用波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。函数波形发生器具有连续的相位变换、和频率稳定性等优点,不仅可以模拟各种复杂信号,还可对频率、幅值、相移、波形进行动态、及时的控制,并能够与其它仪器进行通讯,组成自动测试系统,因此被广泛用于自动控制系统、震动激励、通讯和仪器仪表领域。在70年代前,信号发生器主要有两类:正弦波和脉冲波,而函数发生器介于两类之间,能够提供正弦波、余弦波、方波、三角波、上弦波等几种常用标准波形,产生其它波形时,需要采用较复杂的电路和机电结合的方法。这个时期的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复杂。同时,主要表现为两个突出问题,一是通过电位器的调节来实现输出频率的调节,因此很难将频率调到某一固定值;二是脉冲的占空比不可调节。在70年代后,微处理器的出现,可以利用处理器、A/D/和D/A,硬件和软件使波形发生器的功能扩大,产生更加复杂的波形。这时期的波形发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到各种简单的波形。90年代末,出现几种真正高性能、高价格的函数发生器、但是HP公司推出了型号为HP770S的信号模拟装置系统,它由HP8770A任意波形数字化和HP1776A波形发生软件组成。HP8770A实际上也只能产生8中波形,而且价格昂贵。不久以后,Analogic公司推出了型号为Data-2020的多波形合成器,Lecroy公司生产的型号为9100的任意波形发生器等。到了二十一世纪,随着集成电路技术的高速发展,出现了多种工作频率可过GHz的DDS芯片,同时也推动了函数波形发生器的发展,2003年,Agilent的产品33220A能够产生17种波形,最高频率可达到20M,2005年的产品N6030A能够产生高达500MHz的频率,采样的频率可达1.25GHz。由上面的产品可以看出,函数波形发生器发展很快近几年来,国际上波形发生器技术发展主要体现在以下几个方面:(1)过去由于频率很低应用的范围比较狭小,输出波形频率的提高,使得波形发生器能应用于越来越广的领域。波形发生器软件的开发正使波形数据的输入变得更加方便和容易。波形发生器通常允许用一系列的点、直线和固定的函数段把波形数据存入存储器。同时可以利用一种强有力的数学方程输入方式,复杂的波形可以由几个比较简单的公式复合成v=f(t)形式的波形方程的数学表达式产生。从而促进了函数波形发生器向任意波形发生器的发展,各种计算机语言的飞速发展也对任意波形发生器软件技术起到了推动作用。目前可以利用可视化编程语言(如VisualBasic,VisualC等等)编写任意波形发生器的软面板,这样允许从计算机显示屏上输入任意波形,来实现波形的输入。(2)与VXI资源结合。目前,波形发生器由独立的台式仪器和适用于个人计算机的插卡以及新近开发的VXI模块。由于VXI总线的逐渐成熟和对测量仪器的高要求,在很多领域需要使用VXI系统测量产生复杂的波形,VXI的系统资源提供了明显的优越性,但由于开发VXI模块的周期长,而且需要专门的VXI机箱的配套使用,使得波形发生器VXI模块仅限于航空、军事及国防等大型领域。在民用方面,VXI模块远远不如台式仪器更为方便。(3)随着信息技术蓬勃发展,台式仪器在走了一段下坡路之后,又重新繁荣起来。不过现在新的台式仪器的形态,和几年前的己有很大的不同。这些新一代台式仪器具有多种特性,可以执行多种功能。而且外形尺寸与价格,都比过去的类似产品减少了一半。早在1978年,由美国Wavetek公司和日本东亚电波工业公司公布了最高取样频率为5MHz,可以形成256点(存储长度)波形数据,垂直分辨率为8bit,主要用于振动、医疗、材料等领域的第一代高性能信号源,经过将近30年的发展,伴随着电子元器件、电路、及生产设备的高速化、高集成化,波形发生器的性能有了飞速的提高。变得操作越来越简单而输出波形的能力越来越强。波形操作方法的好坏,是由波形发生器控制软件质量保证的,编辑功能增加的越多,波形形成的操作性越好。2.设计要求2.1设计内容设计一个波形发生器,能产生三角波、方波、正弦波。用按键来选择波形输出(A按键输出三角波,B按键输出方波,C按键输出正弦波),调节电位器能改变输出波形的频率。并用四位LED显示,第1位显示目前输出什么波形,后3位显示频率值,即经A/D转换后得到的数字值。2.2设计目的1.了解波形发生器及键盘扫描的基本方法2.掌握软硬件的相互配合和相互作用的关系3.硬件设计3.1设计方案3.1.1系统总体框图:8255A8255A单片机键盘输入单片机键盘输入示波器DAC0832数码管显示 示波器DAC0832数码管显示ADC0809ADC0809 电位器 电位器系统框图使用51单片机来控制8255输入输出,键盘输入和七段数码管显示由8255控制,按A选择三角波代码为A,按B选择方波代码为B,按下C选择正弦波代码为C。通过软件程序来判断是哪种波形,由DAC0832产生波形。通过ADC0809,将模拟量转换成数字量,数字量可作为软件中的参数,通过电位器调节模拟量而改变数字量从而改变波形频率。波形的频率可以通过一系列的算法计算出显示在数码管上。3.28255芯片8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。1)与CPU连接部分根据定义,8255能并行传送8位数据,所以其数据线为8根D0~D7。由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。各信号的引脚编号如下:(1)数据总线DB:编号为D0~D7,用于8255与CPU传送8位数据。(2)地址总线AB:编号为A0~A1,用于选择A、B、C口与控制寄存器。(3)控制总线CB:片选信号、复位信号RST、写信号、读信号。当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。2)与外设接口部分根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。各通道的引脚编号如下:(1)A口:编号为PA0~PA7,用于8255向外设输入输出8位并行数据。(2)B口:编号为PB0~PB7,用于8255向外设输入输出8位并行数据。(3)C口:编号为PC0~PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。3)控制器8255将3个通道分为两组,即PA0~PA7与PC4~PC7组成A组,PB0~PB7与PC0~PC3组成B组。如图7.5所示,相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下:(1)A组控制器:控制A口与上C口的输入与输出。(2)B组控制器:控制B口与下C口的输入与输出。\o"查看图片"

8255管脚特性(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.(2)具有24个可编程设置的I/O口,即3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.引脚功能RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.RD:读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。方式0————基本输入输出方式;方式1————选通输入/出方式;方式2————双向选通输入/输出方式;PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。工作于三种方式中的任何一种;PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。不能工作于方式二;PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。'不能工作于方式一或二。A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A1=0,A0=0时,PA口被选择;当A1=0,A0=1时,PB口被选择;当A1=1,A0=0时,PC口被选择;当A1=1.A0=1时,控制寄存器被选择.3.3DAC0832芯片D0~D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);*ILE:数据锁存允许控制信号输入线,高电平有效;*CS:片选信号输入线(选通数据锁存器),低电平有效;*WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;*XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;*WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR2、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。*IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化;*IOUT2:电流输出端2,其值与IOUT1值之和为一常数;*Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;*Vcc:电源输入端,Vcc的范围为+5V~+15V;*VREF:基准电压输入线,VREF的范围为-10V~+10V;*AGND:模拟信号地DGND:数字信号地3.4ADC0809芯片ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片1.主要特性1)8路输入通道,8位A/D转换器,即分辨率为8位。2)具有转换起停控制端。3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW。2.内部结构ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。3.外部特性(引脚功能)ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。下面说明各引脚功能。IN0~IN7:8路模拟量输入端。2-1~2-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效。START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。ADC0809的工作过程首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。(1)定时传送方式对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。(2)查询方式A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。(3)中断方式把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。3.551单片机原理结构引脚功能MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照单片机引脚图:\o"查看图片"

8051引脚lP0.0~P0.7P0口8位双向口线(在引脚的39~32号端子)。lP1.0~P1.7P1口8位双向口线(在引脚的1~8号端子)。lP2.0~P2.7P2口8位双向口线(在引脚的21~28号端子)。lP3.0~P3.7P3口8位双向口线(在引脚的10~17号端子)。这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,初学者很难理解,这里都是按我自已的表达方式来写的,相信你也能够理解。四个I/O口:P0口有三个功能1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。P1口只做I/O口使用:其内部有上拉电阻。P2口有两个功能1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(EA/Vpp)3.6硬件原理图见附录单片机的P0口:双向三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个TTL负载..P2口:是8位准双向I/O口,在访问外部存储时,它可以作为高8位地址总线送出高8位地址.当P0口做地址总线的低8位时,需要通过一个74LS373进行锁存,再通过74LS138译码器进行译码输出来控制各个功能模块.CS8255接F228H,CS0809接F230H,CS0832接F218H.DAC0832模块用来产生波形,将数字量转换成模拟量输出,连接到示波器上.DI0到DI7接P0口,此时P0口作为数据总线直接与DI0到DI7相连接.ADC0809模块用于产生一个数字量来作延时参数,通过调节电位器来改变参数的值就可以改变时间,8255键盘扫描显示模块,用来显示波形代码以及波形周期.PB作输入口,PC和PA作输出口,PA口地址为F228H,PB口地址为F229H,PC口地址为F22AH.PB口用来判断是否有键按下.PC口与译码器相连,译码用来作位选,PA口用来作段选.4软件设计4.1系统软件框图设计开始开始8255初始化8255初始化NO扫描第二行NO扫描第二行有键按下有键按下YESYES判断键值 判断键值DA转换输出波形 DA转换输出波形主程序框图开始 开始DECADECA显示波形显示波形开启DA转换开启DA转换A=#00HA=#00HA压栈A压栈 开启DA转换开启DA转换开启AD转换开启AD转换查询P3.0等待转换完成查询P3.0等待转换完成A压栈A压栈 使用转换的值作延时参数 使用转换的值作延时参数开启AD转换开启AD转换扫描键盘判断扫描键盘判断查询P3.0等待转换完成查询P3.0等待转换完成A出栈A出栈扫描键盘判断扫描键盘判断Y有新的波形命令A出栈Y有新的波形命令A出栈 其他波形NO有新的波形输出命令其他波形NO有新的波形输出命令YYA等于#0A等于#0其他波形 其他波形NOY NOY计算显示频率计算显示频率INCAINCA 返回再次执行返回再次执行NOA等于#44HNOA等于#44H YY 三角波框图开始开始A=#255A=#255R2=#50HR2=#50H开启DA转换开启DA转换显示波形代码显示波形代码开启AD转换A=#0H开启AD转换A=#0H开启DA转换 开启DA转换查询P3.0等待转换完成查询P3.0等待转换完成开启AD转换开启AD转换使用转换量作延时参数使用转换量作延时参数查询P3.0等待转换完成查询P3.0等待转换完成判断键值判断键值使用转换的值作延时参数使用转换的值作延时参数有新的波形输出命令判断键值有新的波形输出命令判断键值 有新的波形输出命令有新的波形输出命令NONODECR2NO DECR2NOR2等于#25 R2等于#25NOR2等于0NNOR2等于0N Y YYY计算显示频率计算显示频率计算显示频率 计算显示频率 方波框图注:R2是用来记数,每产生25个方波测一次频率.开始开始开始开始显示波形代码显示波形代码压栈压栈R5=0R5=0频率算法设计频率算法设计 A=R5A=R5显示三位频率值显示三位频率值开启DA转换开启DA转换出栈出栈开启AD转换开启AD转换 返回返回查询P3.0等待转换完成查询P3.0等待转换完成 使用转换值作延时参数 频率计算使用转换值作延时参数 判断键值判断键值 有新的波形输出命令有新的波形输出命令YY其他波形其他波形N N查表操作查表操作 正弦波显示计算频率显示计算频率注:R5用来查表. 框图说明:主程序:先进行8255的初始化,然后扫描键盘第二行,判断是否有键值按下,若A按下,则输出三角波,B按下输出方波,C按下输出正弦波,在用DA转换产生波形的时候也需要不断的扫描键盘判断是否有新的按键,否则按键无法跳出.频率计算:波形的周期是根据AD转换输出的数字量与波形实际周期的关系得出的,需要用肉眼观察示波器上波形的周期,不难发现波形周期与数字量成线形关系,通过一系列的算法即可得到波形大致周期,有误差.再把周期显示在数码管上.三角波:波形先上升再下降,当三角波输出完一个周期时计算三角波的频率.方波:方波只有两个值,可以采用两个极端值0和FFH.每产生25个方波测量一次方波的频率.正弦波:可以利用查表来产生。查表法是事先将正弦波的数据计算出来,列表放在程序中,运行时直接调取数据。用公式y=127.5+127.5sin(360n/m)可计算出正弦波的输出值.每产生一个正弦波测量一次频率.4.2源代码C8255EQU0F22BH;8255命令口地址P8255AEQU0F228H;8255PA口地址P8255BEQU0F229H;8255PB口地址P8255CEQU0F22AH;8255PC口地址KEYVALEQU30H;读到的键码NUMS1EQU31HNUMS2EQU32HNUMS3EQU33HORG0000HSJMPSTARTORG0080HSTART:MOVSP,#60HLCALLDINGSHIMOVKEYVAL,#00H;显示初始值MOVDPTR,#C8255MOVA,#82H;PB口输入,PA,PC口输出MOVX@DPTR,AMOVDPTR,#P8255CMOVA,#00HMOVX@DPTR,AKB_DIS:LCALLRD_KB;读键子程序LCALLDISP;波形代码显示子程序LCALLWAVE;波形显示SJMPKB_DIS;循环扫描WAVE:CJNER6,#7CH,ZHENGXIANFANGBO:;方波发生器MOVR2,#50FANGBODI:MOVA,#0HMOVDPTR,#0F218HMOVX@DPTR,A SETBP3.0;初始化 MOVDPTR,#0F230H MOVX@DPTR,A;启动A_D JNBP3.0,$;等待EOC变高 JBP3.0,$;等待EOC变低 MOVDPH,#0F2H MOVXA,@DPTR;读A_D数据 MOVP1,A ;数据输出 MOVR1,AMOVR4,A DJNZR1,$ LCALL RD_KB;扫描键盘 LCALLDISPCJNER6,#7CH,ZHENGXIAN;判断键值CJNER2,#25,FANGBOGAOLCALLDISPFANGBO;显示频率FANGBOGAO:MOVDPTR,#0F218HMOVA,#255MOVX@DPTR,ASETBP3.0MOVDPTR,#0F230H MOVX@DPTR,A;启动A_D JNBP3.0,$;等待EOC变高 JBP3.0,$;等待EOC变低 MOVDPH,#0F2H MOVXA,@DPTR;读A_D数据 MOVP1,A ;数据输出 MOVR1,A MOVR4,A DJNZR1,$ LCALLRD_KB LCALLDISP CJNER6,#7CH,ZHENGXIANDJNZR2,FANGbodiLCALLDISPFANGBOSJMPFANGBOZHENGXIAN:CJNER6,#39H,SANJIAO;正弦波发生器MOVR5,#00HSIN:MOVA,R5MOVDPTR,#TABMOVCA,@A+DPTRMOVDPTR,#0F218HMOVX@DPTR,ASETBP3.0;初始化 MOVDPTR,#0F230H MOVX@DPTR,A;启动A_D JNBP3.0,$;等待EOC变高 JBP3.0,$;等待EOC变低 MOVDPH,#0F2H MOVXA,@DPTR;读A_D数据 MOVP1,A MOVR4,AMOVR1,ADJNZR1,$INCR5LCALLRD_KBLCALLDISPCJNER6,#39H,SANJIAOCJNER5,#128,CCLCALLDISPZHENGXIANCC:CJNER5,#0,DDLCALLDISPZHENGXIANDD:SJMPSINSANJIAO:CJNER6,#77H,NEXT1;三角波发生器MOVA,#0SJUP:MOVDPTR,#0F218HMOVX@DPTR,A;三角上升波形INCAPUSHACCSETBP3.0;初始化 MOVDPTR,#0F230H MOVX@DPTR,A;启动A_D JNBP3.0,$;等待EOC变高 JBP3.0,$;等待EOC变低 MOVDPH,#0F2H MOVXA,@DPTR;读A_D数据 MOVP1,A;数据输出MOVR4,A MOVR1,A DJNZR1,$LCALLRD_KBLCALLDISPPOPACC CJNER6,#77H,NEXT1CJNEA,#44H,SJUPLCALLDISPSANJIAO;显示频率SJDO:MOVDPTR,#0F218HMOVX@DPTR,A;三角下降波形DECAPUSHACCSETBP3.0;初始化MOVDPTR,#0F230H MOVX@DPTR,A;启动A_D JNBP3.0,$;等待EOC变高 JBP3.0,$;等待EOC变低 MOVDPH,#0F2H MOVXA,@DPTR;读A_D数据 MOVP1,A;数据输出MOVR4,A MOVR1,A DJNZR1,$ LCALLRD_KB LCALLDISP POPACC CJNER6,#77H,NEXT1CJNEA,#0H,SJDOLCALLDISPSANJIAOSJMPSANJIAONEXT1:RETDISPZHENGXIAN:;频率显示模块LCALLDINGSHIPUSHACCMOVA,R4;频率显示算法设计MOVB,#2DIVABMOVB,#5MULABADDA,#180MOVR0,AMOVA,BADDCA,#0MOVB,AMOVA,R0ANLA,#0FHMOVDPTR,#LEDSEGMOVCA,@A+DPTRMOVNUMS1,AMOVA,R4MOVB,#2DIVABMOVB,#5MULABADDCA,#180MOVR0,AMOVA,BADDCA,#0MOVB,AMOVA,R0SWAPAANLA,#0FHMOVDPTR,#LEDSEGMOVCA,@A+DPTRMOVNUMS2,AMOVA,R4MOVB,#2DIVABMOVB,#5MULABADDCA,#180MOVR0,AMOVA,BADDCA,#0MOVB,AMOVA,R0ANLB,#0FHMOVA,BMOVDPTR,#LEDSEGMOVCA,@A+DPTRMOVNUMS3,AMOVDPTR,#P8255CMOVA,#08HMOVX@DPTR,A;位选MOVDPTR,#P8255AMOVA,NUMS1MOVX@DPTR,A;段选LCALLDINGSHIMOVDPTR,#P8255CMOVA,#10HMOVX@DPTR,AMOVDPTR,#P8255AMOVA,NUMS2MOVX@DPTR,ALCALLDINGSHIMOVDPTR,#P8255CMOVA,#18HMOVX@DPTR,AMOVDPTR,#P8255AMOVA,NUMS3MOVX@DPTR,APOPACCRETDISPSANJIAO:LCALLDINGSHIPUSHACCMOVA,R4MOVB,#4DIVABMOVB,#5MULABADDA,#100MOVR0,AMOVA,BADDCA,#0MOVB,AMOVA,R0ANLA,#0FHMOVDPTR,#LEDSEGMOVCA,@A+DPTRMOVNUMS1,AMOVA,R4MOVB,#4DIVABMOVB,#5MULABADDCA,#100MOVR0,AMOVA,BADDCA,#0MOVB,AMOVA,R0SWAPAANLA,#0FHMOVDPTR,#LEDSEGMOVCA,@A+DPTRMOVNUMS2,AMOVA,R4MOVB,#4DIVABMOVB,#5MULABADDCA,#100MOVR0,AMOVA,BADDCA,#0MOVB,AMOVA,R0ANLB,#0FHMOVA,BMOVDPTR,#LEDSEGMOVCA,@A+DPTRMOVNUMS3,AMOVDPTR,#P8255CMOVA,#08HMOVX@DPTR,AMOVDPTR,#P8255AMOVA,NUMS1MOVX@DPTR,ALCALLDINGSHIMOVDPTR,#P8255CMOVA,#10HMOVX@DPTR,AMOVDPTR,#P8255AMOVA,NUMS2MOVX@DPTR,ALCALLDINGSHIMOVDPTR,#P8255CMOVA,#18HMOVX@DPTR,AMOVDPTR,#P8255AMOVA,NUMS3MOVX@DPTR,APOPACCRETDISPFANGBO:LCALLDINGSHIPUSHACCMOVA,R4MOVB,#5DIVABADDA,#12ANLA,#0FHMOVDPTR,#LEDSEGMOVCA,@A+DPTRMOVNUMS1,AMOVA,R4MOVB,#5DIVABADDA,#12SWAPAANLA,#0FHMOVDPTR,#LEDSEGMOVCA,@A+DPTRMOVNUMS2,AMOVDPTR,#P8255CMOVA,#08HMOVX@DPTR,AMOVDPTR,#P8255AMOVA,NUMS1MOVX@DPTR,ALCALLDINGSHIMOVDPTR,#P8255CMOVA,#10HMOVX@DPTR,AMOVDPTR,#P8255AMOVA,NUMS2MOVX@DPTR,ALCALLDINGSHIPOPACCRETDISP:MOVDPTR,#P8255A;显示键值MOVA,KEYVALMOVX@DPTR,ARETRD_KB:MOVA,#01H;扫描第二行MOVDPTR,#P8255CMOVX@DPTR,AMOVDPTR,#P8255BMOVXA,@DPTRCJNEA,#0FFH,J_KEYL0;判断是否有键按下,有键转J-KEYL0SJMPNOKEYJ_KEYL0:LCALLDINGSHI;延时消抖MOVDPTR,#P8255B;读键值MOVXA,@DPTRMOVR7,#08HCJNEA,#0FFH,KEYCAL;计算键值SJMPNOKEYKEYCAL:MOVR0,#08HSHIFT:RRCAJNCCALCINCR7DJNZR0,SHIFTCALC:MOVDPTR,#LEDSEG;换算显示码MOVA,R7MOVCA,@A+DPTRMOVKEYVAL,AMOVR6,ASJMPKEYWAITNOKEY:SJMPKEYEXITKEYWAIT:MOVDPTR,#P8255B;等待键释放MOVXA,@DPTRCJNEA,#0FFH,KEYWAITKEYEXIT:RETDINGSHI:MOVR0,#5;延时程序DINGSHI1:MOVR1,#27DJNZR1,$DJNZR0,DINGSHI1RETLEDSEG:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HTab:DB80H,83H,86H,89H,8DH,90H,93H,96H DB99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H DB0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H DB0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H DB0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH DB0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH DB0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H DB0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH DB0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH DB0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H DB0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H DB0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H DB96H,93H,90H,8DH,89H,86H,83H,80H DB80H,7CH,79H,78H,72H,6FH,6CH,69H DB66H,63H,60H,5DH,5AH,57H,55H,51H DB4EH,4CH,48H,45H,43H,40H,3DH,3AH DB38H,35H,33H,30H,2EH,2BH,29H,27H DB25H,22H,20H,1EH,1CH,1AH,18H,16H DB15H,13H,11H,10H,0EH,0DH,0BH,0AH DB09H,08H,07H,06H,05H,04H,03H,02H DB02H,01H,00H,00H,00H,00H,00H,00H DB00H,00H,00H,00H,00H,00H,01H,02H DB02H,03H,04H,05H,06H,07H,08H,09H DB0AH,0BH,0DH,0EH,10H,11H,13H,15H DB16H,18H,1AH,1CH,1EH,20H,22H,25H DB27H,29H,2BH,2EH,30H,33H,35H,38H DB3AH,3DH,40H,43H,45H,48H,4CH,4EH DB51H,55H,57H,5AH,5DH,60H,63H,66H DB69H,6CH,6FH,72H,76H,79H,7CH,80HEND5系统调试与分析5.1运行结果三角波方波 正弦波5.2软件调试错误分析错误1:按下ABC键之后不能得到相应的波形.原因分析:在选择按键输出波形的时候寄存器没有堆栈导致寄存器相混淆.错误2:按下一个键之后再按另一个键没有反应.原因分析:在软件产生波形的的时候没有扫描键盘而无法跳出波形产生的程序.5.3硬件连线CS8255接F228F218接CS0832F230接CS0809EOC接P3.0IN0接电位器示波器一端接地,一端接数模转换VOUT6心得体会这次单片机课程设计是我上大学以来第一次独立完成的设计,虽说设计的过程很是艰辛,但最终我还是坚持下来,并且完成了绝大多数的功能,我对自己的表现感到十分满意,这毕竟是少有的锻炼自己动手能力和思维能力的机会,虽然自己事情很多,但还是静下心来,完成了任务.首先拿到这个题目,我感觉不是很难,很多内容以前都学过,只要做下拼接即可.可真正做的时候,错误百出,波形怎么都调不出来,于是我请教了老师,在老师的指导下终于将波形调出.我觉得这个设计只要能把波形搞出,其他的就可以搞定.我在设计的过程中遇到的第二个麻烦事是数码管怎么都不亮,要么就是闪的太快,经过我多次调试,这个问题才得以解决.做课程设计要的不是结果,过程更为重要,主要还是设计的流程思路要清晰,这是以后走向工作岗位的基础.这次设计也给了我在硬件设计方面的信心.参考文献赵德安.单片机原理与应用第二版机械工业出版社2010年1月第2版第二次印刷何立民.单片机应用技术选编[M].张毅刚,彭喜圆,谭晓昀,曲春波.MCS-51单片机应用设计[M].哈尔滨工业大学出版社.康华光.电子技术基础[M].高等教育出版社.张洪润,易涛.单片机应用技术教程[M].清华大学出版社。基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于P

温馨提示

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

评论

0/150

提交评论