求STC12C5204单片机AD功能如何使用,例如,用其中一个I/O做为AD采样一个2V左右的电压,并通过数码管显示

作者&投稿:希德 (若有异议请与网页底部的电邮联系)
STC15F2K60S2系列单片机的AD 中的P1ASF 寄存器与ADC_CONTER里面的CHS2 CHS1 CHS0 功能是否冲突~

P1ASF 寄存器,是为了设置 那几个 I/O 用来作 AD 转换用的,一次设置完成就可以了。
ADC_CONTER 的CHS2 CHS1 CHS0,是为了选择 读取那一路 AD 用的,
即 选择那一路 进行 AD 转换 ,并且读取 转换后 的数据,
因为 单片机 内部 只有 一个 AD 转换电路, 8 路 AD 是进行 选通 选择的。
没有 冲突的问题,当然你要理解了,使用起来就得心应手了。
可以 看看 AD 转换的实例,官网上有,数据手册是也有的。


STC 一般引脚都差不多~ P1,2,3,4口为I/O口 XTAL1.2为晶振 GND为地 VCC 电源正 RET 复位电路 其余可以不用管~

//本程序主要演示了
//1、12864液晶的编程与使用,包括显示定位、4位整数、显示浮点数等
//2、STC12C5A32S2单片机的ADC 采样功能(以第0、1通道为例)
//
//注:本示例仅仅演示如何进行ADC 和显示,每ADC 一次就显示一次,实际应用时,
//应多次ADC 并进行相应处理,比如取平均值后,才能得到比较稳定的AD 值
//广西民族大学物电学院李映超2010.5.26
/* 板子的硬件连接
1、1602液晶显示模块的连接:RS:P2.4、EN:P2.5、数据口: P0
2、蜂鸣器:P2.3 低电平有效(发出声音)
3、继电器:P2.2 低电平有效(继电器吸合、两输出脚短路)
4、18B20数据输出脚(DQ):P2.1
5、红外遥控输出脚:P2.0
6、直流电压精密可调电阻输出:P1.0 可通过跳线帽断开
7、光敏电阻:P1.1 可通过跳线帽断开
8、按键:均通过二极管连接到P3.2(外部中断0口),低电平有效,下降沿触发
K0:P3.3、K1:P3.4、K2:P3.5、K3:
P3.6、K4:P3.7
9、24C02连接:
SDA:P2.7 (上拉有发光二极管,低电平亮)
SCL:P2.6 (上拉有发光二极管,低电平亮)
*/
#include <reg52.h>
#include<intrins.h>
#include<lcd12864s.h>
#define uint unsigned int
#define uchar unsigned char
sbit light=P2^7;//定义工作指示灯与单片机的连接脚

//---------与STC12C5A32S2单片机ADC 相关的寄存器声明------------------
sfr P1ASF =0x9d; //P1口模数转换功能控制寄存器
sfr ADC_CONTR =0xbc; //AD 转换控制寄存器
sfr ADC_RES =0xbd; //AD 转换结果寄存器高
sfr ADC_RESL =0xbe; //AD 转换结果寄存器低
sfr AURX1 =0xa2; //AD 转换结果存储方式控制位
//------------------------------------------------------------------
//P1ASF 寄存器:8位,对应P1口8根口线,用于指定哪根口线用作ADC 功能
//哪个口用作ADC 就应置相应的位为“1”,注意:不能位寻址
//------------------------------------------------------------------
#define ADC_POWER 0x80 //ADC 电源开
#define ADC_SPEED 0x60 //设为90个时钟周期ADC 一次
#define ADC_START 0x08 //ADC 启动控制位设为开
#define ADC_FLAG 0x10 //ADC 结束标志位
/*
ADC_CTRL 寄存器:
ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_STAR CHS2 CHS1 CHS0
1 2 3 4 5 6 7 8
第1 位: =1 打开ADC 电源;=0 关闭ADC 电源; ADC 前要一定要打开
第2-3位: =1 1 90个时钟周期ADC 一次; =1 0 180个时钟周期ADC 一次;
=0 1 360个时钟周期ADC 一次; =0 0 540个时钟周期ADC 一次;
第4位: ADC 结束标志位,每次ADC 结束时自动=1,需要用软件清零才可以进行下一次ADC
第5位: ADC 启动控制位,置“1”则ADC 转换开始,转换结束后为0
第6-7-8位:ADC 通道选择000-->P1.0 ........111-->P1.7
*/
//-------------------------------------------------------------
void ADC_int(uchar n) //第n 通道ADC 初始化函数
{
n&=0x07; //确保n=0----7通道
AURX1|=0x04; //转换结果存储格式:数据的高2位放ADC_RES,低8位放ADC_RESL
P1ASF=1<<n; //将P1.n 设为ADC 采样功能
}
//---------------------------------------------------------------

