adc0809做一个5v电压表proteus时钟ale分频4017

2025-03-16 15:39:51

1、先来说几点比较重要的问题:1 proteus的51单片机仿真模型,ale默认无时钟输出,需要按图设置

adc0809做一个5v电压表proteus时钟ale分频4017

2、2 proteus的adc0809无仿真模型 只有pcb模型和原理图符号3 使用adc0808代替adc08094 adc0808的输出端是反的意思是 0808的msb要接到单片机端口的lsb。0808的lsb要接到单片机端口的msb

adc0809做一个5v电压表proteus时钟ale分频4017

3、使用4位一体共阳数码管进行显示。573作驱动

adc0809做一个5v电压表proteus时钟ale分频4017

4、使用cd4017进行分频,将单片机的ale输出频率 f=OSC/6mhz=2mhz进行分频adc0808(9)的频率为1280khz到20khz之间,我们选择500khz,太快转换精度差,太慢没必要。

adc0809做一个5v电压表proteus时钟ale分频4017

5、可调电压电路,使用电位器

adc0809做一个5v电压表proteus时钟ale分频4017

6、0v仿真

adc0809做一个5v电压表proteus时钟ale分频4017

7、2.5v仿真

adc0809做一个5v电压表proteus时钟ale分频4017

8、5v仿真8bit的ADC 单位分辨率是5/256=19.53125mv四舍五入 4.98v注意,这里是0-255一共256个最小单位而不是255

adc0809做一个5v电压表proteus时钟ale分频4017

9、源代码 复制到 keil 里面然后调整一下格式就可以拿过来用了#include<reg52.h>#define u足毂忍珩int unsigned int#define uchar unsigned charsbit st=P3^0;sbit eoc=P3^2;sbit clk=P3^3;sbit a=P3^4;sbit b=P3^5;sbit c=P3^6;sbit OE=P3^1;sbit dian=P1^7;uchar code dt[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uint data1,disi,disan,dier,diyi;/*********延时函数************/void delay(uint ms){ uint i,j; for(i=ms;i>0;i--) for(j=110;j>0;j--);}/*********初始化函数************/void init(){ EA=1;//开总中断 ET0=1;//开定时器中断 TMOD=0x01;//定时器工作方式2 TH0=(65536-20)/256; TL0=(65536-20)%256;//设定时器初值 TR0=1;//启动定时器}/*********AD转化函数************/void AD(){ //OE=0; st=0; a=b=c=0; //选择通道0 delay(1); st=1; st=0; delay(5);// while(eoc==1);//等待转换完毕 OE=1;//打开传送数据 data1=P0;//数据送入P0口}/*********计算除法************/void chufa(){ data1=data1*19.53125; disi=data1/1000; disan=data1%1000/100; dier=data1%1000%100/10; diyi=data1%1000%100%10; }/*********显示函数************/void xianshi(){ P1=dt[disi];//整数部分 dian=0;//打开小数点 P2=0x01; delay(1); P1=0xff; P1=dt[disan];//小数点后一位 P2=0x02; delay(1); P1=0xff; P1=dt[dier];//小数点后两位 P2=0x04; delay(1); P1=0xff; P1=dt[diyi];//小数点后第三位 P2=0x08; delay(1); P1=0xff;}/*********中断函数************/void time() interrupt 1{ clk=~clk; TH0=(65536-20)/256; TL0=(65536-20)%256;}/*********主函数************/void main(void){ init(); while(1) { AD(); chufa(); xianshi(); }}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