ADC采样程序.docx
- 文档编号:8407982
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:29
- 大小:34.50KB
ADC采样程序.docx
《ADC采样程序.docx》由会员分享,可在线阅读,更多相关《ADC采样程序.docx(29页珍藏版)》请在冰豆网上搜索。
ADC采样程序
1./*********************************************************************************************
2.函数名:
8位A/D转换初始化函数
3.调 用:
Read (?
);
4.参 数:
输入的端口(0000 0XXX 其中XXX是设置输入端口号,可用十进制0~7表示,0表示P1.0,7表示P1.7)
5.返回值:
无
6.结 果:
开启ADC功能并设置ADC的输入端口
7.备 注:
适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)
8./**********************************************************************************************/
9.void Read_init (unsigned char CHA){
10. unsigned char AD_FIN=0; //存储A/D转换标志
11. CHA &= 0x07; //选择ADC的8个接口中的一个(0000 0111 清0高5位)
12. ADC_CONTR = 0x40; //ADC转换的速度(0XX0 0000 其中XX控制速度,请根据数据手册设置)
13. _nop_();
14. ADC_CONTR |= CHA; //选择A/D当前通道
15. _nop_();
16. ADC_CONTR |= 0x80; //启动A/D电源
17. DELAY_MS
(1); //使输入电压达到稳定(1ms即可)
18.}
19./**********************************************************************************************/
20./*********************************************************************************************
21.函数名:
8位A/D转换函数
22.调 用:
?
= Read ();
23.参 数:
无
24.返回值:
8位的ADC数据
25.结 果:
读出指定ADC接口的A/D转换值,并返回数值
26.备 注:
适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)
27./**********************************************************************************************/
28.unsigned char Read (void){
29. unsigned char AD_FIN=0; //存储A/D转换标志
30. ADC_CONTR |= 0x08; //启动A/D转换(0000 1000 令ADCS = 1)
31. _nop_();
32. _nop_();
33. _nop_();
34. _nop_();
35. while (AD_FIN ==0){ //等待A/D转换结束
36. AD_FIN = (ADC_CONTR & 0x10); //0001 0000测试A/D转换结束否
37. }
38. ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 关闭A/D转换,
39.return (ADC_DATA); //返回A/D转换结果(8位)
40.}
41./**********************************************************************************************/
/*********************************************************************************************
函数名:
8位A/D转换初始化函数
调用:
Read(?
);
参数:
输入的端口(00000XXX其中XXX是设置输入端口号,可用十进制0~7表示,0表示P1.0,7表示P1.7)
返回值:
无
结果:
开启ADC功能并设置ADC的输入端口
备注:
适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)
/**********************************************************************************************/
voidRead_init(unsignedcharCHA){
unsignedcharAD_FIN=0;//存储A/D转换标志
CHA&=0x07;//选择ADC的8个接口中的一个(00000111清0高5位)
ADC_CONTR=0x40;//ADC转换的速度(0XX00000其中XX控制速度,请根据数据手册设置)
_nop_();
ADC_CONTR|=CHA;//选择A/D当前通道
_nop_();
ADC_CONTR|=0x80;//启动A/D电源
DELAY_MS
(1);//使输入电压达到稳定(1ms即可)
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:
8位A/D转换函数
调用:
?
=Read();
参数:
无
返回值:
8位的ADC数据
结果:
读出指定ADC接口的A/D转换值,并返回数值
备注:
适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)
/**********************************************************************************************/
unsignedcharRead(void){
unsignedcharAD_FIN=0;//存储A/D转换标志
ADC_CONTR|=0x08;//启动A/D转换(00001000令ADCS=1)
_nop_();
_nop_();
_nop_();
_nop_();
while(AD_FIN==0){//等待A/D转换结束
AD_FIN=(ADC_CONTR&0x10);//00010000测试A/D转换结束否
}
ADC_CONTR&=0xE7;//11110111清ADC_FLAG位,关闭A/D转换,
return(ADC_DATA);//返回A/D转换结果(8位)
}
/**********************************************************************************************/
以上-8位ADC程序模块(适用于STC12C2052AD系列)
C代码
1./*********************************************************************************************
2.程序名:
8位ADC转换实验程序
3.编写人:
杜洋
4.编写时间:
2010年3月24日
5.硬件支持:
STC12C2052AD 使用ADC功能 外部晶体12MHz
6.接口说明:
7.修改日志:
8. 1-
9./*********************************************************************************************
10.说明:
11.PC串口端设置 [ 4800,8,无,1,无 ]
12.将ADC读出的数值通过串口以十六进制方式显示。
13.
14./*********************************************************************************************/
15.
16.#include
17.#include
18.
19./*********************************************************************************************
20.函数名:
毫秒级CPU延时函数
21.调 用:
DELAY_MS (?
);
22.参 数:
1~65535(参数不可为0)
23.返回值:
无
24.结 果:
占用CPU方式延时与参数数值相同的毫秒时间
25.备 注:
应用于1T单片机时i<600,应用于12T单片机时i<125
26./*********************************************************************************************/
27.void DELAY_MS (unsigned int a){
28. unsigned int i;
29. while( a-- !
= 0){
30. for(i = 0; i < 600; i++);
31. }
32.}
33./*********************************************************************************************/
34.
35./*********************************************************************************************
36.函数名:
UART串口初始化函数
37.调 用:
UART_init();
38.参 数:
无
39.返回值:
无
40.结 果:
启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
41.备 注:
振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ]
42./**********************************************************************************************/
43.void UART_init (void){
44. //EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
45. //ES = 1; //允许UART串口的中断
46.
47. TMOD = 0x20; //定时器T/C1工作方式2
48. SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
49. TH1 = 0xF3; //定时器初值高8位设置
50. TL1 = 0xF3; //定时器初值低8位设置
51. PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400)
52. TR1 = 1; //定时器启动
53.}
54./**********************************************************************************************/
55.
56./*********************************************************************************************
57.函数名:
UART串口发送函数
58.调 用:
UART_T (?
);
59.参 数:
需要UART串口发送的数据(8位/1字节)
60.返回值:
无
61.结 果:
将参数中的数据发送给UART串口,确认发送完成后退出
62.备 注:
63./**********************************************************************************************/
64.void UART_T (unsigned char UART_data){ //定义串口发送数据变量
65. SBUF = UART_data; //将接收的数据发送回去
66. while(TI == 0); //检查发送中断标志位
67. TI = 0; //令发送中断标志位为0(软件清零)
68.}
69./**********************************************************************************************/
70./*********************************************************************************************
71.函数名:
8位A/D转换初始化函数
72.调 用:
Read (?
);
73.参 数:
输入的端口(0000 0XXX 其中XXX是设置输入端口号,可用十进制0~7表示,0表示P1.0,7表示P1.7)
74.返回值:
无
75.结 果:
开启ADC功能并设置ADC的输入端口
76.备 注:
适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)
77./**********************************************************************************************/
78.void Read_init (unsigned char CHA){
79. unsigned char AD_FIN=0; //存储A/D转换标志
80. CHA &= 0x07; //选择ADC的8个接口中的一个(0000 0111 清0高5位)
81. ADC_CONTR = 0x40; //ADC转换的速度(0XX0 0000 其中XX控制速度,请根据数据手册设置)
82. _nop_();
83. ADC_CONTR |= CHA; //选择A/D当前通道
84. _nop_();
85. ADC_CONTR |= 0x80; //启动A/D电源
86. DELAY_MS
(1); //使输入电压达到稳定(1ms即可)
87.}
88./**********************************************************************************************/
89./*********************************************************************************************
90.函数名:
8位A/D转换函数
91.调 用:
?
= Read ();
92.参 数:
无
93.返回值:
8位的ADC数据
94.结 果:
读出指定ADC接口的A/D转换值,并返回数值
95.备 注:
适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)
96./**********************************************************************************************/
97.unsigned char Read (void){
98. unsigned char AD_FIN=0; //存储A/D转换标志
99. ADC_CONTR |= 0x08; //启动A/D转换(0000 1000 令ADCS = 1)
100. _nop_();
101. _nop_();
102. _nop_();
103. _nop_();
104. while (AD_FIN ==0){ //等待A/D转换结束
105. AD_FIN = (ADC_CONTR & 0x10); //0001 0000测试A/D转换结束否
106. }
107. ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 关闭A/D转换,
108.return (ADC_DATA); //返回A/D转换结果(8位)
109.}
110./**********************************************************************************************/
111./*********************************************************************************************
112.函数名:
主函数
113.调 用:
无
114.参 数:
无
115.返回值:
无
116.结 果:
程序开始处,无限循环
117.备 注:
118./**********************************************************************************************/
119.void main (void){
120. unsigned char R;
121. UART_init();//串口初始程序
122. Read_init(0);//ADC初始化
123. P1M0 = 0x01; //P1.7~.0:
0000 0001(高阻)//注意:
更改ADC通道时须同时将对应的IO接口修改为高阻输入。
124. P1M1 = 0x00; //P1.7~.0:
0000 0000(强推)
125. while
(1){
126. R = Read ();
127. UART_T (R); //串口小秘书,将ADC读出值送入串口显示
128. }
129.}
/*********************************************************************************************
程序名:
8位ADC转换实验程序
编写人:
杜洋
编写时间:
2010年3月24日
硬件支持:
STC12C2052AD使用ADC功能外部晶体12MHz
接口说明:
修改日志:
1-
/*********************************************************************************************
说明:
PC串口端设置[4800,8,无,1,无]
将ADC读出的数值通过串口以十六进制方式显示。
/*********************************************************************************************/
#include
#include
/*********************************************************************************************
函数名:
毫秒级CPU延时函数
调用:
DELAY_MS(?
);
参数:
1~65535(参数不可为0)
返回值:
无
结果:
占用CPU方式延时与参数数值相同的毫秒时间
备注:
应用于1T单片机时i<600,应用于12T单片机时i<125
/*********************************************************************************************/
voidDELAY_MS(unsignedinta){
uns
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADC 采样 程序