这是
仿真原理图
#include <AT89X51.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dxla=P2^0;
sbit wxla=P2^1;
sbit cs=P3^0;
sbit rd=P3^1;
sbit wr=P3^2;
uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uint ms) //延时程序
{
uint i;
for(;ms>0;ms--)
{
for(i=125;i>0;i--)
{;}
}
}
void display(uchar numb) //三位 数码管显示部分的程序
{
uchar bai,shi,ge;
bai=numb/100;
shi=numb%100/10;
ge=numb%10;
wxla=1;
P0=0xfe;
wxla=0;
P0=0x00; //消影
dxla=1;
P0=num[bai];
dxla=0;
P0=0xff;
delay(5);
wxla=1;
P0=0xfd;
wxla=0;
P0=0x00;
dxla=1;
P0=num[shi];
dxla=0;
P0=0xff;
delay(5);
wxla=1;
P0=0xfb;
wxla=0;
P0=0x00;
dxla=1;
P0=num[ge];
dxla=0;
P0=0xff;
delay(5);
}
void main()
{
char numb;
uchar a;
cs=0; //cs位片选段 直接将cs拉低即可
while(1)
{
wr=1;
_nop_();
wr=0;
_nop_(); //启动AD转换
wr=1;
for(a=15;a>0;a--)
{
display(numb);
} //显示数码管 也是延时作用
P1=0xff; //p1口读前置一
rd=1;
_nop_();
rd=0;
_nop_();
numb=P1; //读出P1口到numb
rd=1;
}
}
上面是程序
要实现的功能是AD转换 在数码管上显示数值 AD芯片是adc0804
用protues仿真时数码管开始可以显示数值 但调节滑动变阻器改变电压后数码管显示没有变化 求大神指点!!!!!
一周热门 更多>