网站大量收购独家精品文档,联系QQ:2885784924

单片机ADCDACPWM研讨.pptx

  1. 1、本文档共101页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机ADC

单片机第6课;A/D转换:Analog to Digital Converter;模拟量是怎么变成数字量的?;采样;采样;采样;量化;量化;编码;编码;量化编码;ADC实现的过程;比较:获得采样电压对应的“小格子”;我们的单片机自带了AD功能~ 我们可以很方便的直接使用~~;;看看如何设置I/O成为ADC的通道;我们的开发版引出了三个ADC通道给大家~;;ADC_CONTR寄存器;ADC_CONTR寄存器;ADC_CONTR寄存器;;ADC可以这样初始化:;我们初始化ADC的选择通道可以这样:;Void init_P1.1() { ADC_CONTR =0xef; //清零ADC中断 ADC_FLAG = 0; ADC_CONTR = 0XF8; //设置通道7(P1.1)作为AD输入 ADC_CONTR |= 0X01; //设置通道7(P1.1)作为AD输入 ADC_CONTR |= 0X08; //打开ADC转换一次 While(ADC_CONTR 0X10 != 0); //等待AD转换完成 } ;Void init_P1.0() { ADC_CONTR =0xef; //清零ADC中断 ADC_FLAG = 0; ADC_CONTR = 0XF8; //设置通道7(P1.0)作为AD输入 ADC_CONTR |= 0X00; //设置通道7(P1.0)作为AD输入 ADC_CONTR |= 0X08; //打开ADC转换一次 While(ADC_CONTR 0X10 != 0); //等待AD转换完成 } ;Void init_P1.x(char x) { ADC_CONTR =0xef; //清零ADC中断 ADC_FLAG = 0; ADC_CONTR = 0XF8; //设置通道7(P1.x)作为AD输入 ADC_CONTR |= x; //设置通道7(P1.x)作为AD输入 ADC_CONTR |= 0X08; //打开ADC转换一次 While(ADC_CONTR 0X10 != 0); //等待AD转换完成 } ;ADC转换的结果存在这里:;;int Get_AD_date() { unsigned long int t1,t2,data; double volte; t1=ADC_RES; //高两位 t2=ADC_RESL; //低八位 date=(t12)+t2; return date; };这样一个结构:; 恭喜大家,大家可以用我们的单片机去测量一个电压值了~~;那么,AD可以做什么呢?;Tips:;然后就需要上节课的内容;void uart_print(int V0,int V1,int V7)//原始数据 { char string[10]; if (flag==1) { flag=0; if(chr==a)//1.0 { while(ADC_CONTR 0X10 != 0); UART_send_string(itoa(V0,string,10)); UART_send_string(\n); } ;if(chr==b)//1.1 { while(ADC_CONTR 0X10 != 0); UART_send_string(itoa(V1,string,10)); UART_send_string(\n); } if(chr==c)//1.7 { while(ADC_CONTR 0X10 != 0); UART_send_string(itoa(V7,string,10)); UART_send_string(\n); } } } ;整形转字符串函数itoa()库函数没有提供 static char *itoa(int value,char *string,int radix) { int i,d; int flag=0; char *ptr=string; /*This implementation only work for decimal numbers.*/ if(radix!=10) { *ptr=0; return string; } if(!value) { *ptr++=0x30; *ptr=0; return string; };使用itoa()函数之前需要我们先定义一个char string[] ;为了把数

文档评论(0)

yy558933 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档