欢迎来到天天文库
浏览记录
ID:47854735
大小:32.00 KB
页数:4页
时间:2019-11-29
《STC12C5A60S2内部ADC转换串口显示程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、STC12C5A60S2内部ADC转换串口显示程序(已经验证成功)#include#include"intrins.h"typedefunsignedcharuchar;typedefunsignedintuint;/*************设置ADC_CONTRL控制寄存器*************/#defineADC_POWER0x80//ADC电源控制为0:关闭AD转换电源1:打开AD转换电源#defineADC_FLAG0x10//ADC转换结束标志位,AD转换后自动
2、置1,//由软件清零(这里作取反使用)#defineADC_START0x08//ADC转换启动控制位,设置为1时开始AD转换,//转换结束后为0#defineADRJ_0x04//AUXR1寄存器的ADRJ位是转换结果寄存器(ADC_RES,ADC_RESL)的数据格式调整控制位//ADRJ为0时,10位AD转换结果的高8位存放在ADC_RES中,低2位存放在ADC_RESL的低2位//ADRJ为1时,10位AD转换结果的高2位存放在ADC_RES低2位中,低8位存放在ADC_RESL#defineADC_S
3、PEEDLL0x00//540个时钟周期转换一次(最低速)#defineADC_SPEEDL0x20//360个时钟周期转换一次(低速)#defineADC_SPEEDH0x40//180个时钟周期转换一次(高速)#defineADC_SPEEDHH0x60//90个时钟周期转换一次(最高速)ucharch=0;//模拟通道ucharcodenum[]={'0','1','2','3','4','5','6','7','8','9'};//字符数组,输出到串口显示voiddelay2ms(void)//误差0.
4、000000000000us{unsignedchara,b;for(b=129;b>0;b--)for(a=45;a>0;a--);}voiddelay2s(void)//误差-0.000000000111us{unsignedchara,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}//********************
5、****串口通信部分******************************ucharwj_uun='!';//用于存放串口1接收的字符voidbt_uart_init(void)//单片机串口初始化{//SCON=0X50;//SM0=0SM1=1SM2=0REN=1SM0=0;//串口工作方式1:1位起始位,8位数据位,1位停止位允许串口接收SM1=1;REN=1;//允许串口接收//RI=1;//接收标志位,0:正在接收1:接收完毕(如果RI=1就一直执行串口中断)TMOD=0X20;//定时器T1工
6、作方式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_string(uchar*
7、pt){//通过调用发送字符函数来发送字符数组while(*pt!=' '){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
8、ADC_SPEEDLL
9、ADC_START
10、ch;//开启ADC电源并且启动ADC/
11、/经过最少四个时钟周期之后才能够正确读取到ADC_CONTR的值delay2ms();EADC=1;//允许ADC中断}//*****************主函数*****************voidmain(){P4SW=0x70;//P4端口的4、5、6脚可作为通用I/O口bt_uart_init();//串口初始化ADC_Init();//ADC初始化while(1){;}
此文档下载收益归作者所有