51学习库(4)--内部AD
来源:互联网 发布:卡密源码 编辑:程序博客网 时间:2024/04/27 19:03
学过51单片机的回过头来都会觉得51还是比较简单的,在此我将贴出在我的学习过程中,把对各种外设所进行的操作,封装成函数库的形式,以供新手学习。
注:使用的单片机是stc12c5a60s2,该系列单片机属于加强51,在运行速度上是普通51的8-12倍,有关时序的操作需要加以注意。
注2:该单片机内部有AD,可以直接使用内部AD进行模数转化
使用方法:
main函数中:float num = GetADCResult(0); //num即P1^0口的电压值,可用数码管将该浮点数显示出来,把P1^0口接3.3V,就可以测得3.3V的电压
申明:本系列全部例程通过单片机开发板,实验亲测有效!
/* AD *//*Declare SFR associated with the ADC */sfr ADC_CONTR = 0xBC; //ADC control registersfr ADC_RES = 0xBD; //ADC high 8-bit result registersfr ADC_RESL = 0xBE; //sfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register sfr P1ASF = 0x9D; //P1 secondary function control register /*Define ADC operation const for ADC_CONTR*/#define ADC_POWER 0x80 //ADC power control bit#define ADC_FLAG 0x10 //ADC complete flag 模数转换结束标志位#define ADC_START 0x08 //ADC start control bit 模数转换启动控制位//转换速度控制位SPEED0和SPEED1,共四种状态,对应四种转换速度#define ADC_SPEEDLL 0x00 //540 clocks #define ADC_SPEEDL 0x20 //360 clocks#define ADC_SPEEDH 0x40 //180 clocks#define ADC_SPEEDHH 0x60 //90 clocks/*----------------------------Software delay function----------------------------*/void Delay(unsigned int n){ unsigned int x; while (n--) { x = 5000; while (x--); }}/*----------------------------Initial ADC sfr----------------------------*/void InitADC(){ P1ASF = 0x01; //选择P1.0作为A/D输入通道 ADC_RES = 0; //清0 ADC_CONTR = ADC_POWER | ADC_SPEEDLL; //0x10|0x00=0x10:开电源和设置A/D转换速度 Delay(2); //ADC power-on and delay}/*----------------------------Get ADC result----------------------------*/float GetADCResult(unsigned char ch){ float Vo; ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;//0x00|0x00|ch|0x08:选择A/D输入通道,开始A/D转换 _nop_(); //Must wait before inquiry , _nop_(); //设置ADC_CONTR寄存器后需加4个CPU时钟周期的延时,才能保证值被写入ADC_CONTR寄存器 _nop_(); _nop_(); while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag ADC_CONTR &= ~ADC_FLAG; //Close ADC Vo=ADC_RES*5/256; //Return ADC result(为显示整数,这里将电压值扩大了十倍)return Vo;
0 0
- 51学习库(4)--内部AD
- AD学习笔记4
- STC12C5410AD内部AD
- K60内部AD性能
- C#学习记录(七)--------------AD操作
- provider bridge(802.1ad)学习总结
- AD PCF8591芯片学习(未完待续)
- PCF8591芯片以及AD学习(一)
- 排除AD站点内部的复制故障
- 排除AD站点内部的复制故障
- STC系列单片机内部AD的应用
- k60之内部AD模块转换
- k60之内部AD模块转换
- stm32 内部AD和DMA使用
- AD学习笔记1
- AD学习笔记2
- AD学习笔记3
- AD学习笔记5
- Mac卸载XLPlayer
- WebKit内核封装的网页浏览器/文件浏览器(Android)
- bootstrap建网站 如何实现导航栏不变 内容变
- SSM整合中的文件上传
- c++作业5
- 51学习库(4)--内部AD
- C++PRIMER第一轮复习第七章
- 基于FPGA的高效硬件除法器
- Linux下的tar压缩解压缩命令详解
- 通过公网IP访问云上的Hadoop集群
- java集合中对象某属性比较排序
- NS3 使用eclipse编辑器
- POJ 2342 Anniversary party(树状DP)
- Java中的数据结构(一):PCollection接口定义、PArrayList的实现