目录第一章概述………………………………………………………2第二章设计任务…………………………………………………3第三章硬件设计…………………………………………………33.1系统主体构造……………………………………………33.2硬件元件概述……………………………………………33.3硬件连接…………………………………………………93.4硬件参数简介……………………………………………10第四章软件设计…………………………………………………104.1锯齿波程序设计…………………………………………114.2三角波程序设计…………………………………………124.3正弦波程序设计…………………………………………13第五章系统功能描述和功能……………………………………15第六章设计心得…………………………………………………16第七章参考文献…………………………………………………16附录…………………………………………………………………16程序设计………………………………………………………20单片机课程设计2第一章概述课程设计是一项重要的实践性教育环节,是学生在完成本专业所有课程学习后必须接受的一项结合本专业方向的、系统的、综合的工程训练。在教师指导下,运用工程的方法,通过一个较复杂课题的设计练习,可使学生通过综合的系统设计,熟悉设计过程、设计要求、完成的工作内容和具体的设计方法,掌握必须提交的各项工程文件。课程设计的基本目的是:培养理论联系实际的设计思想,训练综合运用电路设计和有关先修课程的理论,结合生产实际分析和解决工程实际问题的能力,巩固,加深和扩展有关电子类方面的知识。课程设计的主要任务是运用所学微控制器技术、微机原理等方面的知识,设计出一台以AT89C51为核心的单片机数据采集、通讯或测控系统,完成信息的采集、处理、输出及人机接口电路等部分的软、硬件设计。多功能波形发生器设计课题需要充分灵活运用编程语言所提供的各种指令语句,巧妙利用软硬件实现以上所要求的功能,在程序逻辑设计上也要求正确,合理的对项目进行分解分块,合理的逻辑设计可以起到事半功倍的效果,是整个项目当中最富有创新性和挑战性的部分。单片机课程设计3第二章设计任务本次设计要求采用单片机和DAC设计波形发生器,具体要求如下:(1)利用单片机和DAC0832产生三角波、正弦波等波形。(2)完成DAC与运放的连接,输出可供示波器显示。(3)用按键改变波型的种类,同时显示波形的代号,波形的幅值与频率。第三章硬件设计3.1系统主体构造芯片方面选用AT89C51与DAC0832为主要芯片,根据要求采用键盘选择产生的波形的类型,所以基本电路有键盘电路,数模转换电路。整体框架图如下所示:3.2硬件元件概述单片机锯齿波三角波正弦波0832D/A转换运放示波器单片机课程设计4本次设计所采用的硬件资源主要有:3.2.1AT89C51单片机其引脚图如图所示。D0D1D2D3D4D5D6D7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51PROGRAM=Text3.HEX图3.1AT89C51引脚图芯片的引脚描述如下:1、主电源引脚VCC和VSSVCC——(40脚)接+5V电压;VSS——(20脚)接地。2、外接晶体引脚XTAL1和XTAL2XTAL1(19脚)接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。XTAL2(18脚)接外晶体的另一端。在单片机内部,接至上述振荡单片机课程设计5器的反相放大器的输出端。采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮。3、控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP①RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源。②ALE/PROG(30脚):当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。③PSEN(29脚):此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN单片机课程设计6有效。但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。④EA/VPP(引脚):当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)。4、输入/输出(I/O)引脚P0、P1、P2、P3(共32根)①P0口(39脚至32脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。②P1口(1脚至8脚):是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P1口能驱动(吸收或输出电流)4个LS型的TTL负载。对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它接收低8位地址。③P2口(21脚至28脚):是准双向8位I/O口。在访问外部存储器单片机课程设计7时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。P2可以驱动(吸收或输出电流)4个LS型的TTL负载。④P3口(10脚至17脚):是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流)4个LS型的TTL负载。作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。作为第二功能使用时,各引脚的定义如表所示。值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。第二功能描述如下:P3.010RXD(串行输入口)P3.111TXD(串行输出口)P3.212INT0(外部中断0)P3.313INT1(外部中断1)P3.414T0(定时器0外部输入)P3.515T1(定时器1外部输入)P3.616WR(外部数据存储器写脉冲)P3.717RD(外部数据存储器读脉冲)3.2.2D/A转换0832芯片单片机课程设计8DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器。DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。其芯片引脚图如图所示,DAC0832引脚图引脚功能如下:D0~D7:数字信号输入端。ILE:输入寄存器允许,高电平有效。CS:片选信号,低电平有效。WR1:写信号1,低电平有效。XFER:传送控制信号,低电平有效。WR2:写信号2,低电平有效。IOUT1、IOUT2:DAC电流输出端。RFB:是集成在片内的外接运放的反馈电阻。VREF:基准电压(-10~10V)。单片机课程设计9VCC:是源电压(+5~+15V)。AGND:模拟地NGND:数字地,可与AGND接在一起使用。3.3硬件连接3.3.1数模转换电路数模转换电路采用的是DAC0832芯片。它是一种使用较多的8位D/A转换器,其转换时间1us,工作电压为+5V到+15V,基准电压-10V到+10V。由于其内部有两个8位寄存器和一个8位D/A转换器,故可进行两级缓冲操作,使操作有很大的灵活性,本设计采用单缓冲方式。DAC0832与AT89C51的连接。单片机P0口与数模转换器的数据口连接,为保证单片机P0口的驱动能力,在P0口加上上拉电阻。3.3.2键盘电路键盘电路是控制部分。通过K1控制产生方波,K2控制产生三角波,K3控制产生正弦波。分析DAC0832的输出,U=(Vref/2n)*D,由此公式可知,输出波形的幅度与Vref的大小有关,所以我们通过控制Vref的大小来改变波形的幅度,以简化我们的程序。3.3.3复位电路与时钟电路该电路采用上电复位,利用电容充电来实现的,即上电瞬间RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。由于频率较大时,三角波、正弦波、方波中每一点延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的功率波形,该电路采用单片机课程设计1012MHZ晶振。原理图如下:复位电路与时钟电路3.4硬件参数简介AT89C51单片机采用12MHz时钟,VCC供电电源采用+5v,DAC0832工作电源采用+5v。第四章软件设计程序是本设计中的重点。单片机的功能与它的程序有很大关系,本设计中,为实现输出三种波形,要使单片机定时向数模转换器发送数据,数据的不同将实现不同的波形输出。输出波形原理图如下:单片机课程设计114.1三角波程序设计三角波有上升与下降两条边,所以从00H发送到FFH应有相同的间隔,选择每隔02H发送一次数据,即发送00H、02H、04H…FEH、FEH…04H、02H、00H,程序原理图如下:TRI:JNBP1.0,N3JNBP1.2,N4LJMPTTRIN3:MOVR7,#00HLJMPTC2N4:MOVR7,#02HLJMPTC2;判断其他键是否按下,从三角波转换到其他波形TTRI:CJNER7,#01H,TC2MOVR0,#00HK20:MOVP0,R0;将P0的数据送入数模转换器MOVP2,#0FFHMOVA,P2CPLA单片机课程设计12MOVR3,AL20:DECR3CJNER3,#255,L20;通过P2口控制延时INCR0INCR0;R0内容加2CJNER0,#254,K20;实现将00H不断加2,然后送入数模转换器K21:MOVP0,R0;R0的数据送入数模转换器MOVP2,#0FFHMOVA,P2CPLAMOVR3,AL21:DECR3CJNER3,#255,L21DECR0DECR0;R0内容减2CJNER0,#0,K21;实现将