基于51单片机的四种波形信号发生器汇编语言仿真

仿真图:

在这里插入图片描述

功能简介:

单片机采用AT89C51,最小系统由晶振和复位电路组成
液晶显示采用LCD1602用于显示该项目的参数信息
四个功能按键,分别是三角波、锯齿波、方波和正弦波的选择键
采用一片DAC芯片DAC0832和一片锁存器74LS373实现波形的发生

芯片/模块的特点:

DAC0832特点:
分辨率:DAC0832具有8位的分辨率,即可以将数字输入转换为256个不同的模拟输出级别。它能够提供精确的模拟输出信号。

双通道输出:DAC0832具有两个独立的模拟输出通道,可以同时产生两个不同的模拟输出信号。这使得它适用于需要多个模拟输出的应用。

串行接口:DAC0832通过串行接口进行通信和控制。它使用少数几个引脚(数据引脚、时钟引脚和片选引脚),可以与主控器件进行数据交换和时钟同步。

低功耗设计:DAC0832采用低功耗设计,在工作时功耗较低。它还具有自动功耗优化功能,可以在闲置状态下自动进入低功耗模式。

内部参考电压:DAC0832内部集成了参考电压,可以为模拟输出提供稳定的参考值。它还支持外部参考电压输入,以满足不同的应用需求。

输出保持功能:DAC0832具有输出保持功能,在电源投入或重启后,可以保持上一次的模拟输出值,避免输出的不确定性。

单电源供电:DAC0832可以使用单一电源(5V)进行供电,简化了电路设计和连接。

主程序:

RS EQU P3.0
RW EQU P3.1
E  EQU P3.3
LCD EQU P2
BF EQU P2.7

ORG 0000H
LJMP MAIN
ORG 0003H			
LJMP INT00
ORG 0100H
MAIN: MOV SP,#60H		
      SETB IT0			
      SETB EA			
      SETB EX0
      LCALL LCDXS
      SJMP $
INT00:MOV A,#01H
      ACALL W_CMD
      JNB P1.0,STW0		
      JNB P1.1,TZW0		
      JNB P1.2,TGW0		
      JNB P1.3,SQW0		
      JNB P1.4,SNW0
STW0:LJMP STW
TZW0:LJMP TZW
TGW0:LJMP TGW
SQW0:LJMP SQW
INTIR:MOV A,#01H
     ACALL W_CMD
     MOV A,#34H
     ACALL W_CMD
     MOV A,#0CH
     ACALL W_CMD
     MOV A,#14H
     ACALL W_CMD
     MOV A,#80H
     ACALL W_CMD	
     RETI 
STW:    MOV DPTR,#NAME0
        LCALL LOP
        MOV R0,#0FEH 
	MOV A,#00H
LOOP:	MOVX @R0,A  
	JB P1.0,INTIR  
	INC A         
	SJMP LOOP    
	LJMP INTIR
TZW:	MOV DPTR,#NAME1
        LCALL LOP
        MOV R0,#0FEH		
	MOV A,#00H
UP:	MOVX @R0,A	
	JB P1.1,MIDDLE		
	INC A			
	JNZ UP				
	DEC A				
	LCALL DELAY	
	JB P1.1,MIDDLE	
DOWN:	DEC A
	MOVX @R0,A		
	JB P1.1,MIDDLE		
	JNZ DOWN			
	SJMP UP			
	LJMP INTIR		
DELAY:	MOV R7,#100	  
DELAY1: MOV R6,#10
	NOP
DELAY2: DJNZ R6,DELAY2
	DJNZ R7,DELAY1
	RET
TGW:	MOV DPTR,#NAME2
        LCALL LOP
        MOV R0,#0FEH	
	MOV A,#00H
UP2:	MOVX @R0,A		
	JB P1.2,MIDDLE		
	INC A				
	JNZ UP2			
DOWN2:	DEC A			
	MOVX @R0,A		
	JB P1.2,MIDDLE		
	JNZ DOWN2		
	SJMP UP2			
	LJMP INTIR		
SQW:	MOV DPTR,#NAME3
        LCALL LOP
        MOV R0,#0FEH	
POSI:	MOV A,#00H		
	MOVX @R0,A		
	LCALL DELAY		
	JB P1.3,MIDDLE		
NEGA:	MOV A,#0FFH		
	MOVX @R0,A		
	LCALL DELAY	
	JB P1.3,MIDDLE	
	SJMP POSI			
	LJMP INTIR
SNW:	MOV DPTR,#NAME4
        LCALL LOP
        MOV R0,#0FEH			
	MOV R1,#00H
XX:	MOV A,R1	
	LCALL HANSHU		
	MOVX @R0,A			
	JB P1.4,MIDDLE		
	INC R1
	SJMP XX				
	LJMP INTIR		
HANSHU:	MOV DPTR,#TAB1
	MOVC A,@A+DPTR
	RET
MIDDLE: LJMP INTIR

LCDXS:MOV A,#01H
     ACALL W_CMD
     MOV A,#34H
     ACALL W_CMD
     MOV A,#0CH
     ACALL W_CMD
     MOV A,#14H
     ACALL W_CMD
     MOV A,#80H
     ACALL W_CMD
     MOV DPTR,#INIT
LOP: MOV R2,#0
LOP1:MOV A,R2
     MOVC A,@A+DPTR
     ACALL W_DATA
     INC R2
     CJNE R2,#16,LOP1
     RET
W_CMD:ACALL WAIT
      MOV LCD,A
      CLR RS
      CLR RW
      SETB E
      NOP
      CLR E
      RET
W_DATA:ACALL WAIT
       MOV LCD,A
       SETB RS
       CLR RW
       SETB E
       NOP
       CLR E
       RET           
WAIT:MOV LCD,#0FFH
     CLR RS
     SETB RW
     CLR E
     NOP
     SETB E
     JB BF,WAIT
     RET
INIT: DB '    Welcome!    '
NAME0:DB ' Sawtooth Wave  '
NAME1:DB 'Trapezoidal Wave'
NAME2:DB 'Triangular Wave '
NAME3:DB '  Square Wave   '
NAME4:DB '   Sine Wave    '
TAB1:   DB 080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aeh
        DB 0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8h
	DB 0dah,0dch,0deh,0e0h,0e2h,0e4h,0e6h,0e8h,0eah,0ebh,0edh,0efh,0f0h,0f1h,0f3h,0f4h
	DB 0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fdh,0feh,0feh,0feh,0ffh,0ffh,0ffh
	DB 0ffh,0ffh,0ffh,0ffh,0feh,0feh,0feh,0fdh,0fdh,0fch,0fbh,0fah,0fah,0f9h,0f8h,0f6h
	DB 0f5h,0f4h,0f3h,0f1h,0f0h,0efh,0edh,0ebh,0eah,0e8h,0e6h,0e4h,0e2h,0e0h,0deh,0dch
	DB 0dah,0d8h,0d5h,0d3h,0d1h,0ceh,0cch,0c9h,0c7h,0c4h,0c1h,0bfh,0bch,0b9h,0b6h,0b3h
	DB 0b1h,0aeh,0abh,0a8h,0a5h,0a2h,09fh,09ch,099h,096h,093h,090h,08ch,089h,086h,083h
	DB 080h,07dh,07ah,077h,074h,070h,06dh,06ah,067h,064h,061h,05eh,05bh,058h,055h,052h
	DB 04fh,04dh,04ah,047h,044h,041h,03fh,03ch,039h,037h,034h,032h,02fh,02dh,02bh,028h
	DB 026h,024h,022h,020h,01eh,01ch,01ah,018h,016h,015h,013h,011h,010h,00fh,00dh,00ch
	DB 00bh,00ah,008h,007h,006h,006h,005h,004h,003h,003h,002h,002h,002h,001h,001h,000h
	DB 000h,000h,001h,001h,002h,002h,002h,003h,003h,004h,005h,006h,006h,007h,008h,00ah
	DB 00bh,00ch,00dh,00fh,010h,011h,013h,015h,016h,018h,01ah,01ch,01eh,020h,022h,024h
	DB 026h,028h,02bh,02dh,02fh,032h,034h,037h,039h,03ch,03fh,041h,044h,047h,04ah,04dh
	DB 04fh,052h,055h,058h,05bh,05eh,061h,064h,067h,06ah,06dh,070h,074h,077h,07ah,07dh
	END

设计文件:
链接:https://pan.baidu.com/s/1MQbvY_okTtMEyQGTc9b0Ug?pwd=xq1z

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值