STCCAS内部ADC转换串口显示程序_第1页
STCCAS内部ADC转换串口显示程序_第2页
STCCAS内部ADC转换串口显示程序_第3页
STCCAS内部ADC转换串口显示程序_第4页
STCCAS内部ADC转换串口显示程序_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、STC12C5A60S加部ADC专换串口显示程序(已经验证成功)#include<stc12c5a60s2.h>#include"intrins.h"typedefunsignedcharuchar;typedefunsignedintuint;/*设置ADC_CONTRL控制寄存器*/#defineADC_POWER0x80换电源/ADC电源控制为0:关闭AD转换电源1:打开AD转#defineADC_FLAG0x10/ADC转换结束标志位,AD转换后自动置1,/由软件清零(这里作取反使用)#defineADC_START0x08/ADC转换启动控制位,设置为

2、1时开始AD转换,/转换结束后为0#defineADRJ_0x04/AUXR1寄存器的ADRJ位是转换结果寄存器(ADC_RES,ADC_RESL)的数据格式调整控制位/ADRJ为0时,10位AD转换结果的高8位存放在ADC_RES2位存放在ADC_RESL的低2位/ADRJ为1时,10位AD转换结果的高2位存放在ADC_RES低2位中,低8位存放在ADC_RESL#define ADC_SPEEDLL 0x00#define ADC_SPEEDL 0x20#define ADC_SPEEDH 0x40#define ADC_SPEEDHH 0x60uchar ch = 0;/540个时钟周期

3、转换一次(最低速)/360个时钟周期转换一次(低速)/180个时钟周期转换一次(高速)/90个时钟周期转换一次(最高速)模拟通道ucharcodenum='0','1',2,'3','4',5,'6',7,'8','9'/字符数组,输出到串口显示voiddelay2ms(void)/误差0.000000000000usunsignedchara,b;for(b=129;b>0;b-)for(a=45;a>0;a-);voiddelay2s(void)/误差-0.00000

4、0000111usunsignedchara,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_();/ifKeil,requireuseintrins.h/*uchar wj_uun = '!'/用于存放串口 1 接收的字符void bt_uart_init(void)/ 单片机串口初始化许串口接收/SCON=0X50;SM0 = 0;SM1 = 1;REN = 1;/ SM0=0 SM1=1 SM2=0 REN=1/ 串口工作方式1: 1 位起

5、始位, 8 位数据位, 1 位停止位允/ 允许串口接收/RI=1;/接收标志位,0:正在接收1:接收完毕(如果RI=1就一直执行串口中断)TMOD = 0X20;/ 定时器 T1 工作方式 2TH1 = 0XFD;/ 9600bit/s 下的定时器初值TL1=0XFD;TR1=1;/启动定时器T1EA=1;/开总中断ES=1;/开串行口中断/*1 发送函数*/voids1_send_char(uchardat)/发送端(发送的是字符)SBUF=dat;/将字符送入发送缓冲寄存器while(!TI);/TI为发送状态标志位,0:发送中1:发送结束TI=0;/手动清零标志位voids1_send_

6、string(uchar*pt)/通过调用发送字符函数来发送字符数组while(*pt!='0')s1_send_char(*pt+);voidADC_Init(void)/P1ASF=0x01;/设置P1口的0为模拟输入端口(经过测试这句写不写P1口都能模拟输入)ADC_RES=0;/先清空两个寄存器ADC_RESL=0;AUXR1&=ADRJ_;/ADRJ为0的存储格式(参考技术手册)ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;/开启ADC电源并且启动ADC/经过最少四个时钟周期之后才能够正确读取到ADC_CONTR的值

7、delay2ms();EADC=1;/允许ADC中断*主函数 *voidmain()P4SW=0x70;/P4端口的4、5、6脚可作为通用I/O口bt_uart_init();/串口初始化ADC_Init();/ADC初始化while(1);/*ADC中断函数*voidADC_(void)interrupt5/ADC中断编号为5uintadc_result=0;/while(!(ADC_CONTR&ADC_FLAG);/如果未转换结束,等待ADC_CONTR寄存器ADC_FLAG位置1/ADC_CONTR&=ADC_FLAG;/清零ADC转换结束标志位(这句可以不写,)if(A

8、DC_CONTR&ADC_FLAG)ADC_RESL&=0x03;adc_result=ADC_RES*4+ADC_RESL;/获取到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();/*1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论