📄 Ȧ
字号:
//程序:ex6_1.c
//功能:简易数字电压表程序
#include<reg51.h>
#define uchar unsigned char //无符号字符型数据预定义为uchar
uchar code led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8E}; //定义0~F显示码
sbit P0_2=P0^2; //可寻址位定义
sbit P0_3=P0^3;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
void sepr(unsigned char i); //把形式参数i的高低位分开,分别存放在全局变量chh,chl中
void disp(); //显示chh,chl中的数据(两位)
uchar chh,chl; //全局变量定义
void main() //主函数
{
uchar a;
unsigned char i;
while(1) {
P0_2=1;
for(a=0;a<50;a++); //延时
P0_2=0; //在P0.2引脚产生下降沿,START和ALE引脚产生上升沿,锁存通道地址,所有内部寄存器清0
for(a=0;a<50;a++); //延时
P0_2=1; //在P0.2上产生上升沿,START上产生下降沿,A/D转换开始
while(P0_3==0); //等待转换完成,EOC=1表示转换完成
P0_2=0; //P0_2=0,则OE=1,允许读数
P1=0xff; //作为输入口,P1口先置全1
i=P1; //读入A/D转换数据
sepr(i); //数据高低位分开
disp(); //显示数据
}
}
//函数名:sepr
//函数功能: 将8位二进制数00~FFH转换为0.0~5.0,低位和高位分别存在chl和chh中
//形式参数: i为A/D转换后的8位二进制数
//返回值: chl中存放拆分后的低位、chh中存放拆分后的高位
void sepr( i) //拆分高位和低位
{
uchar ch;
ch=i;
chh=ch/51; //除以51得到高位
ch=ch%51; //取余运算
chl=ch*10/51; //再除以51,并扩大10倍,得到低位
}
//函数名:disp
//函数功能:显示全局变量中chl和chh中的数字
//形式参数:无
//返回值:无
void disp()
{
uchar j;
P2=led[chl]; //显示低位
P0_6 = 1;
P0_7 = 0;
for(j=0;j<100;j++); //延时
P2=led[chh]; //显示高位
P0_6 = 0;
P0_7 = 1;
for(j=0;j<100;j++); //延时
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -