ADC5513
一 C5513
u32 ADC5513_GetValue(void)
{
u32 ADValue,i;
bool data_bit = false;
C5513_SCK=0;
C5513_CS=0;
if(GPIO_BitRead(C5513_SDO)==0u)
{
for (i = 0; i < 24; i++)
{
C5513_SCK = 1;
data_bit = GPIO_BitRead(C5513_SDO);
C5513_SCK=0;
ADValue <<= 1;
if(data_bit > 0)
{
ADValue|=0x00000001;
}
else
{
ADValue&=~0x00000001;
}
}
ADValue &=~(1<<20) ;/*有效位数为19位*/
Vout=ADValue*2.0*10000/2^19 /*有效电压是2.0,不是2.5V因为内部放大了0.8倍*/
return ADValue;
}
else
{
return (0xffffffff);
}
}
- #include <reg52.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit ADCS=P2^0;
- sbit ADCLK=P2^1;
- sbit ADDO=P2^2;
- unsigned long int ADConv(void)
- {
- uchar i;
- unsigned long int Result=0;
- ADCLK=0;
- ADCS=0;
- _nop_();
- _nop_();
- _nop_();
- ADCLK=0;
- while(ADDO);
- ADCLK=1;
- _nop_();
- for(i=0;i<3;i++){
- ADCLK=0;
- _nop_();
- ADCLK=1;
- }
- for (i=0;i<20;i++){
- ADCLK=0;
- Result=Result<<1;
- if (ADDO)
- Result=Result+1;
- ADCLK=1;
- }
- ADCS=1;
- Result &=~(1<<20) ;/*有效位数为19位*/
- Vout=Result*2.0*10000/2^19 /*有效电压是2.0,不是2.5V因为内部放大了0.8倍*/
- return Result;
- }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?