导航:首页 > 操作系统 > STC单片机AD

STC单片机AD

发布时间:2022-07-05 01:15:27

1. STC单片机自带AD代码问题

同学,你的问题有问题
你是想问STC系列单片机的AD问题还是串口问题

你上面这段程序是51单片机串口初始化程序而不是AD程序。

51单片机串口初始化为
void COM_Init(void)
{
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20;
PCON |= 0x80;
TH1 = 0xFD;
ES=1;EA=1;
TR1 = 1;
TI = 1;
}

AD转换程序
//定义与ADC有关的特殊功能寄存器
sfr ADC_CONTR =0xC5;
sfr ADC_DATA =0xC6;
sfr ADC_LOW2 =0xBE;
sfr P1M0 =0x91;
sfr P1M1 =0x92;
sbit p20 =P2^0;

void STC90CxxAD_delay(int timer) //延时函数
{
while(timer--);
}

int Ad_Change(char channel) //AD转换
{
int AD_Result_Temp = 0 ;
P1 = 0xff; //将P1口置高,为A/D转换作准备
ADC_CONTR = ADC_CONTR|0x80; //1000,0000打开A/D转换电源
P1M0 = 0x03; //0000,0011用于A/D转换的P1.x口,先设为开漏
P1M1 = 0x03; //0000,0011P1.0--P1.1先设为开漏。断开内部上拉电阻
STC90CxxAD_delay(20); //20

ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
ADC_CONTR = ADC_CONTR|(channel); //设置当前通道号

STC90CxxAD_delay(1); //延时使输入电压达到稳定
ADC_DATA = 0; //清A/D转换结果寄存器
ADC_LOW2 = 0;
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换
do { ; }
while((ADC_CONTR & 0x10)==0); //0001,0000等待A/D转换结束

ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换
AD_Result_Temp = ((AD_Result_Temp|ADC_DATA)<<2)|(ADC_LOW2&0x03);
//保存返回AD转换的 结果
STC90CxxAD_delay(1); //
return AD_Result_Temp;
}

已调试通过,望对你有用

2. STC单片机内部AD转换的问题

STC是10位AD转换,结果存在高八位和低两位两个寄存器里
ADC_RES : 0BDH ;ADC高八位转换结果
ADC_LOW2 : 0BEH ;ADC低二位转换结果
低两位就2位最大就3(11)其余位都是无效的,所以处理时需要做如下处理。
unsigned int res_ad;
res_ad=ADC_RES<<8+ADC_LOW2&0x03;

3. 如何用stc单片机内部ad采集多路交流信号

用stc单片机内部ad采集多路交流信号,有两种办法:
一、用两个AD转换芯片,两路模拟量分别接一个。用单片机控制两个AD芯片同时启动转换,这样基本可以实现采集到同一时刻的两路模拟量值。
二、用两个采样保持器(LF398),来暂时保存模拟量的瞬时值。两个保持器后面接模拟多路转换器,模拟多路转换器后面接一个AD转换器。过程是这样的:要采集之前先给两个采样保持器一个保持信号,紧接着选择多路开关通道,紧接着启动AD转换器。分别选择多路开关的两个通道,来取得两路模拟量的值。因为有采样保持器的存在,可以保证采集到的模拟量是同一时刻的。
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

4. 请教:关于STC单片机AD外围电路

呵呵
为你解答
单片机几种常见的外围电路及作用:
1键盘显示接口电路:
用于下达用户命令和传送、修改单片机内部的数据、参数,同时可以将运算结果送显示器上显示。
可用
8279或74LS164芯片进行键盘、显示电路的扩展。
2模拟量输入通道:
数据采集和测量,将工业现场的非电量转换成电量(如电压、电流),再经过模数转换器转换为数字量送给单片机。
一般由传感器、运算放大器、多路开关、模数转换器等组成。
3模拟量输出通道:
将计算的结果数字量经数模转换器转换成模拟量(电压、电流)反过来去控制工业的现场设备。
4
单片机与电脑的通讯接口电路:
完成单片机与电脑之间的连接,采用串口通讯,进行单片机与电脑之间的数据信息传送。
5
继电器驱动电路:
完成对继电器线圈的控制,驱动继电器动作。
还有一些
就不再一一例举了
如满意
请选择:满意回答

5. 关于STC单片机AD转换和显示程序。

重点不在算法,重点是会AD_init() 和AD_get(channel);
会初始化和启动AD转换并读取转换结果
至于换算是根据自己电路情况确定的,由于计算时采用过多的浮点型变量会占用较多内存,造成内存不足,因此有除法时常采用整形变量进行计算,运算时为了保持尾数不丢失,需把被除数扩大100倍或1000倍,如整数123/100=1,小数部分丢失了,为得到1.23这个结果,需把123扩大100倍,变成12300,12300/100=123.0,然后将小数点向左移2位(缩小100倍),即得1.23这就是定(小数)点计算
LedCtrl = LedCtrl & 0xdf大概就是一次选通一个数码管,7f df ef bf每次只有一位是0

6. STC单片机AD基准电压问题

这是一种聪明的解决办法,对于一些不提供基准输入引脚,只能以电源电压为基准的CPU。该方法消除了电源电压带来的误差。
具体是在多路AD的某一路连接一个高精度电压基准(例如1.25V)。测量时,先测量(用AD)该基准,得到该基准电压的对应测量值。例如0xc8,十进制是200。再去测量被测电压,比如得到0x190,十进制是400。则实际电压应该是1.25*400/200=2.5V。

7. STC12C5A60S2单片机的AD能检测到最小电压是多少

STC12C5A60S2单片机的AD是十位的,最大数是1023,对应的电压是最高电压5V,那每一档数对应的电压是5/1023=0.004888V,这就是能检测到的最小电压了。

8. 求助stc单片机ad不稳定

这并不是stc单片机ad不稳定。任何一款A/D转换器芯片工作时都 是一样的。
在显示转换结果时,最低的2位数,或一位数显示都是不稳定,这是非常正常的事,如果不变化了,反倒是不对了,说明A/D转换精度低。主要是因为模拟电压本身不可能是绝对稳定的,导致转换结果不可能是绝对不变的。加之,转换精度高,所以,才出现这种情况的。
除去最低2位数,其余高位显示应该是稳定的,就行。对于最低位可以忽略,或采用多次转换,然后计算平均值。

9. STC单片机芯片哪个型号自带8位AD

STC带AD的一般都是10位的
比如
stc12c5410AD(28脚)
STC89LE516
AD(40脚)
你可以到
宏晶科技
官方网址看一下
希望对你能有帮助

阅读全文

与STC单片机AD相关的资料

热点内容
堵车如何缓解压力 浏览:15
喜鹊快贷app怎么了 浏览:263
海龟编辑器积木编程怎么安装 浏览:185
程序员理发店生意怎么样 浏览:603
程序员罗技 浏览:180
软考初级程序员课程2021下载 浏览:491
杭州程序员奶奶 浏览:880
不听命令造成错误 浏览:981
kool系统源码 浏览:610
流氓app在哪里看 浏览:98
域名购买了怎么指向服务器 浏览:121
安卓手机如何让照片颜色反转 浏览:859
怎么下载卓睿安手机版 浏览:514
h3crange命令 浏览:468
php前景和python 浏览:338
php压缩图片内存大小 浏览:495
在哪里可以查看云服务器的信息 浏览:70
python读取非txt文件 浏览:799
艾莫迅用什么编程软件好 浏览:227
android文件存储读取 浏览:214