单片机课程设计报告.docx

上传人:b****7 文档编号:11436387 上传时间:2023-03-01 格式:DOCX 页数:24 大小:677.51KB
下载 相关 举报
单片机课程设计报告.docx_第1页
第1页 / 共24页
单片机课程设计报告.docx_第2页
第2页 / 共24页
单片机课程设计报告.docx_第3页
第3页 / 共24页
单片机课程设计报告.docx_第4页
第4页 / 共24页
单片机课程设计报告.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告.docx

《单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告.docx(24页珍藏版)》请在冰豆网上搜索。

单片机课程设计报告.docx

单片机课程设计报告

目录

第一章概述………………………………………………………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为主要芯片,根据要求采用键盘选择产生的波形的类型,所以基本电路有键盘电路,数模转换电路。

整体框架图如下所示:

3.2硬件元件概述

本次设计所采用的硬件资源主要有:

3.2.1AT89C51单片机

其引脚图如图所示。

图3.1AT89C51引脚图

芯片的引脚描述如下:

1、主电源引脚VCC和VSS

VCC——(40脚)接+5V电压;

VSS——(20脚)接地。

2、外接晶体引脚XTAL1和XTAL2

XTAL1(19脚)接外部晶体的一个引脚。

在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。

当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。

XTAL2(18脚)接外晶体的另一端。

在单片机内部,接至上述振荡器的反相放大器的输出端。

采用外部振荡器时,对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有效。

但在此期间,每当访问外部数据存储器时,这两次有效的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口。

在访问外部存储器时,它可以作为扩展电路高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芯片

DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器。

DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。

其芯片引脚图如图所示,

DAC0832引脚图

引脚功能如下:

D0~D7:

数字信号输入端。

ILE:

输入寄存器允许,高电平有效。

CS:

片选信号,低电平有效。

WR1:

写信号1,低电平有效。

XFER:

传送控制信号,低电平有效。

WR2:

写信号2,低电平有效。

IOUT1、IOUT2:

DAC电流输出端。

RFB:

是集成在片内的外接运放的反馈电阻。

VREF:

基准电压(-10~10V)。

VCC:

