|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2012-5-9 21:02:27
|
显示全部楼层
本帖最后由 target11 于 2012-5-10 17:43 编辑
liweiqiang668 发表于 2012-5-9 19:33 ![](static/image/common/back.gif)
在我電腦上無法仿真,你這樣改試試,
{
j[k]=adc_data%10;
谢谢您呢,刚刚查出来了哦,不是转换的错,是每位显示前没清,所以和前一位数字串了,出现乱码
以下是刚改好的:
#include <reg52.h>
#include <intrins.h> //_nop_()
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
//数码管查找显示
uchar code px[4]={0x08,0x04,0x02,0x01};
uchar code sk[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//引脚定义
sbit CLK=P3^4;
sbit DATA=P3^2;
sbit CS=P3^3;
uint j[4]={0,0,0,0}; //存十进制数据
void tlc549_ad_read(void) //ad读取
{ uint i,da1=0x00;
CLK=0;
CS=0;
DATA=1; //置位准备读
i=8;
while(i>0)
{ i--;
da1<<=1;
CLK=1;
_nop_();
if(DATA)da1++;
CLK=0;
}
P1=da1; //读到的数据送显示
CLK=1;
CS=1;
for(i=0;i<4;i++) //转十进制存j【】中
{
j=da1%10;
da1=da1/10;
}
}
void display(uint *q) //数码显示
{ uint r;
for(r=0;r<4;r++)
{ P2=0xff;
P0=px[r];
P2=sk[*(q+r)];
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void timer1() interrupt 3 using 0 //定时采集
{ TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
display(&j);
tlc549_ad_read();
}
void main()
{
TMOD|=0X10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ET1=1;
TR1=1;
EA=1;
CS=1;
CLK=1;
while(1)
{
display(&j); //显示
}
}
这次ok了,流畅显示,小东西也有技巧的。 |
|