单片机课程设计函数波形发生器.docx

上传人:b****6 文档编号:3311521 上传时间:2022-11-21 格式:DOCX 页数:19 大小:441.18KB
下载 相关 举报
单片机课程设计函数波形发生器.docx_第1页
第1页 / 共19页
单片机课程设计函数波形发生器.docx_第2页
第2页 / 共19页
单片机课程设计函数波形发生器.docx_第3页
第3页 / 共19页
单片机课程设计函数波形发生器.docx_第4页
第4页 / 共19页
单片机课程设计函数波形发生器.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机课程设计函数波形发生器.docx

《单片机课程设计函数波形发生器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计函数波形发生器.docx(19页珍藏版)》请在冰豆网上搜索。

单片机课程设计函数波形发生器.docx

单片机课程设计函数波形发生器

目录

 

一,功能描述1

二,硬件设计1

三,软件设计2

四,运行效果6

五,程序代码10

六,心得体会15

 

一,功能描述

1,系统可以输出锯齿波、三角波、方波和正弦波;

2,输出波形的选择通过4只按键加以选择,其对应关系为:

按键

1

2

3

4

输出波形

锯齿波(0)

三角波

(1)

方波

(2)

正弦波(3)

3,每种波形的周期可以通过可调电压控制;

4,输出波形可以在示波器上正确显现;

5,输出波形编号,在LED数码管有显示;

二,硬件设计

硬件连接图如下:

三,软件设计

系统主要由以下几个部分组成:

1,主函数;2,锯齿波子函数;3,三角波子函数;4,正弦波子函数;5,显示子函数。

各程序流程图分别如下所示。

图3-1主程序流程图图3-2锯齿波流程图

图3-3三角波流程图

图3-4方波流程图

图3-5正弦波流程图图3-6显示子函数

四,运行效果

图4-1程序运行界面

图4-2锯齿波运行结果1图4-3锯齿波运行结果2

图4-4锯齿波运行结果3图4-5三角波运行结果1

图4-6三角波运行结果2图4-7三角波运行结果3

图4-8方波运行结果1图4-9方波运行结果2

图4-10方波运行结果3图4-11正弦波运行结果1

图4-12正弦波运行结果2图4-13正弦波运行结果3

图4-14程序初始化之后的显示为数字“8”

 

图4-15“0”号波形即锯齿波

图4-16“1”号波形即三角波

 

图4-17“2”号波形即方波

图4-18“3”号波形即正弦波

五,程序代码

ORG0000H

AJMPSTART

ORG0010H

START:

MOVDPTR,#0CFFFH;8255控制口地址

MOVA,#80H;8255输入输出方式控制字,设置pa、pb都为输出口

MOVX@DPTR,A

MOVSP,#70H;指针重新定义初值

MOVR3,#08H;数码管的初值为8

MOVR7,#10;改变周期的变量初值

LCALLDISPLAY;上电数码管显示

LOOP0:

JNBP1.0,JUCHI

JNBP1.1,SANJIAO

JNBP1.2,NEXT0;由于rel的跳转范围有限,故借助于LJMP指令

JNBP1.3,NEXT;理由同上

LCALLDISPLAY

SJMPLOOP0;等待选择相应的波形

NEXT0:

LJMPFANGBO

NEXT:

LJMPSINE

;*************************************************************

;锯齿波,波形号码“0”

;*************************************************************

JUCHI:

MOVR3,#00H;输出显示波形号码

LCALLDISPLAY

MOVA,#00H

LP0:

MOVDPTR,#0EFFFH;0832地址

MOVX@DPTR,A;输出波形上一个点

MOVDPTR,#0FFFFH;开启转换

MOVX@DPTR,A

JBP3.2,$;查询AD转换完成

PUSHACC;保存波形上的点

MOVXA,@DPTR

JU0:

MOVR5,A;转换完成传进单片机的值

JU1:

MOVR4,#100;延时

JU2:

DJNZR4,JU2

DJNZR5,JU1

POPACC

INCA

JNBP1.1,EXIT0;检测新的波形输出命令

JNBP1.2,EXIT0

JNBP1.3,EXIT0

LJMPLP0

EXIT0:

MOVR3,#08H

LJMPLOOP0

;*************************************************************

;三角波,波形号码“1”

;*************************************************************

SANJIAO:

MOVR3,#01H;输出显示波形号码

MOVA,R3

LCALLDISPLAY

MOVA,#00H

LP1:

MOVDPTR,#0EFFFH;三角波,DAC0832地址

MOVX@DPTR,A;三角波的上升边

MOVDPTR,#0FFFFH

MOVX@DPTR,A

JBP3.2,$

PUSHACC

MOVXA,@DPTR

SAN0:

MOVR5,A;转换完成传进单片机的值

SAN1:

MOVR4,#100;延时

SAN2:

DJNZR4,SAN2

DJNZR5,SAN1

POPACC

