📄 guiyihua2.c
字号:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit Addr0 = P2^0; //8通道选择位
sbit Addr1 = P2^1;
sbit Addr2 = P2^2;
sbit OE = P2^3; //转换数据输出位
//sbit CLK = P2^4;
sbit ST = P2^5; //开始位,地址锁存位
sbit EOC = P2^6; //转换结束位
uchar code DispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90}; //段码0-9
uchar DispBuf[4]; //显示缓存区
sfr LedPort=0x80; //P0口接段码
sfr DataPort = 0xB0;
sbit LED0=P1^0; //数码管控制位
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
uint Data,count,Getdata;
void Delay(uchar i) //延时
{
for(;i>0;i--)
{
uchar j=244;
while(--j);
}
}
void Display() //显示子程序
{
P1 = 0xff; //关所有的位选
LedPort = DispBuf[1]&0x7f; //动态扫态
LED1 = 0;
Delay(1);
LED1 = 1;
LedPort = DispBuf[2];
LED2 = 0;
Delay(1);
LED2 = 1;
LedPort = DispBuf[3];
LED3 = 0;
Delay(1);
LED3 = 1;
}
void main()
{
TMOD=0x01; //利用定时器,定时1S转换一次数据
TH0=(65536-50000)/256; //对定时器0,赋初值
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
Addr0 = 0; //选通ADC0809的IN0
Addr1 = 0;
Addr2 = 0;
OE = 0;
ST = 0;
ST = 1; // 初始化ADC0809
Delay(1);
ST = 0; // 开始转换数据
Delay(1);
while(!EOC); //等待ADC0809转换数完成
OE = 1; //送出转换得的数据
Getdata = DataPort; //将转换得的数据赋值给Getdata
OE = 0;
ST = 1;
Data=Getdata*49/25; //将ADC0809送来的数据,转化作对应的电压值
// Data = Getdata;
Display();
}
}
void Timer0() interrupt 1
{
TH0 = (65536-50000)/256; //再次赋值
TL0 = (65536-50000)%256;
count++;
if(count==20)
{
count = 0;
DispBuf[1]=DispTab[Data/100];
DispBuf[2]=DispTab[(Data%100)/10];
DispBuf[3]=DispTab[(Data%100)%10];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -