仿真图:
功能简介:
单片机采用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