资源简介
用的51+AD0809(仿真只能是0808),里面包含了驱动代码,用proteus仿真实现,
实现的功能: K1 启动电压采集,在数码管上显示。K2是停止电压采集
电压计算公式: Vout=Vin*(基准电压)/(2的N次方) *1000.
说明:Vout:是要显示的电压。
Vin :采集外部的电压,就是模拟电压,需要转换成数字电压的。
N : 几位AD就是几,比如0809是8位 他就是256.
1000 : 是采集的扩大了1000倍,为了在数码管上显示,这个具体有无都可以,只是为了好计算
代码片段和文件信息
#include
unsigned char code dispbitcode[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};
unsigned char dispbuf[4];
unsigned int i;
unsigned int j;
unsigned char getdataV1 getdataV2;
bit flag;
unsigned int temp;
sbit ST=P3^0; //启动信号 一个下下降沿
sbit OE=P3^1; //OE=1的时候 取数据
sbit EOC=P3^2; //判断是否转换完毕
sbit CLK=P3^3; //时钟脉冲
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6; //A B C 通道选择
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3; //数码管选择
sbit P17=P1^7; //数码管的DP
sbit K1=P2^6;
sbit K2=P2^7;
void TimeInitial();
void Delay(unsigned int i);
void TimeInitial()
{
TMOD=0x10;
TH1=(65536-200)/256; //0.2ms
TL1=(65536-200)%256;
EA=1;
ET1=1;
TR1=1;
}
void Delay(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=0;j<125;j++);
}
void Display()
{
P1=dispbitcode[dispbuf[3]];
P17=1; //小数点
//P2=0X0E;
P20=0;
P21=1;
P22=1;
P23=1;
Delay(5);
P1=0x00;
P1=dispbitcode[dispbuf[2]];
// P2=0X0D;
P20=1;
P21=0;
P22=1;
P23=1;
Delay(5);
P1=0x00;
P1=dispbitcode[dispbuf[1]];
// P2=0X0B;
P20=1;
P21=1;
P22=0;
P23=1;
Delay(5);
P1=0x00;
P1=dispbitcode[dispbuf[0]];
//P2=0X07;
P20=1;
P21=1;
P22=1;
P23=0;
Delay(5);
P1=0x00;
}
void ADC0808_Start()
{
P34=0;
P35=0;
P36=0;
OE=0;
ST=1;
ST=0;
Delay(1);
while(EOC==0);
OE=1;
getdataV1=P0;
OE=0;
}
void main()
{
TimeInitial();
K1=1K2=1;
ST=1;
while(1)
{
if(K1==0)
{
flag=1;
}
if(K2==0)
{
flag=0;
}
Display(); //为了屏幕上有显示。
if(flag==1)
{
ADC0808_Start();
temp=getdataV1*5.0/255*1000; //获得电压。 //要和参考电压一致
dispbuf[0]=temp%10; //个位
dispbuf[1]=temp/10%10; //十位
dispbuf[2]=temp/100%10; //百位
dispbuf[3]=temp/1000; //千位
//Display(); //放到这里不可以的
}
else
{
ST=1; //停止AD启动
}
}
}
void t1(void) interrupt 3 using 0
{
TH1=(65536-200)/256;
TL1=(65536-200)%256;
CLK=~CLK;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-11-23 23:38 ADC0809单通道电压采集\
文件 6921 2011-11-24 11:24 ADC0809单通道电压采集\0809测试
文件 2321 2011-11-24 11:29 ADC0809单通道电压采集\0809测试.c
文件 3071 2011-11-24 11:24 ADC0809单通道电压采集\0809测试.hex
文件 48 2011-11-24 11:24 ADC0809单通道电压采集\0809测试.lnp
文件 5902 2011-11-24 11:24 ADC0809单通道电压采集\0809测试.LST
文件 10312 2011-11-24 11:24 ADC0809单通道电压采集\0809测试.M51
文件 6806 2011-11-24 11:24 ADC0809单通道电压采集\0809测试.OBJ
文件 978 2010-07-03 13:03 ADC0809单通道电压采集\0809测试.opt.bak
文件 5642 2011-11-24 11:30 ADC0809单通道电压采集\0809测试.plg
文件 2113 2010-07-03 11:05 ADC0809单通道电压采集\0809测试.Uv2.bak
文件 55713 2011-11-24 11:30 ADC0809单通道电压采集\0809测试.uvopt
文件 13244 2011-11-23 23:37 ADC0809单通道电压采集\0809测试.uvproj
文件 978 2010-07-03 11:05 ADC0809单通道电压采集\0809测试_Opt.Bak
文件 0 2010-07-03 09:29 ADC0809单通道电压采集\0809测试_Uv2.Bak
文件 55709 2011-11-23 23:37 ADC0809单通道电压采集\0809测试_uvopt.bak
文件 13245 2011-11-22 21:23 ADC0809单通道电压采集\0809测试_uvproj.bak
文件 138722 2011-11-23 23:38 ADC0809单通道电压采集\Last Loaded 数据采集.DBK
文件 159672 2011-11-24 11:28 ADC0809单通道电压采集\数据采集.DSN
文件 742 2011-11-24 11:28 ADC0809单通道电压采集\数据采集.PWI
相关资源
- 51单片机数码管动态显示+汇编程序+
- 8086最小方式的输出,基于Proteus电路图
- ADC0809模数转换与显示(汇编程序)
- 热敏电阻测温proteus仿真
- 基于51单片机的PWM直流电机调速prote
- 智能抢答器proteus仿真电路图
- tft9341仿真模拟
- Proteus学习资料链接.txt
- 基于AD&DA的proteus仿真
- 基于51单片机的密码锁Proteus仿真.rar
- zw_(proteus仿真图+程序).zip
- uCOS_51uCOS-II v2.52基于51单片机的移植
- PIC单片机应用开发24例——基于
- 超全Proteus库文件包含msp430库文件
- 用Proteus仿真8086和8255源代码是汇编语
- 基于ADC0809与单片机制作的数字电压表
- 用proteus制作数字时钟
- 温度传感器DS18B20 PROTEUS仿真+源程
- ADC0809与51单片机的连接方式
- 555proteus仿真8例
- Proteus仿真红外遥控
- 51单片机LCD1602模拟门禁系统 源代码
- 单片机与PC机通信 单片机和pc相互发送
- PROTEUS仿真100
- 电子音乐盒proteus仿真.rar
- Proteus 仿真PID电机控制
- 基于STM32F103的直流电机PWM调速Proteus仿
- L289驱动电机Proteus仿真原理图
- 交通灯proteus仿真设计仿真+源码
- 红绿灯proteus仿真
评论
共有 条评论