嵌入式ADC采样程序C语言,STC12C4052AD STC单片机ADC采样C程序
时间: 2023-08-18 16:34:36 浏览: 156
STC12C4052AD STC单片机ADC采样C程序.doc
以下是STC12C4052AD单片机实现ADC采样的C语言程序:
```c
#include <reg52.h>
#include <stdio.h>
#define FOSC 11059200L
#define BAUD 9600
unsigned char code table[] = "0123456789ABCDEF";
sbit ADIN = P3^3; // ADC输入端口定义
void InitUart(void)
{
TMOD = 0x20;
TH1 = TL1 = -(FOSC/12/32/BAUD);
TR1 = 1;
SM0 = 0;
SM1 = 1;
REN = 1;
TI = 1;
}
void SendData(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
void SendString(unsigned char *s)
{
while(*s)
{
SendData(*s++);
}
}
void Delay10us() // 延时函数
{
unsigned char i;
i = 2;
while (--i);
}
unsigned char GetADCResult()
{
unsigned char i, result = 0;
for (i = 0; i < 8; i++) // 8位ADC转换
{
ADIN = 1; // 使能ADC
Delay10us(); // 延时
result <<= 1;
ADIN = 0;
if (ADIN) result |= 0x01; // 读取数据
Delay10us();
}
return result;
}
void main()
{
unsigned char adcResult;
unsigned char str[5];
InitUart();
while (1)
{
adcResult = GetADCResult(); // 获取ADC转换结果
SendString("ADC Result: 0x");
str[0] = table[(adcResult >> 4) & 0x0F];
str[1] = table[adcResult & 0x0F];
str[2] = '\r';
str[3] = '\n';
str[4] = '\0';
SendString(str); // 发送ADC转换结果
}
}
```
在上述程序中,我们使用了单片机的P3.3口作为ADC输入端口,并通过GetADCResult函数获取ADC转换结果,然后通过串口发送给外部设备。需要注意的是,在发送数据时,为了方便,我们将ADC转换结果转换成16进制字符串形式进行发送。
阅读全文