uint ADC_GET(unsigned char n) //第n 通道ADC 采样函数
{
unsigned int adc_data;
n&=0x07; //确保n=0----7通道
ADC_RES=0; //清零
ADC_RESL=0; //清零
ADC_CONTR=0; //清零,以便重构
ADC_CONTR|=(ADC_POWER|ADC_SPEED|n|ADC_START); //打开AD 转换电源,设定转换速度、设定通道号、AD 转换开始
_nop_();
_nop_();
_nop_();
_nop_();
_nop_(); //延时4个时钟周期左右
while(!(ADC_CONTR&ADC_FLAG)); //等待转换结束=0x10 ADC_FLAG 位=1
adc_data=(ADC_RES&0x03)*256+ADC_RESL; //转换结果计算,取高位结果存储器的低2位+ 低位结果存储器
ADC_CONTR&=~ADC_FLAG;//清零转换结束标志位(ADC_FLAG 位=0)
return adc_data; //返回ADC 的值(0----1023)
}

void lcd_4_char(unsigned int data_4_char) //在1602LCD 上显示一个4位的整数
{
unsigned char lcd_table[4];
lcd_table[0]=data_4_char/1000; //获得千位的数字
lcd_table[1]=data_4_char%1000/100; //获得百位的数字
lcd_table[2]=data_4_char%100/10; //获得十位的数字
lcd_table[3]=data_4_char%10; //获得个位的数字
Lcd_WriteData(lcd_table[0]+0x30); //显示千位
Lcd_WriteData(lcd_table[1]+0x30); //显示百位
Lcd_WriteData(lcd_table[2]+0x30); //显示十位
Lcd_WriteData(lcd_table[3]+0x30); //显示个位
}

void main()

{ unsigned int ad_0,ad_1;
ad_0=0;
ad_1=0;
Lcd_Init(); //12864液晶模块初始化
light=0;delayms(1000);light=1; //灯闪一下,表示上电准备工作
ADC_int(0); //ADC 通道0初始化
ADC_int(1); //ADC 通道1初始化
while(1)
{

ad_0=ADC_GET(0);//第0通道进行ADC 采样
ad_1=ADC_GET(1);
hanzi_disp(0,1,"单片机转换");
hanzi_disp(1,0,"通道0:");
lcd_4_char(ad_0);
//while(1){;};
//delay_ms(30000);
hanzi_disp(2,0,"通道1:");
lcd_4_char(ad_1);
hanzi_disp(3,1,"--------");
//delayms(1000); //适当延时后再进行下一循环

}
}

你也可以上其网站上面
有很多示范程序的,这样比较标准


芯片解密高手,兹重金求STC12LE5A16S2芯片解密高手,谢谢!
STC12C系列 STC12C5402、STC12C5404、STC12C5406、STC12C5408、STC12C5410、STC12C5412、STC12C5404AD、STC12C5406AD、STC12C5408AD、STC12C5410AD、STC12C5412AD、STC12C1052、STC12C2052、STC12C4052、STC12C5052、STC12C2052AD、STC12C4052AD、STC12C5052AD STC12LE系列 STC12LE5404、STC12LE...

