STC12C5A系列内置AD-PWM(频率可调)串口发送_第1页
STC12C5A系列内置AD-PWM(频率可调)串口发送_第2页
STC12C5A系列内置AD-PWM(频率可调)串口发送_第3页
STC12C5A系列内置AD-PWM(频率可调)串口发送_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、精品文档#include"stc12c5a.h"#include"intrins.h"#define uchar unsigned char/-void AD_init();/AD初始化函数void delay(unsigned int a); /延时函数( 1ms)float AD_work(unsigned char channel);/AD 数值处理函数unsigned int AD_get(unsigned char channel); /AD转换函数void PCA();/设置 PWM输出函数unsigned char ge1,n1,m1,aa

2、,num,pwm;int V,temp1;sbit key1=P01;sbit key2=P02;/-void send(uchar data1)ES=0;/ 关闭中断TI=0;SBUF=data1;while(!TI); /等待发送完成TI=0;/ 中断标志位清0ES=1;/打开中断void chuankou()/串口发送ADtemp1=V;ge1=temp1/1000;m1=(temp1%1000)/100;n1=(temp1%1000)%100)/10;send(ge1+48);/因为 0 对应的 ASCII 码是 48,所以要 +48send('.');send(m1+

3、48);send(n1+48);send('V');send(' ');。1欢迎下载精品文档/-unsigned int AD_get(unsigned char channel)ADC_CONTR=0x88|channel;/ 开启 AD转换 10001000即 POWERSPEED1 SPEED0ADC_FLAGADC_START CHS2 CHS1 CHS0_nop_(); _nop_(); _nop_(); _nop_();/要经过 4 个 CPU时钟的延时,其值才能够保证被设置进ADC_CONTR寄存器while(!(ADC_CONTR&0x1

4、0);/等待转换完成ADC_CONTR&=0xe7; / 关闭 AD转换, ADC_FLAG位由软件清 0 return(ADC_RES*4+ADC_RESL); / 返回 AD转换完成的 10 位数据 (16 进制 )/-float AD_work(unsigned char channel)double AD_val,AD_vale;/定义处理后的数值AD_val 为浮点数unsigned char i;for(i=0;i<100;i+)AD_val+=AD_get(channel); /转换 100 次求平均值 ( 提高精度 )AD_val/=100;AD_vale=(AD

5、_val*5000)/1024; /AD的参考电压是单片机上的5v,所以乘5 即为实际电压值V=AD_vale;return V;/-void delay(unsigned int a) /延时约 1msunsigned int i;while (-a!=0)for(i=600;i>0;i-);/-/-void AD_init()P1ASF=0x01; /P1口全部作为模拟功能AD使用。2欢迎下载精品文档ADC_RES=0; / 清零转换结果寄存器高8 位ADC_RESL=0; / 清零转换结果寄存器低2 位ADC_CONTR=0x80;/开启 AD电源delay(2);/等待 1ms,

6、让 AD电源稳定void anjian()if(pwm!=100)/占空比加到100 不继续加if(key1=0)delay(10);if(key1=0)pwm+;aa=1;while(!key1);if(pwm!=0)/减到 0 不继续减if(key2=0)delay(10);if(key2=0)aa=1;pwm-;while(!key2);void PCA()CCON=0;CL=0;CH=0;CMOD=0X04;/ 选择脉冲源为计时器0CCAP0H=128;/占空比初值为50%。3欢迎下载精品文档CCAP0L=128;CCAPM0=0X42;CR=1;/开启 PWMvoid main()A

7、D_init();/AD 初始化PCA();TMOD=0x21;AUXR=0x80;TH0=(65536-25)/256;/设定定时器0 初值, pwm频率为 1KHZTL0=(65536-25)%256;TH1=0xfd;/设置 9600波特率TL1=0xfd;SCON=0x50;/串口方式1,允许接收ET0=1;TR0=1;TR1=1;SM0=0;SM1=1;REN=1;ES=1;EA=1;while(1)unsigned char i;i=0;/ 以 P1i(P10) 口为 AD采集口AD_work(i);/读取 AD电压chuankou();CCAP0H=256-pwm*256/100;/设定占空比为pwm%CCAP0L=256-pwm*256/100;if(V>=3000)aa=0;pwm=0;/占空比为0if(V<3000)if(aa=0)pwm=50;。4欢迎下载精品文档anjian();void T0_time() interru

温馨提示

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

评论

0/150

提交评论