易妖游戏网
您的当前位置:首页单片机及DSP课程设计报告 波形发生器

单片机及DSP课程设计报告 波形发生器

来源:易妖游戏网
单片机及DSP课程设计报告

专 业: 电子信息工程 班 级: 姓 名: 学 号: 指导教师: 时 间:2012-06-11~24

通信与电子工程学院

波形发生器

目 录

1.引言 3 2.设计目的 3 3.设计任务 3 4. 方案论证 3 5.原理框图 4

6.芯片介绍.........................................................................................4 7.程序流程图.....................................................................................6 8.算法及其分析 错误!未定义书签。

9.仿真结果叙述.................................................................................7 10.解决问题以及心得体会 8 11.参考文献 9

1.引言:

随着微电子技术和超大规模集成电路技术的发展,单片微型计算机以其体积小、行价比高、功能强、可靠性高等独有的特点,在各个领域(如工业控制、家电产品、汽车电子、通信、智能仪器仪表)得到了广泛的应用。波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。本次课程设计使

用的以ATC51 单片机为核心以及DAC0832构成的简易波形发生器,通过编写程序来产生锯齿波,具有线路简单、结构紧凑等优点。

2.设计目的

为了进一步巩固学习的理论知识,增强对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,对其进行测试与检查。

1、熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。

2、通过本设计,使学生综合运用《微型计算机技术》、《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。

3、学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。

4、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。

3.设计任务

用D/A完成锯齿波输出,用PROTEUS内带的示波器查看波形

4.方案论证

单片微型计算机简称为单片机,它是把组成微型计算机的各功能部件:处理器CPU、随机存取存贮器RAM、只读存贮器ROM、I/O接口电路,定时器/计数器以及串行通讯接口等部件制作在一块集成电路芯片中.构成一个完整的微型计算机。这样的集成电路称得起超大规模集成电路。因此可以说,单片微型计算机与大规模集成电路和超大规模集成电路的发展井驾齐驱。

由于在单片机中设置有只读存贮器,可用来存放控制单片机及外围设备进行工作的程序。于是从外部来看单片机成为一个的控制装置,可广泛用于实时控制、数据采集与处理等方而,因此单片机又称为微控制器。本设计课题采用的就是ATMEL的ATC51。

DAC0832是一个具有两个输入数据寄存器的8位DAC。目前生产的DAC芯片分为两类,一类芯片内部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。另一类芯片内部没有数据寄存器,输出信号随数据输入线的状态变化而变化,因此不能直接与微型计算机接口,必须通过并行接口与微型计算机接口。DAC0832是具有20条引线的双列直插式CMOS器件,它内部具有两级数据寄存器,完成8位电流D/A转换,故不需要外加电路。0832是电流输出型,示波器上显示波形,通常需要电压信号,电流信号到电压信号的转换可以由运算放大器实现。单片机向0832发送数字编码,产生不同的输出。先利用采样定理对各波形进行抽样,然后把各采样值进行编码,的到的数字量存入各个波形表,执行程序时通过查表方法依次

取出,经过D/A转换后输出就可以得到波形。

5.原理框图

6.芯片介绍

ATC51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。 管脚说明:

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘

故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为ATC51的一些特殊功能口,如下表所示: 口管脚 备选功能 RXD(串行输入口) TXD(串行输出口) /INT0(外部中断0) /INT1(外部中断1) T0(记时器0外部输入) T1(记时器1外部输入)

/WR(外部数据存储器写选通) /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

D/A转换器DAC0832 DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。 管脚说明:

DI0~DI7:数据输入线,TLL电平。

ILE:数据锁存允许控制信号输入线,高电平有效。 CS:片选信号输入线,低电平有效。 WR1:为输入寄存器的写选通信号。

XFER:数据传送控制信号输入线,低电平有效。 WR2:为DAC寄存器写选通输入线。

Iout1:电流输出线。当输入全为1时Iout1最大。 Iout2: 电流输出线。其值与Iout1之和为一常数。 Rfb:反馈信号输入线,芯片内部有反馈电阻。 Vcc:电源输入线 (+5v~+15v)

Vref:基准电压输入线 (-10v~+10v)

AGND:模拟地,摸拟信号和基准电源的参考地。

DGND:数字地,两种地线在基准电源处共地比较好。

7.程序流程图

8.算法及其分析

ORG 0000H LJMP START ORG 0030H START:

