打印

基于51的ADC0809遇到问题了,请大侠指教!

[复制链接]
2753|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
新建文件夹 (3).rar (284.94 KB) 现在做成了硬件,但不知道怎么检测,写进去的程序在PROTUES 仿真能显示正常,但实物不行。。。:(,请大侠指点。
************************************************************
*************************************************************
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
/*************位定义***********************/
sbit ENABLE=P3^0;
sbit EOC=P3^3;
sbit START=P3^2;
sbit CLK=P3^4;
//sbit dot=P2^7;
/*************赋值*************************/
uint digtial[4],getdataend;
uchar code dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
    0x82,0xf8,0x80,0x90,0x88,0x83,
    0xc6,0xa1,0x86,0x8e};
//uchar code dis[] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
uchar getdata;

//*************************************************
//函数名称:void delay1ms( unsigned char t)
//函数功能:延时函数
//返回类型:无
//使用说明:
//         1:产生需要的延时时间
//*************************************************

void delay1ms( unsigned char t)  
{
unsigned char i,j;
for( ; t; t--)
for(i=4; i>0; i--)
for(j=123; j>0; j--);
}
void time_time_clk() interrupt 1  using 0
{
TH0 = (65536-2)/256;//给高8位赋值
TL0 = (65536-2)%256;//给低8位赋值
CLK=~CLK;
}
//********************
//函数名称:void inint()
//函数功能:初始化定时器.ADC0809
//********************
void inint()
{
TMOD = 0x01;//选择工作模式 16位
TH0 = (65536-2)/256;//给高8位赋值
TL0 = (65536-2)%256;//给低8位赋值
EA  = 1;//开总中断
ET0 = 1;//启动定时器0;
TR0 = 1;//开定时器0
START=0;//给ADC0809赋初值
ENABLE=0;
}

//****************************
//函数名称:void display()
//函数功能:动态扫描,数码管显示电压值
//****************************
void display()
{

P0 = 0X38;
P2 = dis[digtial[3]];
// delay1ms(3000);
// dot = 1;
delay1ms(100);
// P2 = 0X00;
/* P0 = 0X0d;
P2 = dis[digtial[2]];
delay1ms(1);
P2 = 0X00;
P0 = 0X0b;
P2 = dis[digtial[1]];
delay1ms(1);
P2 = 0X00;
P0 = 0X07;
P2 = dis[digtial[0]];
delay1ms(1);
P2 = 0X00;
*/
}
//*****************************
//函数名称:void AD()
//函数功能:将模拟电压转换为数字
//*****************************
void AD()
{
getdata=0xf0;
P0=0x38;
START=0;
ENABLE=0;
START=1;
START=0;//启动AD转换
while(EOC==0)
{
}//判断转换是否结束
ENABLE=1;//允许输出
delay1ms(2);
getdata=P1;//将转换得到的数据赋给getdata
ENABLE=0;//关闭输出
/*因为ADC0809的模拟输入电压范围为0~+5V*/
getdataend = getdata*(5000/255);
digtial[3] = getdataend/1000; //最高位数值
digtial[2] = getdataend%1000/100;   
digtial[1] = getdataend%100/10;
digtial[0] = getdataend%10;//最低位数值

}
/*void LF398()
{

}*/
void main()
{
inint();//定时器和ADC0809的初始化
while(1)
{
// P0=0X40;
// NOP_();
// P0=0;
AD();//AD转换
display();//数码管显示
   
}
}

相关帖子

沙发
zdhlixiang2006| | 2013-4-29 18:42 | 只看该作者
现在这年代了还有人在浪费时间浪费精力在研究0809,不懂

使用特权

评论回复
板凳
还是坚信|  楼主 | 2013-4-30 00:07 | 只看该作者
zdhlixiang2006 发表于 2013-4-29 18:42
现在这年代了还有人在浪费时间浪费精力在研究0809,不懂

在做毕设。。。

使用特权

评论回复
地板
NE5532| | 2013-4-30 08:01 | 只看该作者
跟你在仿真里的调试步骤一样,先把寄存器调通,可读可写,然后AD VCC和GND电平,正确以后,硬件基本就通了。

使用特权

评论回复
5
还是坚信|  楼主 | 2013-4-30 19:07 | 只看该作者
NE5532 发表于 2013-4-30 08:01
跟你在仿真里的调试步骤一样,先把寄存器调通,可读可写,然后AD VCC和GND电平,正确以后,硬件基本就通了 ...

单片机能正常驱动LED,但ADC这块就不行。    按上面的程序,不接输入LED显示也跳变,输入接地没变零

使用特权

评论回复
6
yingdea| | 2013-5-1 07:09 | 只看该作者
根据我的调试PROTEUS和实物的经验,大部分都是由于实物的焊接触点接触不良,虚焊或短路引起的。供你参考!

使用特权

评论回复
7
还是坚信|  楼主 | 2013-5-1 12:46 | 只看该作者
yingdea 发表于 2013-5-1 07:09
根据我的调试PROTEUS和实物的经验,大部分都是由于实物的焊接触点接触不良,虚焊或短路引起的。供你参考! ...

我吧所有输入都连起来了,是不是这个原因,我试着把它们分开试试

使用特权

评论回复
8
zdhlixiang2006| | 2013-5-1 23:13 | 只看该作者
还是坚信 发表于 2013-4-30 00:07
在做毕设。。。

现在学校的教学和社会需求严重脱节,哎,悲剧啊

使用特权

评论回复
9
yingdea| | 2013-5-1 23:16 | 只看该作者
没太懂你意思,我这里有个图,你参考看看。

使用特权

评论回复
10
421924538| | 2013-5-2 00:24 | 只看该作者
你把你的图贴上来,先看一下对不对

使用特权

评论回复
11
还是坚信|  楼主 | 2013-5-2 10:07 | 只看该作者
421924538 发表于 2013-5-2 00:24
你把你的图贴上来,先看一下对不对


VCC接adc0809时没上拉电阻

使用特权

评论回复
12
minier| | 2013-5-2 19:58 | 只看该作者
定时中断时间太短,反复中断所致

使用特权

评论回复
13
还是坚信|  楼主 | 2013-5-3 01:01 | 只看该作者
minier 发表于 2013-5-2 19:58
定时中断时间太短,反复中断所致

定时作为ADC0809的CLK,有资料说不超过640KHz,有的datasheet说640KHz的时候转换时间为100us,500KHz时是130us,我现在用11.0592M晶振,定时器+1是1us,(65536-2)是定时2us,500KHz。但我改成20、100,都会有跳变,100的时候接地先为零,一段时间后有出现跳变,20的时候稳定。      不接或接Vcc的时候没反应,找原来的跳变

使用特权

评论回复
14
logokfu| | 2013-5-6 00:46 | 只看该作者
以实际硬件为准

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:I like MCU

8

主题

105

帖子

2

粉丝