资讯详情

stc12c5a60s2使用片内AD转换

#include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sfr adc_contr=0xbc;//adc控制寄存器,不可位寻址,用或运算来设置 sfr adc_res=0xbd;//转换结果寄存器,高八位 sfr adc_low2=0xbe;//转换结果寄存器,低两位 sfr p1asf=0x9d;//设置p1的那一口为输入口,不可位寻址. //以下都是控制寄存器的各位地址 #define adc_power 0x80;//adc电源,第7位 #define adc_flag 0x10;//转换结束标志位,第4位 #define adc_start 0x08;//转换开始,第3位 #define adc_speedll 0x00;//速度位,第5,6位 #define adc_speedl 0x20; #define adc_speedh 0x40; #define adc_speedhh 0x60; #define adc_chs 0x00;//输入通道为第p1.0,1,2,3三位可设置p10-p17 //位定义完成

sbit duan=P2^6; sbit wei=P2^7; long unsigned int a,shu; uint b,wan,qian,bai,shi,ge,adc_finished;//转换结束标志 uchar code Temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void yanshi() { uchar i,j; for(i=5;i>0;i--) for(j=110;j>0;j--); } void adcinit()//adc初始化函数 { p1asf=0x01;//设置p10 为ad转换输入口 adc_contr=0xe0;//打开电源,设最高速度 //adc_contr=adc_power|adc_speedh|adc_chs;//电源X0000000,速度0XX00000 //通道:00000XXX yanshi(); adc_contr|=adc_chs;//设置频道 }

void fenshu() {

shu=a; wan=shu/10000; shu=shu%10000; qian=shu/1000; shu=shu%1000; bai=shu/100; shu=shu%100; shi=shu/10; ge=shu%10; } void xianshi() { P0=Temp[ge]; duan=1; duan=0; P0=0xff; P0=0x7f; wei=1; wei=0; P0=0x00;

yanshi(); P0=Temp[shi]; duan=1; duan=0; P0=0xff; P0=0xbf; wei=1; wei=0;

yanshi(); P0=Temp[bai]; duan=1; duan=0; P0=0xff; P0=0xdf; wei=1; wei=0; yanshi(); P0=Temp[qian]; duan=1; duan=0; P0=0xff; P0=0xef; wei=1; wei=0; }

void main() { adcinit(); adc_res=0; adc_low2=0; while(1) { adc_contr|=adc_start;//启动ad转换,置1为起动,转换结束后自动置0 yanshi(); adc_finished=0; while(adc_finished==0) { adc_finished=adc_contr&adc_flag;//检测是否转换结束,没结束一直等 }

adc_contr=adc_contr&0xef;//转换结束标志清零 //也可写成

a=adc_res*4+adc_low2; adc_contr|=adc_start; yanshi(); fenshu(); xianshi(); } }

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台