1、 目录第一章 概述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为关键芯片,依据要求采取键盘选择产生波形类型,所以基础电路有键盘电路,数模转换电路。整体框架图以下所表示:单片机锯齿波三角波正弦波0832 D/A转换运放 示波器3.2硬件元件概述此次设计所采取硬件资源关键有:3.2.1 AT89C51单片机其引脚图图所表示。图3.1 AT89C51引脚图芯片引脚描述以
4、下:1、主电源引脚VCC和VSSVCC(40脚)接+5V电压;VSS(20脚)接地。2、外接晶体引脚XTAL1和XTAL2XTAL1(19脚)接外部晶体一个引脚。在单片机内部,它是一个反相放大器输入端,这个放大器组成了片内振荡器。当采取外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。XTAL2(18脚)接外晶体另一端。在单片机内部,接至上述振荡器反相放大器输出端。采取外部振荡器时,对HMOS单片机,该引脚接外部振荡器信号,即把外部振荡器信号直接接到内部时钟发生器输入端;对XHMOS,此引脚应悬浮。3、控制或和其它电源复用引脚RST/VPD、ALE/PROG、
5、PSEN和EA/VPPRST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期高电平将使单片机复位。推荐在此引脚和VSS引脚之间连接一个约8.2k下拉电阻,和VCC引脚之间连接一个约10F电容,以确保可靠地复位。VCC掉电期间,此引脚可接上备用电源,以确保内部RAM数据不丢失。当VCC主电源下掉到低于要求电平,而VPD在其要求电压范围(50.5V)内,VPD就向内部RAM提供备用电源。ALE/PROG(30脚):当访问外部存贮器时,ALE(许可地址锁存)输出用于锁存地址低位字节。即使不访问外部存放器,ALE端仍以不变频率周期性地出现正脉冲信号,此频率为振荡器频率1/6。所以,它可用作对外
6、输出时钟,或用于定时目标。然而要注意是,每当访问外部数据存放器时,将跳过一个ALE脉冲。ALE端能够驱动(吸收或输出电流)8个LS型TTL输入电路。对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。PSEN(29脚):此脚输出是外部程序存放器读选通信号。在从外部程序存放器取指令(或常数)期间,每个机器周期两次PSEN有效。但在此期间,每当访问外部数据存放器时,这两次有效PSEN信号将不出现。PSEN一样能够驱动(吸收或输出)8个LS型TTL输入。EA/VPP(引脚):当EA端保持高电平时,访问内部程序存放器,但在PC(程序计数器)值超出0FFFH(对
7、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/
8、O口。因为这种接口输出没有高阻状态,输入也不能锁存,故不是真正双向I/O口。P1口能驱动(吸收或输出电流)4个LS型TTL负载。对8052、8032,P1.0引脚第二功效为T2定时/计数器外部输入,P1.1引脚第二功效为T2EX捕捉、重装触发,即T2外部控制端。对EPROM编程和程序验证时,它接收低8位地址。P2口(21脚至28脚):是准双向8位I/O口。在访问外部存放器时,它能够作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。P2能够驱动(吸收或输出电流)4个LS型TTL负载。P3口(10脚至17脚):是准双向8位I/O口,在MCS-51中,这8
9、个引脚还用于专门功效,是复用双功效口。P3能驱动(吸收或输出电流)4个LS型TTL负载。作为第一功效使用时,就作为一般I/O口用,功效和操作方法和P1口相同。作为第二功效使用时,各引脚定义如表所表示。值得强调是,P3口每一条引脚均可独立定义为第一功效输入输出或第二功效。第二功效描述以下:P3.0 10 RXD(串行输入口) P3.1 11 TXD(串行输出口) P3.2 12 INT0(外部中止0) P3.3 13 INT1(外部中止1) P3.4 14 T0(定时器0外部输入) P3.5 15 T1(定时器1外部输入) P3.6 16 WR(外部数据存放器写脉冲) P3.7 17 RD(外部
10、数据存放器读脉冲)3.2.2 D/A转换0832芯片 DAC0832是采样频率为八位D/A转换芯片,集成电路内有两级输入寄存器。DAC0832输出是电流,通常要求输出是电压,所以还必需经过一个外接运算放大器转换成电压。其芯片引脚图图所表示, DAC0832引脚图引脚功效以下:D0D7:数字信号输入端。ILE:输入寄存器许可,高电平有效。CS:片选信号,低电平有效。WR1:写信号1,低电平有效。XFER:传送控制信号,低电平有效。WR2:写信号2,低电平有效。IOUT1、IOUT2:DAC电流输出端。RFB:是集成在片内外接运放反馈电阻。 VREF:基准电压(-1010V)。VCC:是源电压(+
11、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控制产生正弦波
12、。分析DAC0832输出,U=(Vref/2n)*D,由此公式可知,输出波形幅度和Vref大小相关,所以我们经过控制Vref大小来改变波形幅度,以简化我们程序。3.3.3 复位电路和时钟电路该电路采取上电复位,利用电容充电来实现,即上电瞬间RST端电位和VCC相同,伴随充电电流降低,RST电位逐步下降。因为频率较大时,三角波、正弦波、方波中每一点延时时间为几微秒,故延时时间还要加上指令时间才能取得较大功率波形,该电路采取12MHZ晶振。原理图以下: 复位电路和时钟电路3.4硬件参数介绍AT89C51单片机采取12MHz时钟,VCC供电电源采取+5v,DAC0832工作电源采取+5v。第四章 软
13、件设计程序是本设计中关键。单片机功效和它程序有很大关系,本设计中,为实现输出三种波形,要使单片机定时向数模转换器发送数据,数据不一样将实现不一样波形输出。输出波形原理图以下:4.1 三角波程序设计三角波有上升和下降两条边,所以从00H发送到FFH应有相同间隔,选择每隔02H发送一次数据,即发送00H、02H、04HFEH、FEH04H、02H、00H,程序原理图以下:TRI: JNB P1.0,N3 JNB P1.2,N4 LJMP TTRIN3: MOV R7,#00H LJMP TC2N4: MOV R7,#02H LJMP TC2 ;判定其它键是否按下,从三角波转换到其它波形TTRI:
14、CJNE R7,#01H,TC2 MOV R0,#00HK20: MOV P0,R0 ;将P0数据送入数模转换器 MOV P2,#0FFH MOV A,P2 CPL A MOV R3,AL20: DEC R3 CJNE R3,#255,L20 ;经过P2口控制延时 INC R0 INC R0 ;R0内容加2 CJNE R0,#254,K20 ;实现将00H不停加2,然后送入数模转换器K21: MOV P0,R0 ;R0数据送入数模转换器 MOV P2,#0FFH MOV A,P2 CPL A MOV R3,AL21: DEC R3 CJNE R3,#255,L21 DEC R0 DEC R0
15、;R0内容减2 CJNE R0,#0,K21 ;实现将FEH不停减2,然后送入数模转换器 LJMP TRITC2: RET 4.2 正弦波程序设计正弦波和三角波类似,全部有上升和下降两条边,而且正弦波有正负极之分,所以它数据表比三角波复杂,其数据表见程序,程序原理以下:SIN: JNB P1.0,N5 JNB P1.1,N6 LJMP SSINN5: MOV R7,#00H LJMP TC3N6: MOV R7,#01H LJMP TC3 ;判定是否有其它键按下,并跳转到其它波形SSIN: CJNE R7,#02H,TC3 MOV R0,#00H K30: MOV A,R0 MOV DPTR,
16、#TAB ;将TAB地址送入DPTR MOVC A,A+DPTR ;从TAB中取出数据,放入A中 MOV P0,A ;将A中数据送入数模转换器 INC R0MOV P2,#0FFH MOV A,P2 CPL A MOV R3,AL30: DEC R3 CJNE R3,#255,L30 ;K2口控制延时 CJNE R0,#255,K30 LJMP SINTC3: RETTAB:DB 80H,82H,84H,86H,88H,8AH,8CH,8EH,90H,92H,94H,96H,98H,9AH,9CH,9EHDB0A0H,0A2H,0A4H,0A6H,0A8H,0AAH,0ABH,0ADH,0AF
17、H,0B1H, 0B2H,0B4H, 0B6H,0B7H,0B9H,0BAHDB0BCH,0BDH,0BFH,0C0H,0C1H,0C3H,0C4H,0C5H,0C6H,0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEHDB 0CEH,0CFH,0D0H,0D1H,0D1H,0D2H,0D2H,0D3H,0D3H,0D4H,0D4H,0D4H,0D4H,0D5H,0D5H,0D5HDB 0D5H,0D5H,0D5H,0D5H,0D4H,0D4H,0D4H,0D4H,0D3H,0D3H,0D2H,0D2H,0D1H,0D1H,0D0H,0CFHDB 0CEH,0CEH,0CDH
18、,0CCH,0CBH,0CAH,0C9H,0C8H,0C6H,0C5H,0C4H,0C3H,0C1H,0C0H,0BFH,0BDHDB 0BCH,0BAH,0B9H,0B7H,0B6H,0B4H,0B2H,0B1H,0AFH,0ADH,0ABH,0AAH,0A8H,0A6H,0A4H,0A2HDB 0A0H,9EH,9CH,9AH,98H,96H,94H,92H,90H,8EH,8CH,8AH,88H,86H,84H, 82HDB 80H,7DH,7BH,79H,77H,75H,73H,71H,6FH,6DH,6BH,69H,67H,65H,63H,61HDB 5FH,5DH,5BH,59H,
19、57H,55H,54H,52H,50H,4EH,4DH,4BH,49H,48H,46H,45HDB 43H,42H,40H,3FH,3EH,3CH,3BH,3AH,39H,37H,36H,35H,34H,33H,32H,31HDB 31H,30H,2FH,2EH,2EH,2DH,2DH,2CH,2CH,2BH,2BH,2BH,2BH,2AH,2AH, 2AHDB 2AH,2AH,2AH,2AH,2BH,2BH,2BH,2BH,2CH,2CH,2DH,2DH,2EH,2EH,2FH,30HDB 31H,31H,32H,33H,34H,35H,36H,37H,39H,3AH,3BH,3CH,3EH
20、,3FH,40H,42HDB 43H,45H,46H,48H,49H,4BH,4DH,4EH,50H,52H,54H,55H,57H,59H,5BH,5DHDB 5FH,61H,63H,65H,67H,69H,6BH,6DH,6FH,71H,73H,75H,77H,79H,7BH,7DHEND 第五章 系统功效描述和说明 DAC波形发生器采取AT89C51单片机于DAC0832连接,DAC0832输出模拟信号经过运算放大器放大,经过示波器显示波形。本发生器能够实现对输出波形类型,幅值人工控制。l 经过AT89C51P0口引出三个个按键选择对应输出波形:锯齿波,三角波,正弦波l 经过转动电位器旋
21、钮,改变输出波形幅值。l 经过P1口输出三个波形序号开启系统后,程序会等候用户按键选择波形,用户能够经过和P1.0,P1.1,P1.2三引脚相连按键,依次选择输出方波,三角波和正弦波。在输出波形同时,LED上会显示对应波形代号,经过旋转RV1电位器旋钮,改变波形幅值。第六章 设计心得这两周,在老师指导下和同学合作之下最终成功地完成了此次设计,经过此次课程设计,我们有了很多收获,同时也发觉了部分问题。经过此次课程设计,使我对单片机应用有了深刻了解,让我对单片机编程和和使用单片机处理实际问题能力有了很大提升。另外,此次设计小组组员各有分工又紧密联络,每个人全部重视分享、讨论,培养了团体意识。同时,
22、经过此次课程设计也让我发觉了部分问题。比如,对单片机基础知识掌握不好,是我在此次设计中数次出现问题;其次是对单片机仿真缺乏了解。 总而言之,经过这次课程设计使我对单片机语言了解和掌握上有了很大进步,以前所了解单片机语言仅限于部分片面知识,书本上内容假如不拿来实践一下话很快就会忘记,经过这次编程,将这些零零碎碎知识聚集起来,编写出了一个完整系统,而且对单片机语言应用能力有了极大提升,对于硬件接口问题也有了深刻了解。即使不是最好方案,但真实地得到锻炼。第七章 参考文件 新编单片机原理及应用 汪贵平 李登峰 龚贤武 雷旭 编著 机械工业出版社附录 硬件电路连接图波形发生器硬件设计图 DAC0832接
23、线方法 静态显示模块系统仿真效果图 锯齿波波仿真图三角波仿真图正弦波仿真程序设计ORG 0000H LJMP MAIN ORG 0100HMAIN: JNB P1.0,D1 ;判定K1 JNB P1.1,D2 ;判定K2 JNB P1.2,D3 ;判定K3 LJMP MAIN ;子程序跳转D1: MOV R7,#00H LCALL STW ;跳转到锯齿波波子程序 LJMP MAIND2: MOV R7,#01H LCALL TRI ;跳转到三角波子程序 LJMP MAIND3: MOV R7,#02H LCALL SIN ;跳转到正弦波子程序 LJMP MAIN ;锯齿波子程序STW: JNB
24、 P1.1,N1 JNB P1.2,N2 LJMP SSTWN1: MOV R7,#01H LJMP TC1N2: MOV R7,#02H LJMP TC1 ;判定其它键是否按下,从锯齿波波转换到其它波形SSTW: CJNE R7,#00H,TC1 MOV R0,#00H MOV P1,#1FHK00: MOV P0,R0 ;将P0数据送入数模转换器 CPL A MOV R3,AL00: DEC R3 CJNE R3,#255,L00 INC R0 INC R0 ;R0内容加2 CJNE R0,#254,K00 ;实现将00H不停加2,然后送入数模转换器 LJMP STWTC1: RET ;三
25、角波子程序TRI: JNB P1.0,N3 JNB P1.2,N4 LJMP TTRIN3: MOV R7,#00H LJMP TC2N4: MOV R7,#02H LJMP TC2 ;判定其它键是否按下,从三角波转换到其它波形TTRI: CJNE R7,#01H,TC2 MOV R0,#00HMOV P1,#2FHK20: MOV P0,R0 ;将P0数据送入数模转换器 MOV P2,#0FFH MOV A,P2 CPL A MOV R3,AL20: DEC R3 CJNE R3,#255,L20 ;经过P2口控制延时 INC R0 INC R0 ;R0内容加2 CJNE R0,#254,K
26、20 ;实现将00H不停加2,然后送入数模转换器K21: MOV P0,R0 ;R0数据送入数模转换器 MOV P2,#0FFH MOV A,P2 CPL A MOV R3,AL21: DEC R3 CJNE R3,#255,L21 DEC R0 DEC R0 ;R0内容减2 CJNE R0,#0,K21 ;实现将FEH不停减2,然后送入数模转换器 LJMP TRITC2: RET ;正弦波产生子程序SIN: JNB P1.0,N5 JNB P1.1,N6 LJMP SSINN5: MOV R7,#00H LJMP TC3N6: MOV R7,#01H LJMP TC3 ;判定是否有其它键按下
27、,以从正弦波跳转到其它波形SSIN: CJNE R7,#02H,TC3 MOV R0,#00H MOV P1,#3FHK30: MOV A,R0 MOV DPTR,#TAB ;将TAB地址送入DPTR MOVC A,A+DPTR ;从TAB中取出数据,放入A中 MOV P0,A ;将A中数据送入数模转换器 INC R0 MOV P2,#0FFH MOV A,P2 CPL A MOV R3,AL30: DEC R3 CJNE R3,#255,L30 ;K2口控制延时 CJNE R0,#255,K30 LJMP SINTC3: RETTAB: DB 80H,82H,84H,86H,88H,8AH,
28、8CH,8EH,90H,92H,94H,96H,98H,9AH,9CH,9EH DB 0A0H,0A2H,0A4H,0A6H,0A8H,0AAH,0ABH,0ADH,0AFH,0B1H, 0B2H,0B4H, 0B6H,0B7H,0B9H,0BAH DB 0BCH,0BDH,0BFH,0C0H,0C1H,0C3H,0C4H,0C5H,0C6H,0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH DB 0CEH,0CFH,0D0H,0D1H,0D1H,0D2H,0D2H,0D3H,0D3H,0D4H,0D4H,0D4H,0D4H,0D5H,0D5H,0D5H DB 0D5H,0
29、D5H,0D5H,0D5H,0D4H,0D4H,0D4H,0D4H,0D3H,0D3H,0D2H,0D2H,0D1H,0D1H,0D0H,0CFH DB 0CEH,0CEH,0CDH,0CCH,0CBH,0CAH,0C9H,0C8H,0C6H,0C5H,0C4H,0C3H,0C1H,0C0H,0BFH,0BDH DB 0BCH,0BAH,0B9H,0B7H,0B6H,0B4H,0B2H,0B1H,0AFH,0ADH,0ABH,0AAH,0A8H,0A6H,0A4H,0A2H DB 0A0H,9EH,9CH,9AH,98H,96H,94H,92H,90H,8EH,8CH,8AH,88H,86H,
30、84H, 82H DB 80H,7DH,7BH,79H,77H,75H,73H,71H,6FH,6DH,6BH,69H,67H,65H,63H,61H DB 5FH,5DH,5BH,59H,57H,55H,54H,52H,50H,4EH,4DH,4BH,49H,48H,46H,45H DB 43H,42H,40H,3FH,3EH,3CH,3BH,3AH,39H,37H,36H,35H,34H,33H,32H,31H DB 31H,30H,2FH,2EH,2EH,2DH,2DH,2CH,2CH,2BH,2BH,2BH,2BH,2AH,2AH, 2AH DB 2AH,2AH,2AH,2AH,2BH,2BH,2BH,2BH,2CH,2CH,2DH,2DH,2EH,2EH,2FH,30H DB 31H,31H,32H,33H,34H,35H,36H,37H,39H,3AH,3BH,3CH,3EH,3FH,40H,42H DB 43H,45H,46H,48H,49H,4BH,4DH,4EH,50H,52H,54H,55H,57H,59H,5BH,5DH DB 5FH,61H,63H,65H,67H,69H,6BH,6DH,6FH,71H,73H,75H,77H,79H,7BH,7DH END