单片机 > 单片机程序设计 > 详情

基于51单片机的DAC0832波形发生器设计

发布时间:2023-11-21 发布时间:
|

波形发生器是一种常用的信号源,广泛的应用于电子电路、自动控制系统和教学实验等领域,是现代测试领域内应用最为广泛的通用仪器之一。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都需要有信号源。由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察。


测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应用最为广泛的一类电子仪器。它可以产生多种波形信号,如方波、锯齿波、三角波等,因而广泛应用于通信、雷达、导航、宇航等领域


以多种波形发生器为对象,选择单片机、独立按键及D/A转换器,设计相应的电路构成多种波形发生器。


功能要求:

1.有4个功能键,分别用来选择输出:三角波、锯齿波、梯形拨、方波。


2.按下某个功能键,进入中断,在中断程序中查询、确定是哪个功能键,并输出对应的波形。


3.显示器2位,显示功能号01、02、03、04,代表输出三角波、锯齿波、梯形拨、方波。


设计任务:

1、完成单片机最小系统电路设计。


2、完成按键电路设计。


3、完成D/A转换及接口电路的设计。


4、完成显示电路的设计。


电路图如下:(proteus 仿真通过)



其一仿真图:


源程序如下:

ORG 0000H


START: LJMP MAIN


ORG 0003H ;外部中断 入口


LJMP INSER ;转到中断服务程序


ORG 0030H


MAIN: MOV DPTR,#7FFFH ;DAC0832地址


SETB EX0 ;允许 中断


SETB IT0 ;负边沿触发方式


SETB EA ;开中断


HERE: JB 20H.0,ST ;锯齿波处理


JB 20H.1,TRI ;三角波处理


JB 20H.2,SQ ;方波处理


JB 20H.3,TXB ;梯形波处理


SJMP HERE ;等待中断


INSER: JNB P1.0, LL1 ;中断服务程序,查询按键


SJMP L1


LL1: MOV 20H,#00H SETB 20H.0 ;设置锯齿波标志


SJMP RT


L1: JNB P1.2, LL2


SJMP L2


LL2: MOV 20H,#00H


SETB 20H.1 ;设三角梯波标志


SJMP RT


L2: JNB P1.4, LL3


SJMP L3


LL3: MOV 20H,#00H


SETB 20H.2 ;设置方波标志


SJMP RT


L3: JNB P1.6, LL4


SJMP RT


LL4: MOV 20H,#00H


SETB 20H.3 ;设置梯形波标志


RT: RETI;中断返回


ST: CLR


P1.1 ;锯齿波


CLR P1.3 SETB P1.5


CLR P1.7


MOV A,#00H


LOOPP: MOVX @DPTR,A ;启动D/A转换


INC A


JB 20H.0,LOOPP ;连续输出波形


LJMP HERE


TRI: CLR P1.1 ;三角波


CLR P1.3


CLR P1.5


SETB P1.7


MOV A,#00H


UP: MOVX @DPTR,A ;启动D/A转换


INC A ;上升沿


CJNE A,#0FFH,UP


DOWN: MOVX @DPTR,A ;启动D/A转换


DEC A ;下降沿


CJNE A,#00H,DOWN


JB 20H.1, UP ;连续输出波形


LJMP HERE


SQ: CLR P1.1 ;方波


SETB P1.3


CLR P1.5


CLR P1.7


MOV A,#00H


MOVX @DPTR,A ;DAC输出低电平


ACALL DELAY ;延时1


MOV A,#0FFH


MOVX @DPTR,A ;DAC输出高电平


ACALL DELAY ;延时2


JB 20H.2, SQ ;连续输出波形


LJMP HERE


TXB: CLR P1.1 ;梯形波


CLR P1.3


SETB P1.5


SETB P1.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: MOV R4,#0FH ;延时子程序


LOOP11: MOV R5,#10H


LOOP22: NOP


NOP


NOP


DJNZ R5,LOOP22


DJNZ R4,LOOP11


RET


END



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32学习笔记4:外部中断