本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
程序显示的一直是乱码,初步调试一下 AD的地址好像没有赋值上,但可以进入中断函数 数码管宣示 但显示的是乱码 求大神指点到底错在哪 附件里有protues接线图
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define AD 0x7f00
sbit CLOCK=P3^5;//给AD一个时钟信号
//uint *p;
uchar code num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极
//uchar code num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极
void main()
{
void delay(uint a);
void int2(void);
void int3(void);
IE=0x8C;
TH1=(65536-200)/256;
TL1=(65536-200)%256;
TMOD=0x10;
TCON=0x44;
CLOCK=0;
//p=0x7ff8;//指向AD的地址
while(1)
{
//*p=0; //打开AD转换器
*((uint*)AD)=0;
delay(10);//延时等待执行中断程序
}
}
void delay(uint a)
{
uchar j;uint i;
for(i=0;i<a;i++)
for(j=0;j<333;j++);
}
void int2(void) interrupt 2
{
uint k;uchar i;
k=*((uint*)AD);//读取转换值
//k=*p;//读取转换的值
k=(uint)k*1.0/255*5000;//把转换电压用毫伏表示
for(i=0;i<10;i++) //显示转换值
{
P1=num[k/1000];P2=0x0e;
P1=num[k/100%10];P2=0x0d;
P1=num[k/10%10];P2=0x0b;
P1=num[k%10];P2=0x07;
}
}
void int3(void) interrupt 3 //采用定时器给AD一个时钟
{
TH1=(65536-200)/256;
TL1=(65536-200)%256;
CLOCK=~CLOCK;
return;
}
|
|