INCA

JNBP1.0,EXIT1;检测新的波形输出命令

JNBP1.2,EXIT1

JNBP1.3,EXIT1

JNZLP1

DOWN:

DECA;三角波的下降边

JNBP1.0,EXIT1;检测新的波形输出命令,由于三角波有上升下降两段,为了保证对新的波形命令的相应速度

JNBP1.2,EXIT1

JNBP1.3,EXIT1

MOVDPTR,#0FFFFH

MOVX@DPTR,A

JBP3.2,$

PUSHACC

MOVXA,@DPTR

SAN3:

MOVR5,A;转换完成传进单片机的值

SAN4:

MOVR4,#100;延时

SAN5:

DJNZR4,SAN5

DJNZR5,SAN4

POPACC

MOVDPTR,#0EFFFH

MOVX@DPTR,A

JNZDOWN

SJMPLP1

EXIT1:

MOVR3,#08H

LJMPLOOP0

;*************************************************************

;方波,波形号码“2”

;*************************************************************

FANGBO:

MOVR3,#02H;输出显示波形号码

LCALLDISPLAY

LP2:

MOVDPTR,#0EFFFH;DAC0832地址

MOVA,#0FFH;方波上限

MOVX@DPTR,A

MOVDPTR,#0FFFFH;开启转换

MOVX@DPTR,A

JBP3.2,$

MOVXA,@DPTR

FANG0:

MOVR5,A

FANG1:

MOVR4,#100

FANG2:

DJNZR4,FANG2

DJNZR5,FANG1

JNBP1.0,EXIT2;检测新的波形输出命令

JNBP1.1,EXIT2

JNBP1.3,EXIT2

MOVDPTR,#0EFFFH

MOVA,#00H;方波下限

MOVX@DPTR,A

MOVDPTR,#0FFFFH;开启转换

MOVX@DPTR,A

JBP3.2,$

MOVXA,@DPTR

DL3:

MOVR5,A;延时

DL4:

MOVR4,#100

DL5:

DJNZR4,DL5

DJNZR5,DL4

JNBP1.0,EXIT2;检测新的波形输出命令

JNBP1.1,EXIT2

JNBP1.3,EXIT2

SJMPLP2

EXIT2:

MOVR3,#08H

RET

;*************************************************************

;正弦波,波形号码“3”

;*************************************************************

SINE:

MOVR3,#03H;输出显示波形号码

LCALLDISPLAY

MOVDPTR,#0EFFFH;DAC0832地址

MOVDPTR,#sinTab

MOV00H,#00H;开辟00H单元,不停加一,直至溢出,循环加一,因为正弦表是256个点

SINE_1:

MOVA,00H

MOVDPTR,#sinTab

MOVCA,@A+DPTR;查正弦表

MOVDPTR,#0EFFFH

MOVX@DPTR,A

MOVDPTR,#0FFFFH

MOVX@DPTR,A

JBP3.2,$

PUSHACC

MOVXA,@DPTR

SINE0:

MOVR5,A

SINE1:

MOVR4,#100

SINE2:

DJNZR4,SINE2

DJNZR5,SINE1

POPACC

INC00H

JNBP1.0,EXIT3;检测新的波形输出命令

JNBP1.1,EXIT3

JNBP1.2,EXIT3

AJMPSINE_1

EXIT3:

MOVR3,#08H

RET

;*************************************************************

;显示子程序

;*************************************************************

DISPLAY:

MOVA,#07FH;选择最后一个数码管

MOVDPTR,#0CFFDH;8255pb口作为位选

MOVX@DPTR,A

MOVA,R3

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPTR,#0CFFCH;8255pa口作为段选

MOVX@DPTR,A

RET

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H

sinTab:

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,80H

END

六,心得体会

这次课程设计是我大学以来做的最满意的一次课程设计,通过对所学知识的运用,适当结合一点新的知识,做出一点东西出来。

但这一个星期过的极为痛苦,吃了几天的面包,待在实验室调试程序。

调试程序是个艰难的过程,因为任何一个小的错误都有可能导致运行结果不当,这次课程设计其中一个最大的收获就是学会了如何查错,如何排除错误,找到问题所在,本次试验程序的编写最终正是按照这样的思路来的,将整个大程序分成若干小程序,逐个检验正确性。

首先通过编写显示小程序排查出片选3是有问题的,换了片选之后,显示正确;然后因为一旦加入改变周期的程序,就运行不出结果,我就单独编写0809的程序,检验0809是否有输出。

这两个程序在程序文件夹内。

当然,还有一些不足,比如没有选用赋值伪指令来代替8055、0832、0809的地址,所以调试过程中改地址非常麻烦;另外当我用中断来编写改变周期的程序时就是运行不正确,换成查询方式就可以,这一点还没弄得清楚。

总之,有付出、有收获,很充实、很欣慰。

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

当前位置:首页 > 小学教育 > 语文

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

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