📄 display.h
字号:
#ifndef __DISPLAY_H__
#define __DISPLAY_H__
#define uchar unsigned char
#define uint unsigned int
//0 1 2 3 4 5 6 7 8 9 - 灭 _
unsigned char code DuanMa[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xf7}; //共阳
unsigned char code WeiMa[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//分别对应相应的数码管点亮,即位码
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0替换
void SEG_Latch(void) //段码锁存子程序
{
P2 |= 0xe0;//P2.7~P2.5=111,Y7=0,Y7C=1,即U7的LE=1,段码数据选通
_nop_();
P2 &= 0x1f;//P2.7~P2.5=000,Y7=1,Y7C=0,即U7的LE=0,段码数据被锁存
}
void BIT_Latch(void) //位码锁存子程序
{
P2 |= 0xC0; //P2.7~P2.5=110,Y6=0,Y6C=1,即U8的LE=1,位码数据选通
_nop_();
P2 &= 0x1f; //P2.7~P2.5=000,Y6=1,Y6C=0,即U8的LE=0,位码数据被锁存
}
void delay__50us(uint t) //50us 延时
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--)
;
}
void display(uchar *point)
{
unsigned char i=0;
for(i=0;i<8;i++)
{
DataPort=WeiMa[i]; //取位码
BIT_Latch(); //数据锁存
DataPort=DuanMa[*(point+i)]; //取显示数据,段码
SEG_Latch(); //数据锁存
delay__50us(20); // 扫描间隙延时,时间太长会闪烁,太短不亮
DataPort=0xff; //关显示,消除重影
SEG_Latch(); //数据锁存
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -