C51单片机实验——波形发生器(proteus+asm)

前言

  • DAC0832工作于直通方式,MCU的P0口直接输给DAC0832数据口
    DAC0832的参考电平引脚+10V,输出运放电源采用+12V和-12V双极性供电
  • P1.0控制 方波 输出的选择开关,低电平有效
    P1.1控制 锯齿波 输出的选择开关,低电平有效
    P1.2控制 三角波 输出的选择开关,低电平有效
    P1.3控制 正弦波 输出的选择开关,低电平有效
  • P1.4控制 方波 的指示灯,低电平有效
    P1.5控制 锯齿波 的指示灯,低电平有效
    P1.6控制 三角波 的指示灯,低电平有效
    P1.7控制 正弦波 的指示灯,低电平有效

Proteus电路图

在这里插入图片描述

asm代码

ORG		0000H
LJMP	INIT

ORG		0100H
INIT:	MOV		DPTR,#SIN		// 指向正弦表
MAIN:	MOV		A,#00H			// A清零
		ORL		P1,#0F0H		// 指示灯复位
		JNB		P1.0,SQUARE		// 选择方波
		JNB		P1.1,SAWTOOTH	// 选择锯齿波
		JNB		P1.2,TRIANG		// 选择三角波
		JNB		P1.3,SINE		// 选择正弦波
		SJMP	MAIN

SQUARE:	CLR		P1.4			// 方波
SQULOOP:JB		P1.0,MAIN		// 判断是否返回
		MOV		A,#00H			// 下降沿
		MOV		P0,A
		LCALL	DELAY1
		MOV		A,#0FFH			// 上升沿
		MOV		P0,A
		LCALL	DELAY1
		SJMP	SQULOOP

SAWTOOTH:CLR	P1.5			// 锯齿波
SAWLOOP:JB		P1.1,MAIN		// 判断是否返回
		MOV		P0,A
		INC		A				//	A+1
		LCALL	DELAY1
		SJMP	SAWLOOP
		
TRIANG:	CLR		P1.6			// 三角波	
UPLOOP:	JB		P1.2,MAIN		// 判断是否返回
		MOV		P0,A
		INC		A				//	A+1
		LCALL	DELAY1
		CJNE	A,#0FFH,UPLOOP	// 判断是否到最大值
DOWNLOOP:JB		P1.2,MAIN		// 判断是否返回
		MOV		P0,A
		DEC		A				//	A-1
		LCALL	DELAY1
		CJNE	A,#00H,DOWNLOOP	// 判断是否到最小值
		SJMP	UPLOOP
		
SINE:	CLR		P1.7			// 正弦波
SINLOOP:JB		P1.3,MAIN		// 判断是否返回
		MOV		R0,A			// 保护A
		MOVC	A,@A+DPTR		// 查表
		MOV		P0,A
		MOV		A,R0			// 恢复A
		INC		A				//	A+1
		LCALL	DELAY1
		SJMP	SINLOOP

SIN:	DB 80H, 83H, 86H, 89H, 8DH, 90H, 93H, 96H	// 正弦表
		DB 99H, 9CH, 9FH, 0A2H,0A5H,0A8H,0ABH,0AEH
		DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H
		DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
		DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H
		DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H
		DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH
		DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
		DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
		DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H
		DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH
		DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH
		DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
		DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
		DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH, 9CH, 99H
		DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H
		DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H
		DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H
		DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH
		DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H
		DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H
		DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH
		DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H
		DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H
		DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H
		DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H
		DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H
		DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H
		DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H
		DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH
		DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H
		DB 69H, 6CH, 6FH, 72H, 75H, 78H, 7bH, 7eH
	
DELAY100:	MOV		30H,#195		//延时100ms
			MOV		31H,#133
NEXT100:	DJNZ	31H,NEXT100
			DJNZ	30H,NEXT100
			RET

DELAY1:		MOV		30H,#2			//延时1ms
			MOV		31H,#234
NEXT1:		DJNZ	31H,NEXT1
			DJNZ	30H,NEXT1
			RET
		
END

效果图

  • 方波
    在这里插入图片描述

  • 锯齿波
    在这里插入图片描述

  • 三角波
    在这里插入图片描述

  • 正弦波
    在这里插入图片描述

  • 10
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值