基于51单片机和DAC0832的多路波形发生器(汇编语言编写)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以多种波形发生器为对象,选择单片机、独立按键及D/A转换器,设计相应的电路构成多种波形发生器。
功能要求:
1.有4个功能键,分别用来选择输出:
三角波、锯齿波、梯形拨、方波。
2.按下某个功能键,进入中断,在中断程序中查询、确定是哪个功能键,并输出对应的波形。
3.显示器2位,显示功能号
01、02、
03、04,代表输出三角波、锯齿波、梯形拨、方波。
设计任务:
1、完成单片机最小系统电路设计。
2、完成按键电路设计。
3、完成D/A转换及接口电路的设计。
4、完成显示电路的设计。
电路图如下:
(proteus仿真通过)
其一仿真图:
源程序如下:
ORG 00H
START:
LJMP MAIN
ORG 0003H;外部xxxx
LJMP INSER;转到xx服务程序ORG 0030H
MAIN:
MOV DPTR,#7FFFH;DAC0832地址SETB EX0;允许xx
SETB IT0;负边沿触发方式
SETB EA;开xx
HERE:
JB 20H.0,ST;锯齿波处理
JB 20H.1,TRI;三角波处理
JB 20H.2,SQ;方波处理
JB 20H.3,TXB;梯形波处理
SJMP HERE;等待xx
INSER:
JNB P
1.0, LL1;中断服务程序,查询按键SJMP L1
LL1:MOV 20H,#00H
SETB 20H.0;设置锯齿波标志
SJMP RT
L1:JNBP
1.2, LL2
SJMP L2
LL2:MOV 20H,#00H
SETB 20H.1;设三角梯波标志SJMP RT
L2:JNB P
1.4, LL3
SJMP L3
LL3:MOV 20H,#00H
SETB 20H.2;设置方波标志SJMP RT
L3:JNB P
1.6, LL4
SJMP RT
LL4:MOV 20H,#00H
SETB 20H.3;设置梯形波标志RT:
RETI;xx返回
ST:
1.1;锯齿波
CLR P
1.3
SETB P
1.5
CLR P
1.7
MOVA,#00H
LOOPP:
MOVX@DPTR,A;启动D/A转换INCA
JB20H.0,LOOPP;连续输出波形LJMPHERE
TRI:
CLR P
1.1;三角波
CLR P
1.3
CLR P
1.5
1.7
MOVA,#00H
UP:
MOVX@DPTR,A;启动D/A转换INCA;上升沿
CJNEA,#0FFH,UP
DOWN:
MOVX@DPTR,A;启动D/A转换DECA;下降沿
CJNEA,#00H,DOWN
JB20H.1,UP;连续输出波形LJMPHERE
SQ:
CLR P
1.1;方波
SETB P
1.3
CLR P
1.5
CLR P
1.7
MOVA,#00H
MOVX@DPTR,A;DAC输出低电平ACALLDELAY;xx1
MOVA,#0FFH
MOVX@DPTR,A;DAC输出高电平ACALLDELAY;xx2
JB20H.2, SQ;连续输出波形LJMPHERE
TXB:
CLR P
1.1;梯形波
CLR P
1.3
SETB P
1.5
SETB P
1.7
MOV A,#00H
MOVX @DPTR,A
ACALL DELAY
LOOP:
MOVX @DPTR,A
INC A
CJNE A,#0FFH,LOOP ACALL DELAY MOVX @DPTR,A LOOP1:DEC A MOVX @DPTR,A CJNE A,#00H,LOOP1 MOVX @DPTR,A ACALL DELAY
JB 20H.3,LOOP DELAY:
MOVR4,#0FH
LOOP11:MOVR5,#10H LOOP22: NOP
NOP
NOP
DJNZR5,LOOP22 DJNZR4,LOOP11 RET
END;xx子程序