是源电压(+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的电位逐渐下降。

由于频率较大时,三角波、正弦波、方波中每一点延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的功率波形,该电路采用12MHZ晶振。

原理图如下:

复位电路与时钟电路

3.4硬件参数简介

AT89C51单片机采用12MHz时钟,VCC供电电源采用+5v,DAC0832工作电源采用+5v。

 

第四章软件设计

程序是本设计中的重点。

单片机的功能与它的程序有很大关系,本设计中,为实现输出三种波形,要使单片机定时向数模转换器发送数据,数据的不同将实现不同的波形输出。

输出波形原理图如下:

4.1锯齿波程序设计

锯齿波有一条上升边,所以从00H发送到FFH应有相同的间隔,每隔02H发送一次数据,即发送00H、02H、04H…FEH

STW:

JNBP1.1,N1

JNBP1.2,N2

LJMPSSTW

N1:

MOVR7,#01H

LJMPTC1

N2:

MOVR7,#02H

LJMPTC1;判断其他键是否按下,从锯齿波波转换到其他波形

SSTW:

CJNER7,#00H,TC1

MOVR0,#00H

MOVP1,#1FH

K00:

MOVP0,R0;将P0的数据送入数模转换器

MOVP2,#0FFH

MOVA,P2

CPLA

MOVR3,A

L00:

DECR3

CJNER3,#255,L00

INCR0

INCR0;R0内容加2

CJNER0,#254,K00;实现将00H不断加2,然后送入数模转换器

LJMPSTW

TC1:

RET

4.2三角波程序设计

三角波有上升与下降两条边,所以从00H发送到FFH应有相同的间隔,选择每隔02H发送一次数据,即发送00H、02H、04H…FEH、FEH…04H、02H、00H,程序原理图如下:

TRI:

JNBP1.0,N3

JNBP1.2,N4

LJMPTTRI

N3:

MOVR7,#00H

LJMPTC2

N4:

MOVR7,#02H

LJMPTC2;判断其他键是否按下,从三角波转换到其他波形

TTRI:

CJNER7,#01H,TC2

MOVR0,#00H

K20:

MOVP0,R0;将P0的数据送入数模转换器

MOVP2,#0FFH

MOVA,P2

CPLA

MOVR3,A

L20:

DECR3

CJNER3,#255,L20;通过P2口控制延时

INCR0

INCR0;R0内容加2

CJNER0,#254,K20;实现将00H不断加2,然后送入数模转换器

K21:

MOVP0,R0;R0的数据送入数模转换器

MOVP2,#0FFH

MOVA,P2

CPLA

MOVR3,A

L21:

DECR3

CJNER3,#255,L21

DECR0

DECR0;R0内容减2

CJNER0,#0,K21;实现将FEH不断减2,然后送入数模转换器

LJMPTRI

TC2:

RET

4.3正弦波程序设计

正弦波和三角波类似,都有上升与下降两条边,而且正弦波有正负极之分,所以它的数据表比三角波的复杂,其数据表见程序,程序原理如下:

SIN:

JNBP1.0,N5

JNBP1.1,N6

LJMPSSIN

N5:

MOVR7,#00H

LJMPTC3

N6:

MOVR7,#01H

LJMPTC3;判断是否有其他键按下,并跳转到其他波形

SSIN:

CJNER7,#02H,TC3

MOVR0,#00H

K30:

MOVA,R0

MOVDPTR,#TAB;将TAB的地址送入DPTR

MOVCA,@A+DPTR;从TAB中取出数据,放入A中

MOVP0,A;将A中数据送入数模转换器

INCR0

MOVP2,#0FFH

MOVA,P2

CPLA

MOVR3,A

L30:

DECR3

CJNER3,#255,L30;K2口控制延时

CJNER0,#255,K30

LJMPSIN

TC3:

RET

TAB:

DB

80H,82H,84H,86H,88H,8AH,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

DB0CEH,0CFH,0D0H,0D1H,0D1H,0D2H,0D2H,0D3H,0D3H,0D4H,0D4H,0D4H,0D4H,0D5H,0D5H,0D5H

DB0D5H,0D5H,0D5H,0D5H,0D4H,0D4H,0D4H,0D4H,0D3H,0D3H,0D2H,0D2H,0D1H,0D1H,0D0H,0CFH

DB0CEH,0CEH,0CDH,0CCH,0CBH,0CAH,0C9H,0C8H,0C6H,0C5H,0C4H,0C3H,0C1H,0C0H,0BFH,0BDH

DB0BCH,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,84H,82H

DB

80H,7DH,7BH,79H,77H,75H,73H,71H,6FH,6DH,6BH,69H,67H,65H,63H,61H

DB5FH,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

DB2AH,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

 

第五章系统功能描述和说明

DAC波形发生器采用AT89C51单片机于DAC0832连接,DAC0832输出的模拟信号经过运算放大器放大,通过示波器显示波形。

本发生器可以实现对输出波形类型,幅值的人工控制。

●通过AT89C51的P0口引出的三个个按键选择相应的输出波形:

锯齿波,三角波,正弦波

●通过转动电位器的旋钮,改变输出波形的幅值。

●通过P1口输出三个波形的序号

启动系统后,程序会等待用户按键选择波形,用户可以通过与P1.0,P1.1,P1.2三引脚相连的按键,依次选择输出方波,三角波和正弦波。

在输出波形的同时,LED上会显示相应的波形代号,通过旋转RV1电位器旋钮,改变波形幅值。

 

第六章设计心得

 

这两周,在老师的指导下和同学合作之下最终成功地完成了此次设计,通过本次课程设计,我们有了很多收获,同时也发现了一些问题。

通过本次课程设计,使我对单片机的应用有了深刻的了解,让我对单片机编程和和使用单片机解决实际问题的能力有了很大的提高。

另外,本次设计小组成员各有分工又紧密联系,每个人都注重分享、讨论,培养了团队意识。

同时,通过本次课程设计也让我发现了一些问题。

例如,对单片机基础知识掌握的不好,是我在本次设计中多次出现问题;其次是对单片机的仿真缺乏了解。

总之,通过这次课程设计使我对单片机语言的理解和掌握上有了很大的进步,以前所了解的单片机语言仅限于一些片面的知识,课本上的内容如果不拿来实践一下的话很快就会忘记,通过这次编程,将这些零零碎碎的知识汇集起来,编写出了一个完整的系统,并且对单片机语言的应用能力有了极大的提高,对于硬件接口的问题也有了深刻的了解。

虽然不是最好的方案,但真实地得到锻炼。

第七章参考文献

《新编单片机原理及应用》汪贵平李登峰龚贤武雷旭编著机械工业出版社

 

附录

硬件电路连接图

波形发生器硬件设计图

DAC0832的接线方式

 

静态显示模块

 

系统仿真效果图

锯齿波波仿真图

三角波仿真图

正弦波仿真

程序设计

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

JNBP1.0,D1;判断K1

JNBP1.1,D2;判断K2

JNBP1.2,D3;判断K3

LJMPMAIN;子程序跳转

D1:

MOVR7,#00H

LCALLSTW;跳转到锯齿波波子程序

LJMPMAIN

D2:

MOVR7,#01H

LCALLTRI;跳转到三角波子程序

LJMPMAIN

D3:

MOVR7,#02H

LCALLSIN;跳转到正弦波子程序

LJMPMAIN

;锯齿波子程序

STW:

JNBP1.1,N1

JNBP1.2,N2

LJMPSSTW

N1:

MOVR7,#01H

LJMPTC1

N2:

MOVR7,#02H

LJMPTC1;判断其他键是否按下,从锯齿波波转换到其他波形

SSTW:

CJNER7,#00H,TC1

MOVR0,#00H

MOVP1,#1FH

K00:

MOVP0,R0;将P0的数据送入数模转换器

CPLA

MOVR3,A

L00:

DECR3

CJNER3,#255,L00

INCR0

INCR0;R0内容加2

CJNER0,#254,K00;实现将00H不断加2,然后送入数模转换器

LJMPSTW

TC1:

RET

;三角波子程序

TRI:

JNBP1.0,N3

JNBP1.2,N4

LJMPTTRI

N3:

MOVR7,#00H

LJMPTC2

N4:

MOVR7,#02H

LJMPTC2;判断其他键是否按下,从三角波转换到其他波形

TTRI:

CJNER7,#01H,TC2

MOVR0,#00H

MOVP1,#2FH

K20:

MOVP0,R0;将P0的数据送入数模转换器

MOVP2,#0FFH

MOVA,P2

CPLA

MOVR3,A

L20:

DECR3

CJNER3,#255,L20;通过P2口控制延时

INCR0

INCR0;R0内容加2

CJNER0,#254,K20;实现将00H不断加2,然后送入数模转换器

K21:

MOVP0,R0;R0的数据送入数模转换器

MOVP2,#0FFH

MOVA,P2

CPLA

MOVR3,A

L21:

DECR3

CJNER3,#255,L21

DECR0

DECR0;R0内容减2

CJNER0,#0,K21;实现将FEH不断减2,然后送入数模转换器

LJMPTRI

TC2:

RET

;正弦波产生子程序

SIN:

JNBP1.0,N5

JNBP1.1,N6

LJMPSSIN

N5:

MOVR7,#00H

LJMPTC3

N6:

MOVR7,#01H

LJMPTC3;判断是否有其他键按下,以从正弦波跳转到其他波形

SSIN:

CJNER7,#02H,TC3

MOVR0,#00H

MOVP1,#3FH

K30:

MOVA,R0

MOVDPTR,#TAB;将TAB的地址送入DPTR

MOVCA,@A+DPTR;从TAB中取出数据,放入A中

MOVP0,A;将A中数据送入数模转换器

INCR0

MOVP2,#0FFH

MOVA,P2

CPLA

MOVR3,A

L30:

DECR3

CJNER3,#255,L30;K2口控制延时

CJNER0,#255,K30

LJMPSIN

TC3:

RET

TAB:

DB80H,82H,84H,86H,88H,8AH,8CH,8EH,90H,92H,94H,96H,98H,9AH,9CH,9EH

DB0A0H,0A2H,0A4H,0A6H,0A8H,0AAH,0ABH,0ADH,0AFH,0B1H,0B2H,0B4H,0B6H,0B7H,0B9H,0BAH

DB0BCH,0BDH,0BFH,0C0H,0C1H,0C3H,0C4H,0C5H,0C6H,0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH

DB0CEH,0CFH,0D0H,0D1H,0D1H,0D2H,0D2H,0D3H,0D3H,0D4H,0D4H,0D4H,0D4H,0D5H,0D5H,0D5H

DB0D5H,0D5H,0D5H,0D5H,0D4H,0D4H,0D4H,0D4H,0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1