资源简介
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仿真
相关资源
- 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
评论
共有 条评论