资源简介
利用单片机AT89C52与ADC0809设计一个8路数字电压表,能够测量0-5V之间的8路输入电压值,并能在四位数码管上显示。
代码片段和文件信息
#include
#include //延时函数用
#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]={0xC00xF90xA40xB00x990x920x820xF80x800x900xff};
/*共阳7段LED段码表0.1.2.3.4.5.6.7.8.9.不亮*/
uchar code scan_con[4]={0xfe0xfd0xfb0xf7}; //4位列扫描控制字
//11111110
//11111101
//11111011
//11110111
uchar data ad_data[8]={0x000x000x000x000x000x000x000x00}; //定义8个数据内存单元
uint data dis[5]={0x000x000x000x000x00}; //定义4个显示数据单元和1个数据存储单元
//
//
/**********1ms延时子函数***********/
delaylms(uint t) //t=1
{
uint ij;
for(i=0;i for(j=0;j<120;j++)
;
}
//
//
/************显示扫描子函数***************/
scan()
{
uchar kn;
int h;
dis[3]=0x01; //通道初值为1
for(n=0;n<8;n++) //每次显示8个数据
{
dis[2]=ad_data[n]/51; //测得值转换为3位BCD码,最大为5.00V
dis[4]=ad_data[n]%51; //余数暂存
dis[4]=dis[4]*10; //计算小数第一位
dis[1]=dis[4]/51;
dis[4]=dis[4]%51;
dis[4]=dis[4]*10; //计算小数第二位
dis[0]=dis[4]/51;
if(dis[2]>=4&&dis[1]>6&&dis[0]>=0)
A=1;
else
A=0;
for(h=0;h<500;h++) //每个通道显示时间控制约为一秒
{
for(k=0;k<4;k++) //4位LED扫描控制
{
Disdata=dis_7[dis[k]];
if(k==2)
{
DISX=0;
}
P3=scan_con[k]; //P3.O-P3.3控制四个数码管的输出 即控制输出电平的高低
delaylms(1);
P3=0xff;
}
}
dis[3]++; //通道值加1
}
}
//
//
/*************通道选择函数*********************/
tongdao(uint n)
{
uint mi;
dis[3]=n+1;
dis[2]=ad_data[n]/51; //测得值转换为3位BCD码,最大为5.00V
dis[4]=ad_data[n]%51; //余数暂存
dis[4]=dis[4]*10; //计算小数第一位
dis[1]=dis[4]/51;
dis[4]=dis[4]%51;
dis[4]=dis[4]*10; //计算小数第二位
dis[0]=dis[4]/51;
if(dis[2]>=4&&dis[1]>6&&dis[0]>=0)
A=1;
else
A=0;
for(m=0;m<500;m++) //每个通道显示时间控制约为一秒
{
for(i=0;i<4;i++) //4位LED扫描控制
{
Disdata=dis_7[dis[i]];
if(i==2)
{
DISX=0;
}
P3=scan_con[i]; //P3.O-P3.3控制四个数码管的输出 即控制输出电平的高低
delaylms(1);
P3=0xff;
}
}
}
/*************0809转换子函数*******************/
test()
{
uchar m;
uchar s=0x00;
ad_con=s;
for(m=0;m<8;m++)
{
ALE=1;
_nop_();
_nop_();
ALE=0; //转换通道地址锁存
START=1;
_nop_();
_nop_();
START=0; //开始转换命令
_nop_();
_nop_();
_nop_();
_nop_(); //延时4US
while(EOC==0); //等待转换结束
OE=1;
ad
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 91136 2008-12-29 09:40 8路数字电压表\13 组 实验报告.doc
文件 1024000 2008-12-29 09:43 8路数字电压表\Design1.Bkp
文件 385024 2008-12-29 09:43 8路数字电压表\Design1.ddb
文件 8452096 2008-12-29 09:42 8路数字电压表\shuzidianbiao.Bkp
文件 1138688 2008-12-29 09:42 8路数字电压表\shuzidianbiao.ddb
文件 3917 2007-07-24 13:57 8路数字电压表\test21.c
目录 0 2008-12-29 09:43 8路数字电压表
----------- --------- ---------- ----- ----
11094861 7
相关资源
- 基于单片机的节日彩灯控制器设计
- 交通灯控制系统设计基于单片机的设
- 基于单片机的十字路口的智能交通控
- 基于单片机的孩子能交通灯系统外文
- 基于单片机的智能盆栽设计
- 基于单片机的线阵CCD驱动及采集系统
- 基于单片机的频率计设计
- 基于单片机的智能风扇
- 基于单片机的数字电压表的设计
- 基于单片机的dac0832阶梯波的proteus仿真
- 基于单片机的体温呼吸检测系统设计
- 基于单片机的数字多用表的设计
- 基于单片机的数字万用表的设计
- 基于单片机的红外遥控电子密码锁.
- 基于单片机的电阻对焊控制箱的设计
- 基于单片机的录音笔的设计
- 毕业设计 基于单片机的测速系统
- 基于单片机的流量控制系统设计
- 基于单片机的温室大棚温湿度亮度自
- 基于单片机的智能交通灯控制系统设
- 基于单片机的液位控制系统设计
- 基于单片机的9999秒倒计时器的设计
- 基于单片机的简易数字电压表的设计
- 基于单片机的水箱控制系统
- 基于单片机的TDS水质测试仪
- 基于单片机的LCD电子钟设计
- 基于单片机的DAC0832正弦波 发生器 源
- 基于单片机的DAC0832波形发生器 源码
- 一种基于单片机的正弦波输出逆变电
- 基于单片机的智能型金属探测器的设
评论
共有 条评论