proteus 仿真论坛:http://proteus.5d6d.com
在数码管上显示出电压值。实际显示的电压值 (D/256*VREF)
2、调试过程
<1>在实验过程中,发现了数码管显示的电压在测试的那一路电压正常显示,而其他
路为不定的电压值(电压为悬浮电压),加一个排阻接地后使它和低电平相连,在未加电压
的情况下为低电平,数码管显示值为 0 值。
<2>用原程序进行调试时,不执行报警和通道选择、单路循环选择(原程序少了通道
选择函数和报警函数)。多次修改和添加原程序后能够达到要求。
3、C 语言源程序
#include <reg52.h>
#include <intrins.h> //延时函数用
#define ad_con P2 //A/D 控制口
#define addata P0 //A/D 数据记入读入口
#define Disdata P1 //显示数据段码输出口
#define uchar unsigned char
#define uint unsigned int
sbit ALE=P2^3; //锁存地址控制位
sbit START=P2^4; //启动一次转换位
sbit OE=P2^5; //0809 输出数据 控制位
sbit EOC=P3^7; //转换结束标志位
sbit DISX=Disdata^7; //LED 小数点
sbit A=P2^7;
sbit BO=P3^5;
sbit CO=P3^6;
//
//
uchar code dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
/*共阳 7 段 LED 段码表 0.1.2.3.4.5.6.7.8.9.不亮*/
uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; //4 位列扫描控制字
//11111110
//11111101
//11111011
//11110111
uchar data ad_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //定义 8 个数据内存单元
uint data dis[5]={0x00,0x00,0x00,0x00,0x00}; //定义 4 个显示数据单元和 1 个数据存储单元
//
//
/**********1ms 延时子函数***********/
delaylms(uint t) //t=1
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}