
宏晶科技: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 转换控制特殊功能寄存器
CHS2
CHS1
CHS0
Analog Input Channel Select
模拟输入通道选择
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
ADC_START: 模数转换器(ADC) 转换启动控制位,设置为“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 使用 , 可选此模式
SPEED1 ,SPEED0 :模数转换器转换速度控制位
SPEED1
SPEED0
A / D 转换所需时间
1
1
210 个时钟周期转换一次
,
CPU 工作频率
20 MHz 时
,
A / D 转换速度约
100 KHz
1
0
420 个时钟周期转换一次
0
1
630 个时钟周期转换一次
0
0
840 个时钟周期转换一次
ADC_POWER: ADC 电源控制位。
0 :关闭 ADC 电源;1 :打开 A/D 转换器电源
启动 AD 转换前一定要确认 AD 电源已打开,AD 转换结束后关闭 AD 电源可降低功耗,也可不关闭。
初次打开内部 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。