打印

A/D转化问题

[复制链接]
1896|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
真的Andy|  楼主 | 2010-8-6 18:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
a/d, AD, AI, ge, FOR
各位大侠  问你个问题   下边的这段程序是郭天祥老师在讲A/D时课本的例子(我只是变了变变量)   有几个地方很迷糊。


#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit adwr=P3^6;
sbit adrd=P3^7;
uchar i,j,bai,shi,ge;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar,uchar,uchar);
void delay(uint);
void main()
{
wela=1;
P0=0x7f;
wela=0;
while(1)
{
adwr=1;
_nop_();
adwr=0;
_nop_();
adwr=1;
for(i=10;i>0;i--)
{
display(bai,shi,ge);              今天我把for这布去了,把display(bai,shi,ge);  放在了大循环的最底下,效果只是数有的地方闪烁,这个for究竟嘛意思啊
}
P1=0xff;                                                     这一步是什么意思呢   去了效果一样啊。为什么A/D数据在P1口输出,小灯不亮呢
adrd=1;
_nop_();
adrd=0;
_nop_();
j=P1;                                                              这个j读出来是二进制数,为什么能进行下边的求模,求余,运算呢
adrd=1;
bai=j/100;
shi=j%100/10;
ge=j%10;
}
}
void display(uchar bai,uchar shi,uchar ge)
{
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0x7e;
wela=0;
delay(5);

dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0x7d;
wela=0;
delay(5);

dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0x7b;
wela=0;
delay(5);
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

相关帖子

沙发
真的Andy|  楼主 | 2010-8-7 11:17 | 只看该作者
对不住,忘了说题目了。题目是用单片机控制ADC0804进行模数转换,当拧动实验板上A/D旁边的电位器Re2时,在数码管的前三位以十进制方式动态显示出A/D转换后的数字量(8位A/D转换后数值在0~255变化)。

使用特权

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

本版积分规则

0

主题

10

帖子

1

粉丝