📄 da.c
字号:
#include<reg51.h>
#include<stdio.h>
sbit SEL1=P3^4;
sbit SEL2=P3^5;
sbit SEL3=P3^6;
sbit SEL4=P3^7;
sbit OE=P2^4;
unsigned char ADC0808;
unsigned char ledmap[20]= // 共阴数码管
{
0x3f,0x06,0x5b,0x4f,0x66, // 0,1,2,3,4,
0x6d,0x7d,0x07,0x7f,0x6f, // 5,6,7,8,9
0xbf,0x86,0xdb,0xcf,0xe6, // 带点的0——9
0xed,0xfd,0x87,0xff,0xef, //
};
unsigned int getdata;
void ext_int0_init(void);
void delay(unsigned int t);
void disp();
void main(void)
{
ext_int0_init(); // 外部中断初始化
EA=1;
while(1)
{
P2=0x00; // 0808初始化
delay(10);
P2=0x08; // 通道琐存 0808所有的寄存器清零
delay(10);
P2=0x00; // 开始AD转换
delay(10); // 等待转换
disp();
}
}
void ext_int0_init(void) //
{
IT0=1;
EX0=1;
}
void disp()
{
P1=getdata;
P1=ledmap[0]; // 通道显示
SEL1=0;
delay(10);
SEL1=1;
delay(10);
P1=ledmap[getdata*100/51/100%10+10]; // 百位 (小数点位)
SEL2=0;
delay(10);
SEL2=1;
delay(10);
P1=ledmap[getdata*100/51/10%10]; // 十位
SEL3=0;
delay(10);
SEL3=1;
delay(10);
P1=ledmap[getdata*100/51%10]; // 个位
SEL4=0;
delay(10);
SEL4=1;
delay(10);
}
void ext_int0(void) interrupt 0 using 1 // 读转换的数据
{
OE=1;
getdata=P0;
OE=0;
}
void delay(unsigned int t)
{
while(--t);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -