⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sanjiaobo.txt

📁 这是一个用单片机来产生三角波的一个程序。
💻 TXT
字号:
用DAC0832 产生三角波


程序 注释:

1.程序中设置了标志位 upFlag 来表示三角波的上坡和下坡,=1表示在上坡而=0则表示下坡,当数字量
 达到上限255或下限0时要改变标志位upFlag.
2.根据标志位upFlag来确定数字量是应该加1还是减1,上坡就加1,下坡则减1.
#include <reg51.h>
#include<stdio.h>
#define DAC0832Addr 0x7FFFF //0832地址
#define uchar unsigned char	//uchar代表单个字节无符号数
#define uint unsigned int	//uint无符号字
Uart_Init();				//输出口初始化
sbit P26=0xA6;				//P2.6位
sbit P27=0xA7;				//P2.7位	
void TransformData(uchar c0832data);//转换数据
void Delay() ;				 //延时子程序
main()
{	bit upFlag=1;
	xdata cDigital=1;	//待转换的数字量
	Uart_Init();	//
	P0=0XFF;		//端口初始化为0xFF
	P1=0XFF;		//
	P2=0XFF;
	P3=0XFF;
	Delay();		//调用延时程序
	while(1)
	{
	TransformData(cDigital);//进行数模转换
		if((cDigital==255)|(cDigital==0))
				upFlag=~upFlag;		//标志位取反
	if(upFlag==1)
		{cDigital++;				//数字量加1
		}
	else
		{cDigital--;				//数字量减1
		}
	Delay();			//调用延时程序
	printf("digital is %d \n",cDigital);
	}
}
void TransformData(uchar c0832data)
{
	*((uchar xdata *)DAC0832Addr)=c0832data;
	//向DAC0832输出待转换数字量c0832data
}
Uart_Init()
	{SCON = 0x52;    /* 设置串行口控制寄存器SCON*/
	 TMOD = 0x21;    /* 12M时钟时波特率为2400  */
	 TCON = 0x69;    /* TCON */
	 TH1 =  0xf3;    /* TH1 */
	}
void Delay() 	//延时程序
{
	uint i;
	for(i=0;i<200;i++);
}
Interrupt_Flag=1;
}
void Serial_Port() interrupt 4 using 0
{	if(RI==1)
	{
	nRxByte=SBUF;
	GetKeyFromRxByte();
	}
	TI=0;
	RI=0;
}
void GetKeyFromRxByte()
{int i,ntemp;
for(i=0;i<8;i++)
	if(((nRxByte>>i)&0x01)==0) 
		{ntemp=i;
		nKeyNumber=ntemp+8*Interrupt_Flag;
		return;
		}
	
}
Uart_Init()
	{SCON = 0x52;    /* 设置串行口控制寄存器SCON*/
	 TMOD = 0x20;    /* 12M时钟时波特率为2400  */
	 TCON = 0x69;    /* TCON */
	 TH1 =  0xf3;    /* TH1 */
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -