📄 静态数码显示程序.c
字号:
//MCU:AT89S51
//晶振:12M
#include"AT89X51.H"
unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90
};//数字0~9共阳数码管代码
unsigned int tcount; //全局变量
unsigned char count; //全局变量
unsigned char del_count;
void main(void)
{
TMOD=0x02; //使用定时器0,选择方式2(常数自动重装的8位定时器)
TH0=0x06; //保存数值,用于自动重装
TL0=0x06; //定时250uS初值
TR0=1; //开定时器0
ET0=1; //开定时器0溢出中断
EA=1; //开总中断
P1_0=0;
while(1)
{
; //等待中断
}
}
/**********定时器T0溢出中断服务程序***************/
void t0(void) interrupt 1 using 0
{
tcount++;
/*********************///实际应用的静态扫描是不用这几条语句的,
del_count++; //现在实验板上没有独立的静态扫描数码管,
if(del_count==50) //做静态扫描实验时是利用动态扫描连接方式其中一个数码管来做的,
{ //插入这几条语句是用来保护数码管的,使其亮度不要过高。
P1_0=~P1_0; //当然了,明白数码显示的原理就可以了,实际应用中几乎不用单片机直接对数码管进行静态扫描,
del_count=0; //因为直接用单片机静态显示数码管太耗I/O口了,有专门静态扫描数码管的芯片,比如MAX7219等。
}
/*********************/
if(tcount==4000) //1S到
{
tcount=0;
count++;
if(count==10)
count=0;
P0=dispcode[count]; //送出数码管代码显示
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -