资源简介
adc0809双通道显示 在proteus上仿真通过 有驱动
代码片段和文件信息
#include
unsigned char code dispbitcode[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};
unsigned char dispbuf[4];
unsigned int i;
unsigned int j;
unsigned char getdataV1=0 getdataV2=0;
bit flag flag1;
unsigned int temptemp1;
sbit ST=P3^0; //启动信号 一个下下降沿
sbit OE=P3^1; //OE=1的时候 取数据
sbit EOC=P3^2; //判断是否转换完毕
sbit CLK=P3^3; //时钟脉冲
sbit P34=P3^4; // A
sbit P35=P3^5; // B
sbit P36=P3^6; // 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; //通道1 开启采集
sbit K2=P2^7; //通道1 停止采集
sbit K3=P2^4; //通道2 开启采集
sbit K4=P2^5; //通道2 停止采集
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; //通道0
P35=0;
P36=0;
OE=0;
ST=1;
ST=0;
Delay(1);
while(EOC==0);
OE=1;
getdataV1=P0;
OE=0;
}
void ADC0808_Start1()
{
P34=1; //通道1
P35=0;
P36=0;
OE=0;
ST=1;
ST=0;
Delay(1);
while(EOC==0);
OE=1;
getdataV2=P0;
OE=0;
}
void main()
{
TimeInitial();
K1=1K2=1K3=1K4=1;
ST=1;
while(1)
{
if(K1==0 && K3==1)
{
flag=1; //启动 通道1
flag1=0;
}
else if(K1==1&& K3==0)
{
flag=0;
flag1=1;
}
else if(K2==0)
{
flag=0;
}
else if(K4==0)
{
flag1=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启动
}
if(flag1==1)
{
ADC0808_Start1();
temp1=getdataV2*5.0/255*1000; //获得电压。 //要和参考电压一致
dispbuf[0]=temp1%10; //个位
dispbuf[1]=temp1/10%10; //十位
dispbuf[2]=temp1/100%10; //百位
dispbuf[3]=temp1/1000; //千位
}
else if(flag1==0)
{
ST=1; //停止AD启动
}
}
}
void t1(void) interrupt 3 using 0
{
TH1=(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-11-23 23:38 ADC0809两道电压采集\
文件 8447 2011-11-25 11:44 ADC0809两道电压采集\0809测试
文件 3206 2011-11-25 11:46 ADC0809两道电压采集\0809测试.c
文件 3987 2011-11-25 11:44 ADC0809两道电压采集\0809测试.hex
文件 48 2011-11-25 11:44 ADC0809两道电压采集\0809测试.lnp
文件 7617 2011-11-25 11:44 ADC0809两道电压采集\0809测试.LST
文件 12360 2011-11-25 11:44 ADC0809两道电压采集\0809测试.M51
文件 8656 2011-11-25 11:44 ADC0809两道电压采集\0809测试.OBJ
文件 978 2010-07-03 13:03 ADC0809两道电压采集\0809测试.opt.bak
文件 3528 2011-11-25 11:46 ADC0809两道电压采集\0809测试.plg
文件 2113 2010-07-03 11:05 ADC0809两道电压采集\0809测试.Uv2.bak
文件 55707 2011-11-25 11:46 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
文件 55713 2011-11-24 11:30 ADC0809两道电压采集\0809测试_uvopt.bak
文件 13245 2011-11-22 21:23 ADC0809两道电压采集\0809测试_uvproj.bak
文件 163058 2011-11-25 10:33 ADC0809两道电压采集\Last Loaded 数据采集.DBK
文件 163248 2011-11-25 11:46 ADC0809两道电压采集\数据采集.DSN
文件 742 2011-11-25 11:46 ADC0809两道电压采集\数据采集.PWI
- 上一篇:si4432无线模块原理图PCB
- 下一篇:单片机双机通讯proteus仿真
相关资源
- 单片机双机通讯proteus仿真
- 光耦隔离控制继电器驱动直流电机p
- 8086实验IO控制灯亮Proteus实验报告
- 基于proteus的波形发生器设计
- 数字电压表基于proteus的仿真
- 多层电梯的 proteus仿真
- AD1674 proteus仿真
- 数控直流稳压电源 Proteus
- 密码锁 Proteus
- proteus仿真adc0808多通道数据采集
- proteus中51单片机制作的电子琴
- ADC0809+12864液晶显示+电压值+proteus图仿
- 八个Proteus放大器
- ADC0809模数转换器的使用详解与程序
- RS485一对四双向通信Proteus仿真+Keil收发
- proteus仿真元件符号大全
- ADC0809 C51单片机控制 输出到串口显示
- 可LCD显示计算价格的电子秤proteus仿真
- 毕业设计__基于51单片机的公交车自动
- 2051modbus的通讯仿真PROTEUS
- 8086_proteus_all
- PIC单片机 IIC通信 proteus仿真文件图
- PIC单片机SPI通信 带proteus仿真
- proteus+8086 汽车管理系统课程设计
- proteus+8086 步进电机控制
- proteus+8086 流水灯实现
- 8086仿真-LCD12864
- DS18B20 多点温度测量 用proteus仿真 课
- 基于51单片机的ds18b20的proteus仿真
- 51单片机12864液晶屏proteus仿真源代码
评论
共有 条评论