📄 display8155.c
字号:
#include<reg51.h>
#include<absacc.h>
#include<string.h>
#include<intrins.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#define Uchar unsigned char
#define Uint unsigned int
#define Ulong unsigned long
#define P8155CW XBYTE [0Xdf00] /*定义8279命令和状态口*/
#define P8155A XBYTE [0Xdf01] /*定义8279数据口*/
#define P8155B XBYTE [0Xdf02] /*定义8279命令和状态口*/
#define P8155C XBYTE [0Xdf03] /*定义8279数据口*/
#define COM XBYTE [0xcfff] /*定义8279命令和状态口*/
#define DAT XBYTE [0xcffe] /*定义8279数据口*/
//**************************************
#define uchar unsigned char
uchar code table[] = {0xed,0x81,0xf4,0xb5,0x99, //01234/*字型表*/
0x3d,0x7d,0x85,0xfd,0xbd, //56789
0xdd,0xfd,0x6c,0xf1,0x7c, //abcde
0x5c,0x10,0x30,0x68,0xd9,0x00 //清空
}; //f - = l h
uchar idata diss[6] = {0x08,0x02,0x0c,0x07,0x09,0x14};
uchar code key[16] = {0x00,0x01,0x02,0x03,//键盘00 000 000
0x08,0x09,0x0a,0x0b, //键盘00 001 000
0x10,0x11,0x12,0x13,//00 010 000
0x18,0x19,0x1a,0x1b //键盘00 011 000
};
char code shape[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
sbit P8279RST=P1^6;
sbit clflag = ACC^7;
Uchar bdata flaga; //定义一个位
Uchar bdata flagb; //定义一个位
sbit input_1=flaga^0;
sbit input_2=flaga^1;
sbit input_3=flaga^2;
sbit input_4=flaga^3;
sbit input_5=flaga^4;
sbit input_6=flaga^5;
sbit input_7=flaga^6;
sbit input_8=flaga^7;
sbit input_9=flagb^0;
sbit input_10=flagb^1;
sbit input_11=flagb^2;
sbit input_12=flagb^3;
sbit input_13=flagb^4;
sbit input_14=flagb^5;
sbit input_15=flagb^6;
sbit input_16=flagb^7;
void disinput();
void delay10ms();
void display(number);
uchar deky();
void main (void)
{ unsigned int inputAA;
unsigned int inputBB;
uchar i;
unsigned int n;
//先初始化复位
P1=0x00;
delay10ms();
P1=0xff;
delay10ms();
P1=0x00;
//再总清空
COM = 0xd1; /*总清除命令*/
do { ACC=COM; }
while(clflag == 1);/* 等待总清结束*/
//清空完毕,设置基本显示器和键盘的初始状态
COM = 0x00; COM = 0x22; /*设定方式和分频系数*/
//开始显示
//display(46555); //显示数字
while(1){
deky();
delay10ms();
delay10ms();
delay10ms();
delay10ms();
delay10ms();
}
inputAA=P8155A;
inputBB=P8155B;
disinput();
while(1);
}
void display(unsigned int n)
{ int a,b,c,d,e,f;
unsigned int aa,bb,cc,dd,ee,ff;
ee=n/10;
e=n%10;
dd=ee/10;
d=ee%10;
cc=dd/10;
c=dd%10;
bb=cc/10;
b=cc%10;
aa=bb/10;
a=bb%10;
ff=aa/10;
f=ff%10;
COM=0x00;
COM=0x22;
COM=0x80;
DAT=table[e];
COM=0x81;
DAT=table[d];
COM=0x82;
DAT=table[c];
COM=0x83;
DAT=table[b];
COM=0x84;
DAT=table[f];
COM=0x85;
DAT=table[a];
COM=0x86;
DAT=table[8];
COM=0x87;
DAT=table[8];
if(n<10000){COM=0x85;
DAT=0x00;
}
if(n<100000){COM=0x84;
DAT=0x00;
}
if(n<1000){COM=0x83;
DAT=0x00;
}
if(n<100){COM=0x82;
DAT=0x00;
}
if(n<10){COM=0x81;
DAT=0x00;
}
while(1);
}
uchar deky()
{
char ROWCOL,ROW,COL,MIDDUL;
COM = 0xd1; /*总清除命令*/
do { ACC=COM; }
while(clflag == 1);/* 等待总清结束*/
//清空完毕,设置基本显示器和键盘的初始状态
COM=0x00;
COM=0x22;
for(;COM&0x0f;){;}
COM=0x00;
COM=0x22;
COM=0x40;
ROWCOL=DAT; //读数据
COM=0x80; //显示行号和列号 第一个数显示行号
MIDDUL=ROWCOL;
ROW=(ROWCOL>>3)&0x07;
//DAT=table[(ROW]|0x80;
DAT=table[ROW];
COM=0x81; //10000001 第二个数显示列号
ROWCOL=MIDDUL;
COL=ROWCOL&0x07;
DAT=table[COL];
//DAT=shape[7-(ROWCOL&0x07];
COM=0x82;
DAT=0xb5;
COM=0x83;
DAT=0xb5;
COM=0x84;
DAT=0xb5;
COM=0x85;
DAT=0xb5;
COM=0x86;
DAT=0xb5;
COM=0x87;
DAT=0xb5;
}
void delay10ms()
{
unsigned int i=12000;
while(i--);
}
void disinput()
{ inputAA=P8155A;
inputBB=P8155B;
COM = 0xd1; /*总清除命令*/
do { ACC=COM; }
while(clflag == 1);/* 等待总清结束*/
//清空完毕,设置基本显示器和键盘的初始状态
COM=0x00;
COM=0x22;
COM=0x80;
if (input_1==0) DAT=0xed;
else DAT=0x81;
COM=0x81; //10000001 第二个数显示列号
if (input_2==0) DAT=0xed;
else DAT=0x81;
COM=0x82;
if (input_3==0) DAT=0xed;
else DAT=0x81;
COM=0x83;
if (input_4==0) DAT=0xed;
else DAT=0x81;
COM=0x84;
if (input_5==0) DAT=0xed;
else DAT=0x81;
COM=0x85;
if (input_6==0) DAT=0xed;
else DAT=0x81;
COM=0x86;
if (input_7==0) DAT=0xed;
else DAT=0x81;
COM=0x87;
if (input_8==0) DAT=0xed;
else DAT=0x81;
/*if (input_9==0) DAT=0xed;
else DAT=0x81;
COM=0x81; //10000001 第二个数显示列号
if (input_10==0) DAT=0xed;
else DAT=0x81;
COM=0x82;
if (input_11==0) DAT=0xed;
else DAT=0x81;
COM=0x83;
if (input_12==0) DAT=0xed;
else DAT=0x81;
COM=0x84;
if (input_13==0) DAT=0xed;
else DAT=0x81;
COM=0x85;
if (input_14==0) DAT=0xed;
else DAT=0x81;
COM=0x86;
if (input_15==0) DAT=0xed;
else DAT=0x81;
COM=0x87;
if (input_16==0) DAT=0xed;
else DAT=0x81;
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -