




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、STC12C5A60S2 内部 ADC 转换串口显示程序(已经验证成功)#include <stc12c5a60s2.h>#include "intrins.h"typedef unsigned char uchar; typedef unsigned int uint;/*#define ADC_POWER 0x80 源设置 ADC_CONTR控制寄存器 */ADC电源控制为0 :关闭AD转换电源1 :打开AD转换电#define ADC_FLAG 0x10/ ADC 转换结束标志位,AD转换后自动置1,/ 由软件清零 ( 这里作取反使用 )#define A
2、DC_START 0x08/ ADC 转换启动控制位,设置为 1时开始AD转换,/ 转换结束后为 0#define ADRJ_ 0x04(ADC_RES,ADC_RESL)数据格式调整控制位/ ADRJ为0时,10位AD转换结果的高 中,低2位存放在 ADC_RES的低2位/ ADRJ为1时,10位AD转换结果的高低 2 位中,低 8 位存放在 ADC_RESL/ AUXR1 寄 存 器 的 ADRJ 位 是 转 换 结 果 寄 存 器8 位存放在 ADC_RES2 位存放在 ADC_RES#define ADC_SPEEDLL 0x00 #define ADC_SPEEDL 0x20 #de
3、fine ADC_SPEEDH 0x40 #define ADC_SPEEDHH 0x60 / 90/ 540/ 360/ 180个时钟周期转换一次 个时钟周期转换一次 个时钟周期转换一次 个时钟周期转换一次( 最低速 ) ( 低 速) ( 高 速) ( 最高速 )uchar ch = 0;/模拟通道void delay2s(void) /误差 -0.000000000111us字符数组,输出到串uchar code num='0','1','2','3','4','5','6',&
4、#39;7','8','9'/ 口显示void delay2ms(void) / unsigned char a,b; for(b=129;b>0;b-) for(a=45;a>0;a-);误差 0.000000000000usunsigned char a,b,c,n;for(c=142;c>0;c-)for(b=168;b>0;b-) for(a=250;a>0;a-);for(n=2;n>0;n-);_nop_(); /if Keil,require use intrins.h /*串口通信部分 *uchar w
5、j_uun = '!'/用于存放串口 1 接收的字符void bt_uart_init(void)/SCON=0X50;SM0 = 0;允许串口接收/单片机串口初始化/ SM0=0 SM1=1 SM2=0 REN=1/ 串口工作方式 1:1 位起始位, 8 位数据位, 1 位停止位SM1 = 1;REN = 1;/ 允许串口接收/RI=1; /接收标志位,0:正在接收 1 :接收完毕( 如果TMOD = 0X20;/定时器 T1 工作方式2TH1 = 0XFD;/ 9600bit/s 下的定时器初值TL1 = 0XFD;TR1 = 1;/启动定时器 T1EA = 1;/开总中断
6、ES = 1;/开串行口中断RI=1 就一直执行串口中断 )1 发送函数 void s1_send_char(uchar dat) /*串口/*/ 发送端 ( 发送的是字符 )SBUF = dat;while(!TI);TI = 0;void s1_send_string(uchar *pt) while(*pt != '0') s1_send_char(*pt+);/ TI/将字符送入发送缓冲寄存器为发送状态标志位, 0:发送中 1 :发送结束 手动清零标志位/ 通过调用发送字符函数来发送字符数组void ADC_Init(void) / P1ASF = 0x01; 口都能模
7、拟输入 )ADC_RES = 0; ADC_RESL = 0;AUXR1 &= ADRJ_;/设置 P1 口的 0 为模拟输入端口 ( 经过测试这句写不写 P1先清空两个寄存器/ ADRJ 为 0的存储格式(参考技术手册)ADC_CONTR = ADC_POWER|ADC_SPEEDLL|ADC_START|ch;开启 ADC电源并且启动 ADC /经过最少四个时钟周期之后才能够正确读取到ADC_CONT的值delay2ms();EADC = 1;/允许ADC中断/* void main()主函数 *P4SW = 0x70;bt_uart_init(); ADC_Init(); whi
8、le(1) / ADC/ P4 端口的 4、5、 6 脚可作为通用串口初始化初始化/* ADC void ADC_(void) interrupt 5 uint adc_result = 0;/ while(!(ADC_CONTR & ADC_FLAG); /ADC_FLA(位置 1/ ADC_CONTR &= ADC_FLAG; / 下面有覆盖 )if(ADC_CONTR & ADC_FLAG) ADC_RESL &= 0x03;adc_result = ADC_RES*4 + ADC_RESL;/中断函数 */ ADC 中断编号为 5如果未转换结束,等待I/
9、OADC_CONTR寄存器清零ADC转换结束标志位( 这句可以不写, 因为获取到10AD转换值s1_send_string(" 通道号:s1_send_char(numch);");/通过串口发送通道号s1_send_string(" 转换值: s1_send_char(numadc_result/1000);");/一共四位数s1_send_char(numadc_result%1000/100); s1_send_char(numadc_result%100/10); s1_send_char(numadc_result%10);if(+ch>3)ch = 0;/ 不断切换通道号 0、1、 2、3/再次设置ADC_CONTR寄存器ADC_CONTR = ADC_POWER|ADC_SPEEDLL|ADC_START|ch; delay2s();/*voi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度股权激励协议虚拟分红权股权激励计划激励效果综合评价
- 2025年度新能源汽车研发生产合作协议书范文
- 2025年度物业公司股权转让及服务质量提升协议
- 2025年度特色书店合作开店协议书
- 2025年度铝合金门窗行业市场调研与营销策划合同
- 2025年度特殊工种劳动合同终止解除保障协议
- 二零二五年度养老社区入住与养老规划协议
- 2025年热议健康管理师试题及答案
- 2025年度民事调解协议书生效期限与调解协议履行保障措施
- 二零二五年度汽车过户前免责及后续责任划分协议
- 骨科延续护理
- DB51∕T 2426-2017 公路沥青路面预防性养护技术规范
- 2024年重庆市公务员考试《行测》真题及答案解析
- 视频监控设备安装(调试)投标方案
- 复方阿片类镇痛药临床应用中国专家共识
- 小儿过敏性紫癜护理查房课件
- 争议解决法律服务投标书
- ICU重症患者康复护理
- 浙江省2024年全国中学生奥林匹克数学竞赛初赛试题 含解析
- 心理健康教育课件.他人眼中的我
- 金茂入职前的在线测评题
评论
0/150
提交评论