找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4721|回复: 2
收起左侧

求一个at89s52与ADC0809带一个数码管显示0到5V的电压表程序

[复制链接]
ID:73739 发表于 2015-2-19 11:04 | 显示全部楼层 |阅读模式

先给大家拜年了 这个是原理图我ABC都接入的是地线数阳极码管接入的是P2接口

  求大神帮忙     最近要用 file:///c:/users/administrator/appdata/roaming/360se6/User Data/temp/0d338744ebf81a4c8ca3b2d4d32a6059252da61e.jpgfile:///c:/users/administrator/appdata/roaming/360se6/User Data/temp/0d338744ebf81a4c8ca3b2d4d32a6059252da61e.jpg asd.jpg


回复

使用道具 举报

ID:412177 发表于 2022-10-13 10:34 | 显示全部楼层
我这里有一个
//adc0808应用
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#include<stdlib.h>
#include<stdio.h>
#define int8u unsigned char
#define int16u unsigned int
int8u code SEG_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit  OE=P1^0; // 输出使能
sbit EOC=P1^1;  // 转换结果
sbit  ST=P1^2;  // 启动转换
sbit CLK=P1^3;  //        采样时钟
void delay_ms(int16u ms)
{int8u i;while(ms--) for(i=0;i<120;i++);
}
void Display_Result(int8u AD)
{
int V;
V=AD * 500.0 * 2/511.0;//根据4舍5人法计算电压值(放大100倍以使分解)
P2=1<<2;P0=SEG_CODE[V % 10]; delay_ms(5);
P2=1<<1;P0=SEG_CODE[V % 100/10]; delay_ms(5);
P2=1<<0;P0=SEG_CODE[V / 100]&0x7f; delay_ms(5);
}
void main()
{
TMOD=0x02;//定时器TIMER0工作方式  2        (8位自动重装)
TL0=-250;//        定时器初值
TH0=-250;//        在TL0溢出时,TH0的值自动重新装入  
IE=0x82;// 允许TIMER0溢出中断
TR0=1;        //        启动ADC0808(0809)的通道3(0011)                                         
P1=0x3f;// 高4位设通道地址为0011(3),低4位为clk,st,eoc,oe/ce                  
while(1)
{                                                                                          
ST=0;ST=1;ST=0;//启动转换
while(EOC==0); // 等待转换结果
OE=1;                        // 允许输出
Display_Result(P3);//显示A/D转换结果
OE=0;                           // 关闭输出
}
}
void Timer0_INT()interrupt 1
{CLK=!CLK;                //adc0808采样时钟
}
回复

使用道具 举报

ID:910913 发表于 2022-12-15 12:42 | 显示全部楼层
想后看开 发表于 2022-10-13 10:34
我这里有一个
//adc0808应用
#include

牛蛙
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表