资源简介
用的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单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- proteus仿真 AT89C51输出各种波形
- 00
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- DS18B20分布式多点测温的Proteus仿真
- ADC0809数字电压表 LCD1602显示 汇编程序
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 51多机通信(内附Proteus及.hex文件)
- IIC proteus仿真实验
- 8086交通灯 Proteus原理图及程序
- 单片机仿真软件proteus6.7免安装绿色版
- 关于proteus仿真arm7出现错误的问题
- 基于PROTEUS的ARM7显示系统设计与仿真实
- STM32+1602液晶proteus仿真.zip
- AT89C51+ADC0808 PROTEUS仿真
- ADC0832ADC0809DAC0832三种芯片程序,c程序
- 单片机驱动4相步进电机proteus仿真
- proteus元件库对照表 (整理清晰)
- 微机原理 十字路口交通灯控制 prot
- 中央空调室内智能温控器设计论文、
- 基于51单片机的交通灯设计
- 基于AT89C51的十字路口交通灯设计pro
- Proteus单片机仿真大全几百个part4
- Proteus升压电路仿真
- keil调试仿真技巧-从入门到精通
- 十字路口交通灯.pdsprj
评论
共有 条评论