快速导航
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);}
}

STC12C5A60S2A/D转换相关推荐

  1. javabean实体类与实体类之间的快速转换

    一.Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> art ...

  2. C++ 笔记(35)— std::to_string 转换整形数字为字符串

    1. 函数原型 string to_string (int val); string to_string (long val); string to_string (long long val); s ...

  3. C++ OJ 中多行数据输入(大小写转换、通过移位运算实现2的n次方、多组输入,每行输入数量不一样)

    1. 多组输入,输出每行最大值 while(cin>>a>>b) 主要解决的是两个为一组的多组数据输入,当一次只输入一个数据时就用 while(cin>>a) 输入 ...

  4. 数据结构(02)— 时间复杂度与空间复杂度转换

    1. 时间复杂度转化为空间复杂度 常用的降低时间复杂度的方法有递归.二分法.排序算法.动态规划等,降低空间复杂度的核心思路就是,能用低复杂度的数据结构能解决问题,就千万不要用高复杂度的数据结构. ​ ...

  5. NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存

    NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...

  6. Python+OpenCV 图像处理系列(7)—— 图像色彩空间及转换

    1. 色彩空间转换函数 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 第一个参数为加载在内存的读片,第二个参数为转换的类型,其中包括: COLOR_BGR2GRAY = ...

  7. 【C#】类——里式转换

    类是由面对对象程序设计中产生的,在面向结构的程序设计例如C语言中是没有类这个概念的!C语言中有传值调用和传址调用的两种方式!在c语言中,主方法调用方法,通过传递参数等完成一些操作,其中比较常用的的数据 ...

  8. shell 批量转换文件编码

    相信大家在平时的跨平台编程中碰到过文件编码问题,比如在Windows代码字符编码方式是GB2312,然而转到Linux却只支持utf-8,虽然对代码部分没啥影响,但是很多中文注释部分,却一片乱码,很让 ...

  9. tensorflow2.0 基础一 常用数据类型及转换

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_43619065/arti ...

  10. Pytorch | BERT模型实现,提供转换脚本【横扫NLP】

    <谷歌终于开源BERT代码:3 亿参数量,机器之心全面解读>,上周推送的这篇文章,全面解读基于TensorFlow实现的BERT代码.现在,PyTorch用户的福利来了:一个名为Huggi ...

最新文章

  1. android apk签名工具_关于keytool和jarsigner工具签名的使用小结
  2. 黄聪:第2章 并发操作的一致性问题 (2)
  3. mysql5.6.22.0安装_皮带机滚筒用圆锥孔调心滚子轴承锁紧安装工艺
  4. silverlight3:(ItemControl 的)UI Virtualization
  5. 在线文本去重统计工具
  6. Minecraft 1.12.2模组开发(三十七) 3D盔甲
  7. OpenGL 4.0 学习3.2--各种颜色的RGB值
  8. 中国十六烷基磷酸钾行业市场供需与战略研究报告
  9. fsck.ext3:unable to resolve 'LABLE=/home'
  10. AI修图市场潜力大,分析全方位
  11. 什么是等级保护?等保二级和三级的区别?
  12. TP5简单实现类似京东淘宝多级商品筛选功能。
  13. k开头的英文单词计算机专业,英语单词k字头
  14. linux系统英语词汇大全,linux系统中常命令和英语词汇.docx
  15. 攻防世界逆向高手题之dmd-50
  16. 免费手机号码归属地API接口 查询手机号码归属地信息
  17. Unity3D_(Shuriken粒子系统)制作简单的烟花爆炸效果
  18. 谷歌机器学习规则要点简析:43条黄金法则
  19. 计算机应用模拟卷,计算机应用期末模拟试卷B卷
  20. 【MFC】工具条(16)

热门文章

  1. termux python turtle_如何在termux上安装Python的turtle库?
  2. [视频编码] BD-rate和BD-PSNR
  3. Java8新特性 方法引用(三)
  4. Mysql中使用mybatis中sql语句写法操作
  5. 朗豫:储备池和借贷是MOV重点发力的方向
  6. 2.shel脚本l知识点学习一
  7. educoder平台+大数据从入门到实战+14个模块习题
  8. 将网页上的MathJax复制到word中
  9. 吐血整理 | 肝翻 Linux 同步管理所有知识点
  10. 芯动力——硬件加速设计方法——学习笔记(1)