12单片机内部AD

  • stc89
    了解作者
  • C/C++
    开发工具
  • 46.3KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 5 积分
    下载积分
  • 0
    下载次数
  • 2022-05-27 23:09
    上传日期
STC12单片机内部AD模块,很好用的。
AD(内部).zip
  • AD(内部)
  • 程序文件
  • AD.h
    604B
  • AD.c
    1.6KB
  • main.c
    535B
  • 测试文件
  • Listings
  • main.lst
    1.8KB
  • LCD12864.lst
    6.7KB
  • 内部AD测试.m51
    16.8KB
  • AD.lst
    4.3KB
  • delay.lst
    2.1KB
  • Objects
  • delay.obj
    1.6KB
  • 内部AD测试.hex
    9.3KB
  • main.obj
    4.1KB
  • 内部AD测试
    17.8KB
  • AD.obj
    4.8KB
  • 内部AD测试.build_log.htm
    1.1KB
  • LCD12864.obj
    5.3KB
  • 内部AD测试.lnp
    173B
  • LCD12864.h
    724B
  • 内部AD测试.uvgui.CF0522
    90.9KB
  • 内部AD测试.uvproj
    14.8KB
  • delay.h
    463B
  • LCD12864.c
    2.7KB
  • 内部AD测试.uvopt
    6.7KB
  • 打印.txt
    2.6KB
  • delay.c
    720B
内容介绍
/**************************内部AD*********************************** *功能:内部AD转换功能的测试 *芯片:STC12C5A60S2(1T) *晶振:11.0592MHZ *时间:2020年10月24日 *引脚:P1.0 -- AD *******************************************************************/ /***************************AD.h************************************ #ifndef __AD_H_ #define __AD_H_ #include <STC12.h> #include <intrins.h> #include "delay.h" #define ADC_POWER 0x80 #define ADC_Rate_540 0x00 #define ADC_Rate_270 0x20 #define ADC_Rate_180 0x40 #define ADC_Rate_90 0x60 #define ADC_ADRJ 0x04 #define VCC 5.0 void AD_Init(void); float AD_Get_Res(unsigned char channel); #endif *******************************************************************/ /****************************AD.c*********************************** #include "AD.h" //AD初始化 //p1.0 0x01 p1.1 0x02 //p1.3 0x04 p1.4 0x08 //p1.5 0x10 p1.1 0x20 //p1.3 0x40 p1.4 0x80 void AD_Init(void) { //选择模拟AD口 P1ASF = 0x01; //0x00选择高八位低两位,0x04选择高两位低八位 AUXR1 = ADC_ADRJ; //0x80打开AD电源位,5~6位选择模数转换速度 //11(90时钟周期)10(180时钟周期)01(360时钟周期)00(540时钟周期) ADC_CONTR = 0x80| ADC_Rate_180; //ADC_CONTR 必须延时 _nop_(); _nop_(); _nop_(); _nop_(); } //AD值获取 //ADC_CONTR赋值要或上,不能直接赋值 //ADC_CONTR低三位选择通道:0x00~0x07对应模拟输入通道1~8 float AD_Get(unsigned char channel) { float res=0; ADC_CONTR |= channel|0x08; //通道选择,0x08打开AD转换 _nop_(); //ADC_CONTR 必须延时 _nop_(); _nop_(); _nop_(); while((ADC_CONTR&0x10) != 0x10); //AD转换完成标志位 ADC_CONTR &= 0xef; //标志位清零 _nop_(); //ADC_CONTR 必须延时 _nop_(); _nop_(); _nop_(); res = ADC_RES*256+ADC_RESL; //高两位左移八位加低八位 res = res/1024.0*VCC ; //电压转换计算公式 return res; } //AD值取平均 float AD_Get_Res(unsigned char channel) { unsigned char num; float res=0; for(num=0; num<100; num++) { res += AD_Get(channel) ; } ADC_CONTR &= 0xf7; //关闭AD转换 res = res/100.0; return res; } *******************************************************************/ /**************************内部AD*********************************** #include "AD.h" #include "LCD12864.h" #include "stdio.h" void main() { uchar a[20] = "\0"; LCD12864_Init(); AD_Init(); while(1) { sprintf(a,"AD: %.3f ",AD_Get_Res(0x00)); //通道一 LCD12864_Dis_Str(1, 1, a); } } *******************************************************************/
评论
    相关推荐
    • GPRS资料-STC12C5A60S2单片机
      GPRS资料-STC12C5A60S2单片机
    • STC12C5A60S2 单片机
      STC12C5A60S2 单片机 详细介绍,是读者很容易理解单片机原理
    • STC12C5A60S2单片机应用程序包
      STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机。它是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
    • STC12C5A60S2单片机PWM程序
      STC12C5A60S2单片机PWM程序 即脉宽调节输出 对学超级51有不小的帮助
    • stc12c5a60s2单片机两路pwm
      stc12c5a60s2单片机输出两路pwm走了很多弯路,发现一个很简单的程序,直接可以用的。
    • STC12C5A60s2单片机 AD实例
      STC12C5A60s2是一款强大的单片机。本文件加载12C5A60s2头文件后可以进行AD转换,经过本人测试,保证成功。
    • stc12c5a60s2单片机双串口通信
      stc12c5a60s2单片机双串口通信,可实现两个串口通信,通过单片机连接两个不同电脑的串口,实现两计算机的文字,命令通信,控制。
    • STC12C5A60S2单片机定时器实验程序
      自己整理的STC12C5A60S2单片机定时器实验程序,定时器0的3种模式,定时器1的三种模式,封装,适合初学51单片机的朋友
    • STC12C5A60S2单片机串口实验程序
      STC12C5A60S2单片机串口实验程序,串口1的1T模式,12T模式,串口2程序,封装串口,printf打印等例程,非常适合初学51单片机的朋友
    • STC12C5A60S2单片机PWM程序
      STC12C5A60S2芯片控制步进电机,可通过按键加速、减速。采用PID控制,因硬件不同,实际效果会有所偏差,微调即可。另附硬件原理图,引脚不同的自行修改。