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波转为模拟信号,及将不同占空比的信号转为不同电压的模拟信号。用处不广泛。但可以实现降压的功能。

相关推荐
Kuakewei8889 小时前
7533稳压芯片ic输入串电阻原理:3.3V输出功耗计算与散热指南
嵌入式硬件
玖玥拾9 小时前
C# 语言进阶(十四)Unity UI界面开发 + 网络消息联动
服务器·开发语言·网络·ui·unity·c#·游戏引擎
hbugs0019 小时前
PNETLab vs EVE-NG Pro 流量洞察功能底层架构技术白皮书
网络·架构·eve-ng·bpf·流量洞察
不会C语言的男孩10 小时前
TCP通信可视化工具,含下载地址
服务器·网络·安全
五五六六052410 小时前
2026盘古石杯初赛
网络
KaifuZeng11 小时前
模电面试问题汇总二
单片机·嵌入式硬件·面试·模电·通信与接口协议
玖玥拾11 小时前
C# 语言进阶(十三)网络 DLL 库分层设计
服务器·开发语言·网络·网络协议·c#
冰茶丿11 小时前
状态机在嵌入式系统中的应用:不只是switch-case这么简单
数据库·嵌入式硬件·mongodb
大师兄666811 小时前
HarmonyOS7 HTTP 网络请求封装:统一拦截器实战
网络·网络协议·http·arkui·harmonyos7·实战讲解
是摆烂第一名呀11 小时前
【RK3506】RGB屏幕与背光调试记录
linux·arm开发·驱动开发·嵌入式硬件