...STC12C5A60S2-35I-PDIP40 STC12C4052AD-35I-DIP20
这个公式其他电压也同样能用,比如用220V市电点亮二极管,则:311伏特(换算有效值)除以5毫安,需要62.2K欧姆的电阻,功率是5毫安*311伏特,1555毫瓦,1.55瓦,所以四分之一瓦的电阻不能用,但一般都是接200K的,降低电流和功率。最后,使用单片机灌电流的时候(输出低),单片机IO口最大灌电流20毫安...

STC12C5410AD单片机输出是几位? 谢谢了
2. 工作电压:STC12C5410AD 系列工作电压:5.5V - 3.5V(5V 单片机)\/ 3.8V - 2.2V(3V 单片机)3. 工作频率范围:0 - 35 MHz,相当于普通8051 的 0~420MHz 4. 用户应用程序空间1K \/ 2K \/ 4K \/ 6K \/ 8K \/ 10K \/ 12K 字节...5. 片上集成 512 字节 RAM(STC12C5410AD 系...

STC12C5410AD系列的51单片机的问题?
去宏晶的官网有得下,我这好像只有2052系列的头文件。1602液晶初始化程序都一样的。贴一段给你。include<c8051f020.h> define uchar unsigned char define uint unsigned int sbit lcdrs=P2^5;sbit lcden=P2^7;sbit lcdwr=P2^3;code table[]="Holld World!1602"void write_com(uchar com){ lc...

我只会51单片机,现在想做一个旋转时钟。
我现在用的STC12C5410AD,内部带一个10位精度的AD,flash程序空间10K。像我用的这一个,同样是STC5410AD,他有20引脚和28引脚的不同封装形式,就看你的需要了,需要多少管脚的就买多少管脚的,反正片子都是一样的。如果你想买的话直接到宏晶的网站打个电话问问就行,STC单片机也不贵,不超5块钱...

重金悬赏STC15F2K56S2芯片解密技术高手,谢谢。不行的别来,我已经找了...
STC15F2K56S2这个芯片是一个非常难解密的芯片来的,因宏晶依托当地政府之力,对加密这一块加大了技术,加密是之前的老版本芯片无法比拟的,又贴牌美国的一家公司,所以这个芯片解密研究有一定的困难性,深圳橙盒科技以前不是有做过宏晶STC10\\STC11\\ST12芯片解密吗?可以解密以前的,这些应该也是问题不大...

stc单片机下载及冷启动步骤
哦,不是很懂,没有串口,笔记本,我是看《爱上单片机》这本书的,上面介绍用usb转uart,我没看清买的usb转ttl,问下他俩有什么不同 ,是不是应该再买个usb转UART,stc12c2052ad是不是内置晶振,外面我也再接了一个晶振了也不行啊,或者推荐下从新买点别的什么能下载 更多追问 本回答由提问者推荐 举报| 答案纠错...

STC单片机内置EEPROM资料
STC官方测试通用程序(读写的端口命令字,不同的片子不同,资料上有)\/ --- STC International Limited --- 一个完整的EEPROM 测试程序,用宏晶的下载板可以直接测试 STC12C5AxxAD 系列单片机 EEPROM\/IAP 功能测试程序演示 STC12C52xxAD 系列单片机 EEPROM\/IAP 功能测试程序演示 STC11xx 系列单片机 EEP...

通用数字PID调节器设计
D5:超过限定值信号灯D6:低于限定值信号灯S4:设定值增加按钮S5:设定值减少按钮S6:修改手动变量按钮S7:修改手动变量按钮附录[1] 主程序—MAIN.C#include"adconver.h"#include"delay.h"#include"dis7281.h"#include"STC12C5410AD.H"#include"main.H"#include"subkey0.h"#include"subkey1.h"#include"sub...

STC单片机程序下载问题
是什么时候出现的问题 。1、是你以前下载程序都好 ,然后突然坏了。2、还是新的下载线没试过 。这种情况就是典型的,rs232器件 没在工作状态。如果是第一种情况 那么就是串口芯片坏了(虽然你保证芯片正常,那下别的信号单片机行吗??),或则其他地方 没接触号等。连握手都没提示就是串口芯片部...

当阳市13768086958: stc12c5204ad 双插直排每个引脚的功能 标注p1 - p3和vcc gnd 还有晶振引脚 -
亢浅氟比: http://www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC12C5A60S2-5202AD.pdf 第八页~

当阳市13768086958: STC12LE5204AD(3.3V单片机)——AD的参考电压是多少,是3.3V吗? -
亢浅氟比: STC12C5204AD 与 STC12LE5204AD 只是电源电源 不同,基本功能是一样的 用 AD 功能 其测量基准都为电源电压,测量最大值也是 电源电压. 如果 同时检测 3 V 电压 得到的数值 5V单片机 为 135.6 ,3V单片机 为 256 如果 电源 3.3V 则为 232.7,其结果应该是 (256/VCC)*被检测电压 256 是 8位AD, 如果10位AD 为1024, 12位AD 为4096

当阳市13768086958: 求一个1分钟的定时报警程序,单片机是STC12C5204AD,只要能定时报警就可以了,急用.
亢浅氟比: void Delay100ms() //@11.0592MHz { unsigned char i, j, k; _nop_(); _nop_(); i = 5; j = 52; k = 195; do { do { while (--k); } while (--j); } while (--i); } 循环调用600次大概一分钟

当阳市13768086958: STC12c5204AD 20脚单片机能直接驱动12颗LED吗 -
亢浅氟比: 可以,就是亮度你自己接不接受而已.一般来说只接1个LED,保证达到15mA以上,2个LED的话提供个每个LED的灌电流会下降1~2mA,每增加一颗LED单颗LED的灌电流就下降1~2mA,所有驱动10颗以上的LED,单颗LED的驱动电流就肯定小于10mA. 如果你只是做LED控制,可以用普通的4位单片机或者专门的LED驱动IC就好了.

当阳市13768086958: 怎么仿真stc12单片机的AD转换功能 -
亢浅氟比: STC 官网 有 STC系列单片机 A/D 转换的演示程序C/汇编 ,用下载板 和 串口调试程序,观察 A/D 转换程序 发送到 串口调试窗口 的数据.

当阳市13768086958: STC单片机AD转换程序 -
亢浅氟比: ;************************************ ;芯片 STC12C5412AD * ; 十位A/D转换 * ; A/D输入端=P1.0口 * ; * ;************************************AJMP P10ORG 33H P10: NOPMOV 091H,#01H;---置p1.0为高阻输入MOV 092H,#00HMOV 0C6H...

当阳市13768086958: 低电压的STC单片机要有AD功能,有PWM功能,有SPI功能. -
亢浅氟比: STC12C5AXXS2这个系列是有的,你找下LE的就是低功耗3.3V的,STC的便宜,性价比高,还是可以的

当阳市13768086958: 带AD转换器外围没有晶振的20脚单片机有哪些
亢浅氟比: 20P带AD功能的单片机,一般是STC系列的包括:STC12C2052AD,STC12C5404AD,STC12C5202AD,STC12C5604AD.....这些单片机有内置RC振荡,无须晶振,1脚本来是复位脚,同时使用内部复位电路时,1脚可以直接GND.

当阳市13768086958: stc12c5204ad单片机对sht30的驱动程序 -
亢浅氟比: 说法都对.如果每次亮不超过5个,符合要求.可以用74HC595串行锁存一下,两片可以带16个.用3个IO口 或用74HC573并行锁存,也是两片带16个,要用8+2个口

当阳市13768086958: STC12C5204AD单片机AD转换程序为什么只有上电才运行? -
亢浅氟比: 下载程序能正常发数,但单片机重新上电后就不能发数实在不明白为什么.请大家帮忙分析一下:而

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网