📄 displed.c
字号:
#include <intrins.h>
//#include "me.h"
#include <regx52.h>
#include "disp.h"
//此处定义数码管各段位置
#define a 0x01 //D7
#define b 0x02 //D6
#define c 0x04 //D4
#define d 0x08 //D3
#define e 0x10 //D2
#define f 0x20 //D0
#define g 0x40 //D1
#define dot 0x80 //D5
extern unsigned char code seg[];
//////////////////////////////
// ~(a+b+c+d+e+f), // 共阳极
// (a+b+c+d+e+f), // 共阴极
//定义特殊符号
//数码管显示时用的编码
unsigned char code seg[] =
{
~(a+b+c+d+e+f), // 0
~(b+c), // 1
~(a+b+d+e+g), // 2
~(a+b+c+d+g), // 3
~(b+c+f+g), // 4
~(a+c+d+f+g), // 5
~(a+c+d+e+f+g), // 6
~(a+b+c), // 7
~(a+b+c+d+e+f+g), // 8
~(a+b+c+d+f+g), // 9
~(a+b+c+e+f+g), //A
~(c+d+e+f+g), //b
~(a+d+e+f), //C
~(b+c+d+e+g), //d
~(a+d+e+f+g), //E
~(a+e+f+g) //F
};
unsigned char stacode=0;
char dispbuf[6];
char low[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void put_num(char cnum)
{
P0=seg[ cnum & 0x0f];
}
void disp_ascii(void)
{
static char disppoint;
P2=P2|0x3f;
put_num(dispbuf[disppoint]);
//P0=seg[ dispbuf[disppoint] & 0x0f];
if(disppoint==2 && stacode==1) P0&=~dot; /* 小数点*/
P2=P2 & low[disppoint];
if (disppoint++>=5) disppoint=0;
}
void disp_(void)
{
static char disppoint;
P2=P2|0x3f;
//put_num(dispbuf[disppoint]);
P0= dispbuf[disppoint];
if(disppoint==2 && stacode==1) P0&=~dot; /* 小数点*/
P2=P2 & low[disppoint];
if (disppoint++>=5) disppoint=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -