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

📄 7_5.c

📁 51事例原代码 事例多多 应该对初学者很有用
💻 C
字号:
//MAX532 D/A操作程序:

#include <reg51.h>
typedef unsigned char BYTE

void DABSent (BYTE DABdatah,BYTE DABdatal)		//B通道数据发送
{
	//DABdatah为DA通道B数据高8位
 	//DABdatal为DA通道B数据低4位

	unsigned char i;
	sbit CS=P1^6;			//片选信号
	sbit DIN=P1^4;			//数据输入
	sbit SCLK=P1^5;			//时钟
	sbit LDAC=P1^7;			//异步加载DAC输入,作为同步信号
	BYTE temp;

	CS=1;
	LDAC=1;
	CS=0;

	temp=DABdatah;
	for (i=0;i<8;i++) 		//发送数据的高8位,最高位先发送 		
		{
		SCLK=0;				//模拟串口,提供时钟信号
		temp=temp&0x80;		//取数据的最高位发送
		if (temp==0x80)
			DIN=1;
		else
			DIN=0;
		temp=DABdatah;
		temp<=1;			//数据左移,发送下一位
		DABdatah=temp;
		SCLK=1;
		}
	temp=DABdatal;
	for (i=0;i<4;i++) 		//发送数据的低4位 		
		{
		SCLK=0;				//模拟串口,提供时钟信号
		temp=temp&0x80;		//取数据的最高位发送
		if (temp==0x80)
			DIN=1;
		else
			DIN=0;
		temp=DABdatal;
		temp<=1;			//数据左移,发送下一位
		DABdatal=temp;
		SCLK=1;
		}
}

void DAASent(BYTE DAAdatah,BYTE DAAdatal)	//A通道数据发送
{
	//DAAdatah为DA通道B数据高8位
 	//DAAdatal为DA通道B数据低4位

	unsigned char i;
	sbit CS=P1^6;			//片选信号
	sbit LDAC=P1^7;			//异步加载DAC输入,作为同步信号
	sbit DIN=P1^4;			//数据输入
	sbit SCLK=P1^5;			//时钟
	BYTE temp;

	CS=1;
	LDAC=1;
	CS=0;

	temp=DAAdatah;
	for (i=0;i<8;i++) 		//发送数据的高8位,最高位先发送
		{
		SCLK=0;				//模拟串口,提供时钟信号
		temp=temp&0x80;		//取数据的最高位发送
		if (temp==0x80)
			DIN=1;
		else
			DIN=0;
		temp=DAAdatah;
		temp<=1;			//数据左移,发送下一位
		DAAdatah=temp;
		SCLK=1;
		}
	temp=DAAdatal;
	for (i=0;i<4;i++) 		//发送数据的低4位
		{
		SCLK=0;				//模拟串口,提供时钟信号
		temp=temp&0x80;		//取数据的最高位发送
		if (temp==0x80)
			DIN=1;
		else
			DIN=0;
		temp=DAAdatal;
		temp<=1;			//数据左移,发送下一位
		DAAdatal=temp;
		SCLK=1;
		}
	CS=1;
	LDAC=0;
}

⌨️ 快捷键说明

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