STC12C5A60S2A/D转换

news/2025/2/13 1:54:58/

快速导航
STC12已封装好的函数库

STC12C5A60S2有8路高速10位A/D转换
在这里插入图片描述

在这里插入图片描述
本demo实现ADC通道0采集,并通过串口打印出来(查询方式)

#include <STC12C5A60S2.H>
#include <intrins.h>#define MAIN_Fosc		11059200L	//宏定义主时钟HZ
//#define MAIN_Fosc		12000000L#define  uchar unsigned char 
#define  uint unsigned int /*声明ADC相关寄存器 */
//sfr ADC_CONTR   =   0xBC;           //ADC 控制寄存器
//sfr ADC_RES     =   0xBD;           //ADC 高8位结果寄存器
sfr ADC_LOW2    =   0xBE;           //ADC 低2位结果寄存器
//sfr P1ASF       =   0x9D;           //P1 辅助控制寄存器/*ADC操作的一些宏定义*/
#define ADC_POWER   0x80            //ADC power control bit
#define ADC_FLAG    0x10            //ADC complete flag
#define ADC_START   0x08            //ADC start control bit
#define ADC_SPEEDLL 0x00            //420 clocks
#define ADC_SPEEDL  0x20            //280 clocks
#define ADC_SPEEDH  0x40            //140 clocks
#define ADC_SPEEDHH 0x60            //70 clocks//基于STC12单片机1ms延时函数
//函数说明:内部调用
void Delay1ms()		
{# if MAIN_Fosc == 11059200L//晶振11.0592MHz//误差 -0.018084490741usunsigned char a,b,c;for(c=8;c>0;c--)for(b=197;b>0;b--)for(a=2;a>0;a--);#elif MAIN_Fosc == 12000000L//晶振12.000000MHZ//误差 0usunsigned char a,b;for(b=129;b>0;b--)for(a=45;a>0;a--);#endif}//基于STC12单片机ms延时函数
//函数说明:外部调用
void Delay_ms(uint time)
{int i;for(i=0; i<time; i++){Delay1ms();}
}//串口初始化,晶振11.0592,波特率9600
void UartInit(void)		//9600bps@11.0592MHz
{PCON &= 0x7F;		//波特率不倍速SCON = 0x50;		//8位数据,可变波特率AUXR |= 0x04;		//独立波特率发生器时钟为Fosc,即1TBRT = 0xDC;		//设定独立波特率发生器重装值AUXR |= 0x01;		//串口1选择独立波特率发生器为波特率发生器AUXR |= 0x10;		//启动独立波特率发生器//EA = 1;//开总中断//ES = 1;//开串口中断
}/***********************************************函数名称:InitADC()*函数功能:初始化ADC*输入:无*返回:无**********************************************/
void InitADC()
{P1ASF = 0xff;                   //开启8路ADC功能ADC_RES = 0;                    //清楚之前的结果ADC_CONTR = ADC_POWER | ADC_SPEEDLL;Delay_ms(2);                       //ADC上电和延时
}/**************************************
函数名称:GetADCResult(unsigned int ch)
功能描述:读取AD
入口参数:unsigned int ch    输入0-7分别读取AD0-AD7值
返回值:无
***************************************/
unsigned char GetADCResult(unsigned char ch)
{ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;_nop_();						//查询前必须等待_nop_();_nop_();_nop_();while (!(ADC_CONTR & ADC_FLAG));//等待完成标志ADC_CONTR &= ~ADC_FLAG;         //关闭 ADCreturn ADC_RES;                 //返回ADC结果
}//向串口发送一个字符
void putchar(unsigned char ch)
{SBUF = ch;while(!TI);TI = 0;
}//向串口发送一段字符串
void prints(char *s)
{while(*s != '\0')//发送字符串,直到遇到0才结束{SBUF = *s++;while(!TI);TI = 0;}
}void main()
{unsigned char temp;UartInit();//串口初始化InitADC();//ADC初始化//将ADC结果通过串口发送出去while(1){prints("通道0的ADC值为:");temp = GetADCResult(0);putchar(temp / 1000 + '0');//打印千位putchar(temp % 1000 / 100 + '0');//打印百位putchar(temp % 100 / 10 + '0');//打印十位putchar(temp % 10 + '0');//打印个位Delay_ms(100);}
}

在这里插入图片描述


http://www.ppmy.cn/news/310456.html

相关文章

Shell | 查看分区文件系统方法的不完全总结

本文总结查看分区文件系统的几种方法。 Updated: 2022 / 8 / 23 Shell | 查看分区文件系统方法的不完全总结 dfpartedlsblkblkid参考链接 df df -T 命令查看。这个是最简单的命令&#xff0c;文件系统类型在 Type 列输出。只可以查看已经挂载的分区和文件系统类型。如下所示&…

hi35xx stmmac网卡驱动源码解读

Hi35xx stmmac网卡驱动源码解读 一、源文件 drivers/net/stmmac/stmmac_main.c 源码阅读顺序如下图&#xff1a; 二、platform_device_register与platform_driver_register platform_device_register&#xff1a;注册设备 platform_driver_register&#xff1a;注册驱动 …

SSD202 驱动WIFI-ssw01b的STA模式

1 电路相关 复位芯片方法1 echo ON > /dev/wifi_reset echo OFF > /dev/wifi_reset复位芯片方法2 echo 71 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio71/direction echo 0 > /sys/class/gpio/gpio71/value sleep 2 echo 1 > /sys/class…

DM355与THS8200及TVP7002

DM355与THS8200及TVP7002 视频采集要求HDMI、VESA(即各种VGA)、标清CVBS&#xff0c;输出反之。当然要求有音频。 项目来自于客户的一个无线高清视频方案&#xff0c;结构框架并不复杂&#xff0c;但是硬件真正出来后&#xff0c;才发现要比想象的难的多。 THS8200是TI主推的高…

VMware虚拟机(Linux)如何找出系统中磁盘设备对应的硬盘

VMware虚拟机&#xff08;Linux&#xff09;中&#xff0c;我们的Linux服务器可能拥有多个磁盘&#xff08;或者叫虚拟磁盘&#xff09;&#xff0c;如下所示&#xff0c;这个服务器的磁盘有硬盘1、硬盘2、…………硬盘10总共10块硬盘。 而Linux系统中&#xff0c;磁盘中对应的…

30.STM32 DS18B20

1.STM32 DS18B20 1.独特的单总线接口方式&#xff0c;DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。大大提高了系统的抗干扰性。 2.测温范围 &#xff0d;55℃&#xff5e;125℃&#xff0c;精度为0&#xff0e;5℃。 3.支持多点组网功能&am…

ST3000DM001

**************************************************************************************************** 故障&#xff1a;正常尋道不就緒&#xff0c;com端BSY,需要短路才能到F3 T>&#xff0c;短路後再次進入會提示以下訊息&#xff0c;并可以正常到T級 解決&#xff1…

Linux查看分区文件系统类型的几种方法

在Linux 中如何查看分区的文件系统类型&#xff0c;下面总结几种查看分区文件系统类型的方法。 1、df -T 命令查看 这个是最简单的命令&#xff0c;文件系统类型在Type列输出。只可以查看已经挂载的分区和文件系统类型。如下所示&#xff1a; [rootmylnx008 ~]# df -T /dev/…