宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商 www.MCU-Memory.com STC12C5410AD 系列 1T 8051 单片机中文指南
59
Mnemonic
Add Name
7
6
5
4
3
2
1
0
Reset Value
ADC_CONTR C5h A/D 转换控制寄存器
ADC_POWER SPEED1 SPEED0
ADC_FLAG
ADC_START CHS2
CHS1 CHS0 0xx0,0000
ADC_DATA
C6h A/D 转换结果寄存器,高8位
-
-
-
-
-
-
-
-
xxxx,xxxx
ADC_LOW2
BEh A/D 转换结果寄存器,低2位 -
-
-
-
-
-
-
-
xxxx,xxxx
A/D 转 换 控 制 寄 存 器
ADC_POWER SPEED1
SPEED0
ADC_FLAG ADC_START CHS2 CHS1 CHS0 0xx0,0000
ADC_CONTR 特殊功能寄存器
: A/D 转换控制特殊功能寄存器
C H S 2
C H S 1
C H S 0
A n a l o g I n p u t C h a n n e l S e l e c t
模
拟
输
入
通
道
选
择
0
0
0
选
择
P 1 . 0 作
为
A / D 输
入
来
用
0
0
1
选
择
P 1 . 1 作
为
A / D 输
入
来
用
0
1
0
选
择
P 1 . 2 作
为
A / D 输
入
来
用
0
1
1
选
择
P 1 . 3 作
为
A / D 输
入
来
用
1
0
0
选
择
P 1 . 4 作
为
A / D 输
入
来
用
1
0
1
选
择
P 1 . 5 作
为
A / D 输
入
来
用
1
1
0
选
择
P 1 . 6 作
为
A / D 输
入
来
用
1
1
1
选
择
P 1 . 7 作
为
A / D 输
入
来
用
CHS2 / CHS1 / CHS0:模拟输入通道选择,CHS2 / CHS1 / CHS0
A D C _ S T A R T : 模数转换器( A D C ) 转换启动控制位,设置为“1”时,开始转换, 转换结束后为 0 。
ADC_FLAG: 模数转换器转换结束标志位,当 A/D 转换完成后,ADC_FLAG = 1,要由软件清 0。
ADC_DATA / ADC_LOW2 特殊功能寄存器
: A/D 转换结果特殊功能寄存器
模拟 / 数字转换结果计算公式如下:
结果
(
ADC_DATA[7:0],ADC_LOW2[1:0]
) = 1024 x Vin / Vcc
Vi n 为模拟输入通道输入电压,V c c 为单片机实际工作电压,用单片机工作电压作为模拟参考电压。
STC12C5410AD 系列带 A/D 转换的单片机在 P1 口,有 8 路 10 位高速 A/D 转换器, 速度可达 100KHz。
P1.7 - P1.0 共 8 路电压输入型 A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位
后 P1 口为弱上拉型 I/O 口,用户可以通过软件设置将 8 路中的任何一路设置为 A/D 转换,不需作为 A/D 使
用的口可继续作为 I/O 口使用。需作为 A/D 使用的口需先将其设置为高阻输入或开漏模式。在 P1M0、P1M1
中对相应的位进行设置。
A/D 转换 及 A/D 转换测试程序
P1M0【 7: 0】
地 址 : 91h
P1M1【 7: 0】
地 址 : 92h
I/ O 口 模 式 ( P1.x 如 做 A/D 使 用 , 需 先 将 其 设 置 成 开 漏 或 高 阻 输 入 )
0
0
准 双 向 口 ( 传 统 8051 I/O 口 模 式 ) ,
灌 电 流 可 达 20mA , 拉 电 流 为 230µA
0
1
推 挽 输 出 ( 强 上 拉 输 出 , 可 达 20mA, 尽 量 少 用 )
1
0
仅 为 输 入 ( 高 阻 ) , 如 果 该 I/O口 需 作 为 A/D使 用 , 可 选 此 模 式
1
1
开 漏 (Open Drain) , 如 果 该 I/O口 需 作 为 A/D 使 用 , 可 选 此 模 式
S P E E D 1 ,S P E E D 0 :模数转换器转换速度控制位
S P E E D 1
S P E E D 0
A / D 转
换
所
需
时
间
1
1
2 1 0 个
时
钟
周
期
转
换
一
次
,
C P U 工
作
频
率
2 0 M H z 时
,
A / D 转
换
速
度
约
1 0 0 K H z
1
0
4 2 0 个
时
钟
周
期
转
换
一
次
0
1
6 3 0 个
时
钟
周
期
转
换
一
次
0
0
8 4 0 个
时
钟
周
期
转
换
一
次
ADC_POWER: ADC 电源控制位。
0 :关闭 A D C 电源;1 :打开 A / D 转换器电源
启动 A D 转换前一定要确认 A D 电源已打开,A D 转换结束后关闭 A D 电源可降低功耗,也可不关闭。
初次打开内部 A / D 转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动 A / D 转换
建议启动 A / D 转换后,在 A / D 转换结束之前,不改变任何 I / O 口的状态,有利于高精度 A / D 转换
ADC_DATA
C6h A/D 转换结果寄存器,全部8位有效,为10位A/D转换结果的高8位
- - - - - - - - xxxx,xxxx
ADC_LOW2
BEh A/D 转换结果寄存器,只有低2位有效,为10位A/D转换结果的低2位
x x x x x
x - - xxxx,xxxx
取 ADC_DATA 的 8 位为 ADC 转换的高 8 位,取 ADC_LOW2 的低 2 位为 ADC 转换的低 2 位,则为 10 位精度。
如果舍弃 ADC_LOW2 的低 2 位,只用 ADC_DATA 寄存器的 8 位,则 A/D 转换结果为 8 位精度。
结果
ADC_DATA[7:0]
= 256 x Vin / Vcc
不管是 A/D 转换完成后由该位申请产生中断,还是由软件查询该标志位 A/D 转换是否结束,
当 A/D 转换完成后,ADC_FLAG = 1,一定要软件清 0。