51单片机AD/DA

AD为模拟信号转为数字信号,STC89C52RC使用了一个触摸屏芯片来实现模数转换,通信协议采用的是SPI通信协议。

SPI通信协议采用了四根线CS、DCLK、DIN、DOUT,其中CS是片选位,每个芯片独立,而其它三根线是所有芯片共用的。DCLK为时钟线,上升沿芯片从主机读数据,下降沿芯片向主机写数据。DIN是芯片从主机读数据的线,DOUT是芯片向主机写数据的线。

代码如下:

复制代码
#include <REGX52.H>


sbit CS = P3^5;
sbit DIN= P3^4;
sbit DOUT = P3^7;
sbit DCLK = P3^6;


unsigned int AD_SPI(unsigned char address)
{
	unsigned char i;
	unsigned int Data;
	DCLK = 0;
	CS = 0;
	for(i=0;i<8;i++)
	{
		DIN = address & (0x80>>i);
		DCLK = 1;
		DCLK = 0;
	}
	for(i=0;i<16;i++)
	{
		DCLK = 1;
		DCLK = 0;
		if(DOUT)
		{
			Data |= (0x8000>>i);
		}
	}
	CS = 1;
	if(Command&0x08)
	{
		return Data>>8;
	}
	else
	{
		return Data>>4;
	}
	
}




下面为关键字的地址:

#define AD_XP_8     0X9C
#define AD_YP_8     0XDC
#define AD_AUX_8    0XEC
#define AD_VBAT_8   0XAC


#define AD_XP_16     0X94
#define AD_YP_16     0XD4
#define AD_AUX_16    0XE4
#define AD_VBAT_16   0XA4

STC89C52的DAC采用的是PWM波转为模拟信号,及将不同占空比的信号转为不同电压的模拟信号。用处不广泛。但可以实现降压的功能。

相关推荐
Escalating_xu6 分钟前
【Linux 网络编程】IP 分片与重组:3000 字节的数据报,怎样拆开又拼回来?
linux·网络·tcp/ip
电子科技圈12 分钟前
Arm电机控制开发工具哪家强?
arm开发·单片机·嵌入式硬件·设计模式·软件构建
风娜19 分钟前
【Linux网络】UDP 服务器怎么写?从 socket、bind 到 recvfrom/sendto,手写完整回显服务器
linux·服务器·网络
从琳开始98920 分钟前
从Socket到UDP回显服务器:Java网络编程完整指南
java·网络·网络协议·udp·java-ee
JasmineX-127 分钟前
下位机直接控制57步进电机匀速转动
stm32·单片机·嵌入式硬件
Gauss松鼠会1 小时前
GaussDB 整体架构解析
运维·服务器·网络·数据库·sql·架构·gaussdb
sinovoip1 小时前
Banana Pi BPI-RT2 WiFi 6 路由器板采用 Realtek RTL8198D 双核 MIPS SoC。
网络·智能路由器
聆思科技AI芯片1 小时前
【AI硬件开发上手教程】怎么使用AI编程实现小聆AI语音控制舵机
人工智能·嵌入式硬件·开源·ai编程·智能硬件
xiaoye-duck1 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(上):初始化和全量响应
开发语言·网络·c++·语言模型
Yang96112 小时前
鼎讯信通热剥钳实测:大芯径光纤如何做到无损剥除
网络