- 浏览: 45544 次
文章分类
- 全部博客 (34)
- java (34)
- [转]当鼠标点击listview下面的空白区域时 (1)
- 如何使listview的原item选项仍然为选中状态 (1)
- DistortionEffect.swc 相关的一个bug (1)
- SSH整合 (1)
- JQuery页面前端遍历样例 (1)
- 2011ACM北京网络预选赛 F Machine scheduling (BUPT 216) (1)
- 样式和主题 (1)
- 12月1日 (1)
- Message 850 not found; No message file for product=network (1)
- facility=NL (1)
- Spring Security - Using custom Authentication Processing Filter (1)
- validateJarFile jar not loaded. See Servlet Spec 2.3 (1)
- section 9.7.2. Offending class: javax/servlet/Servlet.class (1)
- Android窗体自定义标题栏 (1)
- 51系列单片机C语言编程ADC模/数转换器程序模板 (1)
- 红色联盟十年了 永恒的记忆 (1)
- JSP开发中遇到的几个小问题 (1)
- ORACLE9卸载的问题 (1)
- AppDev讲座 关于ASP2.0新特性的 (1)
- 收藏的一些GIS网站 与大家共享 (1)
- 最近流行邮箱扩容 但是其实并不是我们真正需要的 (1)
- 在ASP.NET中应用TreeView控件 (1)
- 《使用 Microsoft .NET 的企业解决方案模式》读书笔记1 (1)
- Inside Qt Series (全集) (1)
- line线 (1)
- 笔试考察高数之平均要取多少个(0 (1)
- 1)中的随机数才能让和超过1。 (1)
- jquery获得select option的值 和对select option的操作 (1)
- java reflect (1)
- php的一个神奇的技巧--用变量直接访问数组元素 (1)
- Struts标签三目运算 (1)
- JavaScript中的document.cookie的使用 (1)
- 程序员最大的悲剧是碰到不靠谱的PD (1)
- struts2下载出问题 (1)
- jsp播放视频文件代码 (1)
最新评论
-
ifox:
我去试试 哈。
Struts标签三目运算 -
grandboy:
gmail的垃圾邮件处理得挺好的。
最近流行邮箱扩容 但是其实并不是我们真正需要的
/********************************************************************************************* 函数名:8位A/D转换初始化函数 调 用:Read (?); 参 数:输入的端口(0000 0XXX 其中XXX是设置输入端口号,可用十进制0~7表示,0表示P1.0,7表示P1.7) 返回值:无 结 果:开启ADC功能并设置ADC的输入端口 备 注:适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件) /**********************************************************************************************/ void Read_init (unsigned char CHA){ unsigned char AD_FIN=0; //存储A/D转换标志 CHA &= 0x07; //选择ADC的8个接口中的一个(0000 0111 清0高5位) ADC_CONTR = 0x40; //ADC转换的速度(0XX0 0000 其中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头文件) /**********************************************************************************************/ unsigned char Read (void){ unsigned char AD_FIN=0; //存储A/D转换标志 ADC_CONTR |= 0x08; //启动A/D转换(0000 1000 令ADCS = 1) _nop_(); _nop_(); _nop_(); _nop_(); while (AD_FIN ==0){ //等待A/D转换结束 AD_FIN = (ADC_CONTR & 0x10); //0001 0000测试A/D转换结束否 } ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 关闭A/D转换, return (ADC_DATA); //返回A/D转换结果(8位) } /**********************************************************************************************/
以上- 8位ADC程序模块(适用于STC12C2052AD系列)
/********************************************************************************************* 程序名: 8位ADC转换实验程序 编写人: 杜洋 编写时间: 2010年3月24日 硬件支持: STC12C2052AD 使用ADC功能 外部晶体12MHz 接口说明: 修改日志: 1- /********************************************************************************************* 说明: PC串口端设置 [ 4800,8,无,1,无 ] 将ADC读出的数值通过串口以十六进制方式显示。 /*********************************************************************************************/ #include <STC12C2052AD.H> //单片机头文件 #include <intrins.h> //51基本运算(包括_nop_空函数) /********************************************************************************************* 函数名:毫秒级CPU延时函数 调 用:DELAY_MS (?); 参 数:1~65535(参数不可为0) 返回值:无 结 果:占用CPU方式延时与参数数值相同的毫秒时间 备 注:应用于1T单片机时i<600,应用于12T单片机时i<125 /*********************************************************************************************/ void DELAY_MS (unsigned int a){ unsigned int i; while( a-- != 0){ for(i = 0; i < 600; i++); } } /*********************************************************************************************/ /********************************************************************************************* 函数名:UART串口初始化函数 调 用:UART_init(); 参 数:无 返回值:无 结 果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用) 备 注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ] /**********************************************************************************************/ void UART_init (void){ //EA = 1; //允许总中断(如不使用中断,可用//屏蔽) //ES = 1; //允许UART串口的中断 TMOD = 0x20; //定时器T/C1工作方式2 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收) TH1 = 0xF3; //定时器初值高8位设置 TL1 = 0xF3; //定时器初值低8位设置 PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400) TR1 = 1; //定时器启动 } /**********************************************************************************************/ /********************************************************************************************* 函数名:UART串口发送函数 调 用:UART_T (?); 参 数:需要UART串口发送的数据(8位/1字节) 返回值:无 结 果:将参数中的数据发送给UART串口,确认发送完成后退出 备 注: /**********************************************************************************************/ void UART_T (unsigned char UART_data){ //定义串口发送数据变量 SBUF = UART_data; //将接收的数据发送回去 while(TI == 0); //检查发送中断标志位 TI = 0; //令发送中断标志位为0(软件清零) } /**********************************************************************************************/ /********************************************************************************************* 函数名:8位A/D转换初始化函数 调 用:Read (?); 参 数:输入的端口(0000 0XXX 其中XXX是设置输入端口号,可用十进制0~7表示,0表示P1.0,7表示P1.7) 返回值:无 结 果:开启ADC功能并设置ADC的输入端口 备 注:适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件) /**********************************************************************************************/ void Read_init (unsigned char CHA){ unsigned char AD_FIN=0; //存储A/D转换标志 CHA &= 0x07; //选择ADC的8个接口中的一个(0000 0111 清0高5位) ADC_CONTR = 0x40; //ADC转换的速度(0XX0 0000 其中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头文件) /**********************************************************************************************/ unsigned char Read (void){ unsigned char AD_FIN=0; //存储A/D转换标志 ADC_CONTR |= 0x08; //启动A/D转换(0000 1000 令ADCS = 1) _nop_(); _nop_(); _nop_(); _nop_(); while (AD_FIN ==0){ //等待A/D转换结束 AD_FIN = (ADC_CONTR & 0x10); //0001 0000测试A/D转换结束否 } ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 关闭A/D转换, return (ADC_DATA); //返回A/D转换结果(8位) } /**********************************************************************************************/ /********************************************************************************************* 函数名:主函数 调 用:无 参 数:无 返回值:无 结 果:程序开始处,无限循环 备 注: /**********************************************************************************************/ void main (void){ unsigned char R; UART_init();//串口初始程序 Read_init(0);//ADC初始化 P1M0 = 0x01; //P1.7~.0:0000 0001(高阻)//注意:更改ADC通道时须同时将对应的IO接口修改为高阻输入。 P1M1 = 0x00; //P1.7~.0:0000 0000(强推) while(1){ R = Read (); UART_T (R); //串口小秘书,将ADC读出值送入串口显示 } }
以上- 8位ADC应用实例(适用于STC12C2052AD系列)
/********************************************************************************************* 函数名:10位A/D转换初始化函数 调 用:Read_init (?); 参 数:输入的端口(0000 0XXX 其中XXX是设置输入端口号,可用十进制0~7表示,0表示P1.0,7表示P1.7) 返回值:无 结 果:开启ADC功能并设置ADC的输入端口 备 注:使用ADC功能时需要将对应的IO接口设置为高阻输入方式(例如:P1M1 = 0x01;) /**********************************************************************************************/ void Read_init (unsigned char CHA){ unsigned char AD_FIN=0; //存储A/D转换标志 CHA &= 0x07; //选择ADC的8个接口中的一个(0000 0111 清0高5位) ADC_CONTR = 0x40; //ADC转换的速度(0XX0 0000 其中XX控制速度,请根据数据手册设置) _nop_(); ADC_CONTR |= CHA; //选择A/D当前通道 _nop_(); ADC_CONTR |= 0x80; //启动A/D电源 DELAY_MS(1); //使输入电压达到稳定(1ms即可) } /**********************************************************************************************/ /********************************************************************************************* 函数名:10位A/D转换函数 调 用:? = ADC_Read(); 参 数:无 返回值:10位ADC数据高(从0到1023(十进制)) 结 果:读出指定ADC接口的A/D转换值,并返回数值 备 注:适用于STC12C5A60S2系列单片机(必须使用STC12C5A60S2.h头文件) /**********************************************************************************************/ unsigned int ADC_Read (void){ unsigned char AD_FIN=0; //存储A/D转换标志 ADC_CONTR |= 0x08; //启动A/D转换(0000 1000 令ADCS = 1) _nop_(); _nop_(); _nop_(); _nop_(); while (AD_FIN ==0){ //等待A/D转换结束 AD_FIN = (ADC_CONTR & 0x10); //0001 0000测试A/D转换结束否 } ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 关闭A/D转换, return (ADC_RES*4+ADC_RESL);//返回A/D转换结果(10位ADC数据高8位在ADC_RES中,低2位在ADC_RESL中) }
以上- 10位ADC程序模块(适用于STC12C5A60S2系列)
/********************************************************************************************* 程序名: 10位ADC转换实验程序 编写人: 杜洋 编写时间: 2010年3月24日 硬件支持: STC12C5A60S2 使用10位ADC功能 外部晶体12MHz 接口说明: P1.0接口接电位器 修改日志: 1- /********************************************************************************************* 说明: PC串口端设置 [ 4800,8,无,1,无 ] 将ADC读出的数值通过串口以十六进制方式显示(第一个数据是ADC高8位,第二个数据是ADC低2位)。 /*********************************************************************************************/ #include <STC12C5A60S2.H> //单片机头文件 #include <intrins.h> //51基本运算(包括_nop_空函数) /********************************************************************************************* 函数名:毫秒级CPU延时函数 调 用:DELAY_MS (?); 参 数:1~65535(参数不可为0) 返回值:无 结 果:占用CPU方式延时与参数数值相同的毫秒时间 备 注:应用于1T单片机时i<600,应用于12T单片机时i<125 /*********************************************************************************************/ void DELAY_MS (unsigned int a){ unsigned int i; while( a-- != 0){ for(i = 0; i < 600; i++); } } /*********************************************************************************************/ /********************************************************************************************* 函数名:UART串口初始化函数 调 用:UART_init(); 参 数:无 返回值:无 结 果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用) 备 注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ] /**********************************************************************************************/ void UART_init (void){ //EA = 1; //允许总中断(如不使用中断,可用//屏蔽) //ES = 1; //允许UART串口的中断 TMOD = 0x20; //定时器T/C1工作方式2 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收) TH1 = 0xF3; //定时器初值高8位设置 TL1 = 0xF3; //定时器初值低8位设置 PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400) TR1 = 1; //定时器启动 } /**********************************************************************************************/ /********************************************************************************************* 函数名:UART串口发送函数 调 用:UART_T (?); 参 数:需要UART串口发送的数据(8位/1字节) 返回值:无 结 果:将参数中的数据发送给UART串口,确认发送完成后退出 备 注: /**********************************************************************************************/ void UART_T (unsigned char UART_data){ //定义串口发送数据变量 SBUF = UART_data; //将接收的数据发送回去 while(TI == 0); //检查发送中断标志位 TI = 0; //令发送中断标志位为0(软件清零) } /**********************************************************************************************/ /********************************************************************************************* 函数名:10位A/D转换初始化函数 调 用:Read_init (?); 参 数:输入的端口(0000 0XXX 其中XXX是设置输入端口号,可用十进制0~7表示,0表示P1.0,7表示P1.7) 返回值:无 结 果:开启ADC功能并设置ADC的输入端口 备 注:适用于STC12C5A60S2系列单片机(必须使用STC12C5A60S2.h头文件) /**********************************************************************************************/ void Read_init (unsigned char CHA){ unsigned char AD_FIN=0; //存储A/D转换标志 CHA &= 0x07; //选择ADC的8个接口中的一个(0000 0111 清0高5位) ADC_CONTR = 0x40; //ADC转换的速度(0XX0 0000 其中XX控制速度,请根据数据手册设置) _nop_(); ADC_CONTR |= CHA; //选择A/D当前通道 _nop_(); ADC_CONTR |= 0x80; //启动A/D电源 DELAY_MS(1); //使输入电压达到稳定(1ms即可) } /**********************************************************************************************/ /********************************************************************************************* 函数名:10位A/D转换函数 调 用:ADC_Read (); 参 数:无 返回值:无(10位ADC数据高8位存放在ADC_RES中,低2位存放在ADC_RESL中) 结 果:读出指定ADC接口的A/D转换值,并返回数值 备 注:适用于STC12C5A60S2系列单片机(必须使用STC12C5A60S2.h头文件) /**********************************************************************************************/ void ADC_Read (void){ unsigned char AD_FIN=0; //存储A/D转换标志 ADC_CONTR |= 0x08; //启动A/D转换(0000 1000 令ADCS = 1) _nop_(); _nop_(); _nop_(); _nop_(); while (AD_FIN ==0){ //等待A/D转换结束 AD_FIN = (ADC_CONTR & 0x10); //0001 0000测试A/D转换结束否 } ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 关闭A/D转换, } /**********************************************************************************************/ /********************************************************************************************* 函数名:主函数 调 用:无 参 数:无 返回值:无 结 果:程序开始处,无限循环 备 注: /**********************************************************************************************/ void main (void){ UART_init();//串口初始程序 Read_init(0);//ADC初始化 P1M1 = 0x01; //P1.7~P1.0:0000 0001(高阻)//注意:更改ADC通道时须同时将对应的IO接口修改为高阻输入。 P1M0 = 0x00; //P1.7~P1.0:0000 0000(强推) while(1){ ADC_Read ();//调用ADC转换程序 UART_T (ADC_RES); //串口小秘书,将ADC读出值高8位送入串口 0000 0000 UART_T (ADC_RESL); //串口小秘书,将ADC读出值低2位送入串口 XXXX XX00 } }
以上- 10位ADC应用实例(适用于STC12C5A60S2系列)
<div class="quote_title">引用<div class="quote_div">
注意事项:
1. STC12C5A60S2系列内置10位ADC,STC12C2052AD系列内置8位ADC。
2. 在使用ADC功能时,应将其输入端的I/O接口设置为高阻输入工作方式。
3. 更改ADC通道时须同时将对应的IO接口修改为高阻输入。
4. STC12C5A60S2系列的10位ADC数据中,高8位存放在ADC_RES中,低2位存放在ADC_RESL中。
STC12C5A60S2.h头文件中对ADC部分的定义如下:
sfr ADC_CONTR = 0xBC; //A/D 转换控制寄存器 ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0000,0000
sfr ADC_RES = 0xBD; //A/D 转换结果高8位 ADCV.9 ADCV.8 ADCV.7 ADCV.6 ADCV.5 ADCV.4 ADCV.3 ADCV.2 0000,0000
sfr ADC_RESL = 0xBE; //A/D 转换结果低2位 ADCV.1 ADCV.0 0000,0000
可将其模板下载到本地硬盘,在编写新程序的时候复制、粘贴到工程当中,然后根据情况写入具体内容。
<ul style="display:none;">
</ul>
发表评论
-
jsp播放视频文件代码
2012-02-08 12:48 11881.avi格式?? <br>代码片断如下: ... -
struts2下载出问题
2012-02-07 15:58 772if (inputStream == null) { ... -
程序员最大的悲剧是碰到不靠谱的PD
2012-02-07 13:44 736怕碰到号称做过开发的PD。 -
JavaScript中的document.cookie的使用
2012-02-03 13:08 847我们已经知道,在 document 对象中有一个 co ... -
Struts标签三目运算
2012-02-02 16:54 1472${row[7] > 0 ? "正面& ... -
php的一个神奇的技巧--用变量直接访问数组元素
2012-01-11 16:49 1003cmmon.inc.php ------------- ... -
java reflect
2012-01-11 12:19 761import java.lang.reflect.Fi ... -
jquery获得select option的值 和对select option的操作
2011-12-21 16:34 1025获取Select : 获取select 选中的 te ... -
笔试考察高数之平均要取多少个(0,1)中的随机数才能让和超过1。
2011-12-21 09:49 1179<img src="http://hi ... -
line线
2011-12-20 16:04 9731.Connection接口:draw2d里面的线必须 ... -
Inside Qt Series (全集)
2011-12-20 14:33 1627Inside Qt 系列 QObject ... -
《使用 Microsoft .NET 的企业解决方案模式》读书笔记1
2011-12-19 10:49 698前言 关于设计模式的三个理念:使程序灵活;在不断演变的 ... -
在ASP.NET中应用TreeView控件
2011-12-19 09:54 771事情的起因是这样的,编写的ASP.NET程序,其中有一 ... -
最近流行邮箱扩容 但是其实并不是我们真正需要的
2011-12-17 15:49 1020相信经常用邮箱的朋友应该能感觉到,最近网络的免费邮箱都 ... -
收藏的一些GIS网站 与大家共享
2011-12-15 13:44 765收藏的一些GIS网站 与大家共享 地理信息系统论坛&l ... -
AppDev讲座 关于ASP2.0新特性的
2011-12-15 11:34 808</span></span>I ... -
ORACLE9卸载的问题
2011-12-14 18:13 653ORACLE数据库安装起来比较麻烦,卸载也不像微软的产 ... -
JSP开发中遇到的几个小问题
2011-12-14 12:09 863<p class="MsoNorma ... -
红色联盟十年了 永恒的记忆
2011-12-12 14:34 621<p class="MsoNorm ... -
Android窗体自定义标题栏
2011-12-09 03:29 4228自定义实现功能图片如下: <img src=&q ...
相关推荐
通过C语言发布:PIC单片机模/数转换器ADC模块的程序设计
单片机C语言程序设计 160128液晶曲线显示ADC0832两路模数转换结果(有源码)单片机C语言程序设计 160128液晶曲线显示ADC0832两路模数转换结果(有源码)单片机C语言程序设计 160128液晶曲线显示ADC0832两路模数转换...
MSP430系列单片机实用C语言程序设计 里面有调试程序 |——5-1 框架程序 |——6-1 异步串行通信程序(点对点通信) |——6-2 异步串行通信程序(地址位模式多机通信) |——6-3 异步串行通信程序(空闲模式多...
MSP430系列单片机实用C语言程序设计 随书光碟。工程软件为IAR 内容: 光盘根目录 | |——3-1 调试程序 |——5-1 框架程序 |——6-1 异步串行通信程序(点对点通信) |——6-2 异步串行通信程序(地址位...
单片机C语言程序设计实训100例基于8051+Proteus仿真.zip 第 01 篇 基础部分 01 闪烁的LED 02 从左到右的流水灯 03 左右来回的流水灯 04 花样流水灯 05 LED模拟交通灯 06 单只数码管循环显示0-9 07 8只数码管滚动显示...
单片机C语言程序设计实训100例基于8051+Proteus仿真源码: 第 01 篇 基础部分 01 闪烁的LED 02 从左到右的流水灯 03 左右来回的流水灯 04 花样流水灯 05 LED模拟交通灯 06 单只数码管循环显示0-9 07 8只数码管滚动...
51单片机基础应用设计C语言实例源码仿真300个合集: 100000秒以内的计时程序 10秒的秒表 12864LCD图形滚动演示 128X64LED 160128LCD图文演示 1602字符液晶滚动演示程序 1602液晶显示的DS1302实时时钟 16×16点阵...
基于51单片机C语言开发的TLV0838/TLC0838驱动程序。使用串口对采集到的值进行显示。
很有用的ad转换程序,对了解单片机的AD转换很有帮助
《单片机应用与实践指导》重点介绍了MCS-51、MSP430和AVR系列单片机的器件应用选型指南、硬件资源、工作原理和实践指导,并从应用角度出发详细介绍了三种单片机的应用特点、C语言编程规则、中断系统、串口技术、接口...
本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机 • 2.LCD1602液晶显示、DS18B20温度传感器、MQ-2烟雾传感器或MQ-5可燃气体传感器及ADC0809模数转换芯片 • 3.实时显示当前的烟雾值和温度值...
在工业控制和智能化仪表中,常 由单片机进行实时控制及实时数据处 理。单片机所加工的信息都是数字量, 而被控制或测量对象的有关参量往往 是连绥变化的模拟萤,如温度、速度、 ...转换的设备称为A/D转换器或ADC。
11-5 内含adc的51系列 305 11-6 认识温度传感器 307 11-7 实例演练 309 11-7-1 电压测量一 309 11-7-2 电压测量二 312 11-7-3 电压测量三 314 11-7-4 温度测量 317 11-7-5 adc的温控实验 319 11-7-6...
基于51单片机+ADC0809实现数码管显示电压值、过压报警仿真设计资料 包含源程序及仿真文件
3-1调试程序 5-1框架程序 6-1异步串行通信程序(点对点通信) 6-2异步串行通信程序(地址位...11-3DAC12数模转换程序 12-1使用比较器A进行斜边AD转换程序 12-2比较器A电阻值测量程序 13-1中断嵌套程序 13-2异常处理程序
proteus仿真,使用AT89C51单片机,ADC0809芯片转换电位器模拟量数据为数字量,在4位数码管显示,含C程序源码,适用于学生或者电子爱好者学习、实验。
入门 单片机必备 ,可以直接解压运行,可移植性好,具有二次开发的价值。
TLC2549,12位串行输入输出ADC换器,51单片机,C语言程序
单片机课程设计,包含电路图,汇编和C语言