电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

stc12C5A60S2内部AD应用VIP免费

stc12C5A60S2内部AD应用_第1页
1/13
stc12C5A60S2内部AD应用_第2页
2/13
stc12C5A60S2内部AD应用_第3页
3/13
系统说明:本人想用STC12C5A60S2自带的A/D对电源电压进行检测(暂定3.3V),晶振:12M,电压从P1.0口输入,检测后的电压值在1602上进行显示,附上硬件大致原理图,硬件部分是照STC12C5A60S2芯片资料上设计,大家看看有错没? 硬件原理简图 (原文件名:clip_image001.gif) 程序的A/D部分也是从官网资料上搬下来的,只自己稍微改了一下对读取到的A/D转换结果的数据处理,液晶部分是前阵子写的搬过来的。大家帮我看看哪出问题了? 程序如下: #include #include "intrins.h" #define uchar unsigned char #define uint unsigned int uchar Vo; //A/D转换后换算的电压值 /*Declare SFR associated with the ADC */ sfr ADC_CONTR = 0xBC; //ADC control register sfr ADC_RES = 0xBD; //ADC high 8-bit result register sfr 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 uchar tCount; sbit RS = P0^4; sbit RW = P0^5; sbit EN = P0^6; void DelayMS(uint ms) { uint i; while(ms--) { for(i=0;i<120;i++); } } /*---------------------------- Software delay function ----------------------------*/ void Delay(uint n) { uint 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 } /*----...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

stc12C5A60S2内部AD应用

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部