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

ad0808转换配C程序 绝对正确显示不太监ad0808转换配C程序 绝对正确显示不太监.doc

ad0808转换配C程序 绝对正确显示不太监ad0808转换配C程序 绝对正确显示不太监.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
我在研究ADC0808转换时,发现很多人上传的图片是正确的,附带程序居然不对 而且讲解不详细 让我瞬间有蛋碎的感觉 研究会了后 我觉得要搞个简单易懂的传上去 并且程序一定要对 不太监 。废话说完了,进入正题 ADC0808转换 晶振 和复位 这个不需要多讲 最小单片机系统里面的 固定套路。 AD输出部分 特别说明 ADDA ADDB ADDC连接对应INO-IN7选通,简单点讲,就是CBA 000 对应IN0选通 CBA 001对应IN1选通,因此类推。本设计选INO,所以ADDA ADDB ADDC连地。特别注意的是输出端OUT1连接P1.7 OUT 2连P1.6 ,不是大家简单以为OUT1连接P1.0,错位思路。 ADC0808 和单片机接法大图 显示大图 U3 LE连P2.6做为段选,U4LE 连P2.7作为位选,不懂段选为选的话。简单点讲,第一个缓存器做为显示0-9的,第二个缓存器是觉得显示第二个数码管显示。因为显示是动态显示,每次只显示一位。因为时间很短,肉眼看不出来而已。 具体的adc0808 eoc start等连接图看不出来可以看程序,上面都说清楚了。 Dula连P2^6; Wela连P2^7; ST连P3^6; OE连P3^7; EOC连P2^3; CLK连P3^4; 完整电路图 C程序 (说明程序的原理,ADC0808CLOCK需要时钟脉冲信号,所以选择定时器TO 以方式1计数,而ADC0808脉冲最好采取50Khz信号,简单讲运行一次程序就是12*(1/(50*1000))#includereg52.h #includeintrins.h #define uchar unsigned char #define uint unsigned int Uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; //共阴极代码1——9 uchar code table1[]= {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0x0ff,0xef};//个位带小数点字码表 sbit dula=P2^6; sbit wela=P2^7; sbit ST=P3^6; sbit OE=P3^7; sbit EOC=P2^3; sbit CLK=P3^4; float temp=0; uint a,b,c,d,e,f; float g; /**********【延时程序】***********/ void delay(uint ms) { uint x,y; for(x=ms;x0;x--) for(y=110;y0;y--); } /**********【显示程序】***********/ void display() { a=(uint)(5.0*(temp/255)); //整数部分 g=5.00*(temp/255); f=(g-a)*1000; //小数部分 b=f/100; c=f%100/10; d=f%10; P0=0xff; wela=1; P0=0xfe; wela=0; dula=1; P0=table1[a]; dula=0; delay(1); P0=0xff; wela=1; P0=0xfd; wela=0; dula=1; P0=table[b]; dula=0; delay(1); P0=0xff; wela=1; P0=0xfb; wela=0; dula=1; P0=table[c]; dula=0; delay(1); P0=0xff; wela=1; P0=0xf7; wela=0; dula=1; P0=table[d]; dula=0; delay(1); } /**********【中断程序】***********/ void init(void) { TMOD=0x01; TH0=(65536-24)/256; TL0=(65536-24)%256; EA=1; //全局中断允许位 ET0=1; //打开T0中断 TR0=1; //定时器0运行控制位,置1启动定时器0 } void timer0() interrupt 1 //中断服务程序 { TH0=(65536-24)/256; TL0=(65536-24)%256; CLK=~CLK; } /**********【主函数】***********/ vo

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档