MOV DPTR,#0FEFFH ;启动D\\A转换

MOV A,#00H ;送初值OOH LOOP:

MOVX @DPTR,A ; INC A

LCALL DELAY

CJNE A,#0FFH,LOOP ;判断是否为FFH.不是则继续到LOOP,否则往下执行 SJMP LOOP

DELAY: ;延时程序 MOV R3,#11

MOV 31H,R3 D1:NOP NOP NOP NOP NOP NOP NOP NOP

DJNZ R3,D1 MOV R3,31H RET END

(1)程序每循环一次,A加1,因此实际上锯齿波的上升边是由小阶梯构成的,但由于阶梯很小,所以宏观上看就如图中所画的先行增长锯齿波。

(2)可通过循环程序段的机器周期数,计算出锯齿波的周期。并可根据需要,通过延时的方法来改变波形周期。若要改变锯齿波的频率,可在AJMP MM指令前加入延迟程序即可。延时较短时可用NOP指令实现(本程序就是如此),需要延时较长时,可以使用一个延长子程序。延迟时间不同,波形周期不同,锯齿波的斜率就不同。

(3)通过A加1,可得到正向的锯齿波,反之A减1可得到负向的锯齿波。

(4)如果程序中A的变化范围是0~255,就可以得到满幅度的锯齿波。如要求得到非满幅锯齿波,可通过计算求的数字量的处置和终值,然后在程序中通过置初值和终值的方法实现。

9.仿真结果及叙述

通过keil生成的.hex文件进行电路的仿真。在第一次仿真出现了波形显示器。但是后来却怎么都仿真不出来,以为是软件出现了问题,可是在别的同学的电脑上实验了一下发现还是显示不出结果。于是重新创建工程以及电路的仿真。经过几次的实践才发现原来是在显示出结果之后我的操作不是停止仿真,而是把波形显示器关掉了,所以再次打开的时候就不会出现仿真结果。

10.解决问题以及心得体会

开始的时候由于没有经验,不知如何下手,所以就在网上搜一些相关资料来看,尽管有许多的设计方案,可是总感觉自己还是有许多的东西弄不太清楚,于是就请教同学。他常做一些设计,有一些经验。经过他的解释分析各方案之后,再重新翻看单片机课本,决定采用以书上的例题格式的基本程序算法。这样可以降低一些选仿真元件的难度,初次设计应切合自己的水平。用8031需要扩展ROM,这样还要进行存储器扩展。而且现在8031实际中已经基本上不再使用,实际用的ATC51芯片有ROM,这样用起来比较方便。我感觉程序应该不大,片内ROM应该够用的。 我以为这些做好了,构思也有了,写程序应该是相对容易的,而且keil在以前也是有用过的。但是在Proteus仿真部分出现了问题。没有接触过这类软件,开始很多都不会,找元件都找不到,不知道名称。于是去实验室请教比较熟悉这方面的同学。在同学的帮助下,同时通过网上的相关资料的查询和学习 ,终于画出的电路图。通过keil生成的.hex文件,把程序和仿真电路联系起来,最终得出了想要的结果。 虽然这次仿真可能会存在一些小小的瑕疵,但是这是和同学讨论的最终结果。毕竟这次是我的第一个设计器件,尽管经历了不少的艰辛,但给我积累了一点设计的经验,最后也有点小小的成就感。后面的路还很长,我还得努力!

11.参考文献

[1] 童诗白,华成英.《模拟电子技术基础〔M〕》.北京:高等教育出版社,

[2] 潘永雄,沙河,刘向阳.《电子线路CAD实用教程〔M〕》.西安:西安电子科技大学出版社,.

[3] 张毅刚,彭喜源,谭晓昀,《曲春波.MCS-51单片机应用设计[M].》哈尔滨:哈尔滨工业大学出版社,.

[4]谢自美《电子线路设计•实验•测试》,华中科技大学出版社 [5] 余永权《单片机在控制系统中的应用》,电子工业出版社

[6] 孙玉德主编《MCS—51单片机原理及接口技术》,哈尔滨工业大学出版社

[7] 冯克编著《MCS—51单片机实用子程序及其应用实例》,黑龙江科学技术出版

教师评语: 教师: 日期: 设计过程30﹪ 课设报告40﹪ 答辩30﹪

总成绩

因篇幅问题不能全部显示,请点此查看更多更全内容