📄 general.h
字号:
/*8279键盘和LED显示程序*/
#include<absacc.h>
#include<stc89c58.h>
#include<timer1.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define COM XBYTE [0x0001] //命令状态口
#define DAT XBYTE [0X0000] //数据口
#define RAM XBYTE [0X8000] //RAM地址
/*共阴的七段数码管译码0 1 2 3 4 5 6 7 8 9 a b c d e f*/
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar xdata Mydata[1000] _at_ 0x8000;
uint fre_order[16];
uint ftw=0;
sbit ad9858_reset=P1^5; //9858reset
sbit ad9858_fud=P1^4;
sbit ad9858_cs=P1^2;
sbit ad9858_sclk=P1^0;
sbit ad9858_serial_reset=P1^3;
sbit ad9858_sdata=P1^1;
sbit ad9858_ps0=P1^6;
sbit ad9858_ps1=P1^7;
//uchar ad9858_cfrdata[]={0x00,0x58,0x00,0x00,0x00};
uchar ad9858_cfrdata[]={0x00,0x00,0x60,0x00,0x78};//0x58 enable the sysclkout
uchar ad9858_ftw0data[]={0x03,0x06,0x66,0x66,0x66};
//key0~key7 显示0~7
//skey0~skey7 显示8~f
uchar ad9858_ftw1[]={0x05,0x0c,0xcc,0xcc,0xcc};
int key_num[]={0,0,0,0};
uchar keyin(void);
void delay(uint k) //delay k msec;
{
uint i,j;
for(i=0;i<k;i++)
{
for(j=0;j<5;j++)
;
}
return ;
}
uchar *convert(uint *value)
//uint value[16];
{
uint i,a;
ulong j;
uchar temp[4];
j=0;
a=1;
for(i=0;i<8;i++)
{
j+=value[7-i]*a;
a*=10;
}
j*=4.294967296;
temp[0]=j%256;
j/=256;
temp[1]=j%256;
j/=256;
temp[2]=j%256;
temp[3]=j/256;
return temp;
}
void AD9858_update(uchar *p)
{
uint i,j;
uchar temp1;
ad9858_reset=0;
ad9858_fud=0;
ad9858_cs=0;
for(i=0;i<4;i++)
{
ad9858_ftw1[i+1]=p[i];
}
for(i=0;i<48;i++)
{
j=0;
temp1 = ad9858_ftw1[j];
ad9858_sclk=0;
delay(1);
ad9858_sdata = temp1&0x80==0?0:1;
ad9858_sclk=1;
delay(1);
temp1<<=1;
if(!i%8) j++;
}
ad9858_cs=1;
//.............
ad9858_ps0=0;
ad9858_ps1=1;
}
/*按键函数*/
void key0(void)
{
COM=0x80+ftw-1;
DAT=table[0];
}
void key1(void)
{
COM=0x80+ftw-1;
DAT=table[1];
}
void key2(void)
{
COM=0x80+ftw-1;
DAT=table[2];
}
void key3(void)
{
COM=0x80+ftw-1;
DAT=table[3];
}
void key4(void)
{
COM=0x80+ftw-1;
DAT=table[4];
}
void key5(void)
{
COM=0x80+ftw-1;
DAT=table[5];
}
void key6(void)
{
COM=0x80+ftw-1;
DAT=table[6];
}
void key7(void)
{
COM=0x80+ftw-1;
DAT=table[7];
}
void key8(void)
{
COM=0x80+ftw-1;
DAT=table[8];
}
void key9(void)
{
COM=0x80+ftw-1;
DAT=table[9];
}
void key10(void)
{
// COM=0x80;
// DAT=table[10];
key_num[0]+=1;
}
void key11(void)
{
COM=0x80;
DAT=table[11];
key_num[1]+=1;
}
void key12(void)
{
COM=0x80;
DAT=table[12];
key_num[2]+=1;
}
void key13(void)
{
COM=0x80;
DAT=table[13];
key_num[3]+=1;
}
void key14(void)
{
// COM=0x80;
// DAT=table[14];
uint k;
ftw=0;
for(k=0;k<4;k++)
{
fre_order[k]+=key_num[k];
key_num[k]=0;
}
AD9858_update(convert(fre_order));
for(k=0;k<8;k++)
{
COM=0x80+k;
DAT=table[fre_order[k]];
}
}
void key15(void)
{
//COM=0x80;
// DAT=table[15];
/* uint i,j;
for(i=0;i<1000;i++)
{
Mydata[i]=i%8;
}*/
uint j;
if(ftw>8)
{
j=ftw;
for(;j>8;j--)
fre_order[j]=0;
}
if(ftw<8)//不足的位数补成0
{
j=ftw;
for(;j<8;j++)
fre_order[j]=0;
}
//if(!ftw)
for(j=0;j<8;j++)
{
COM=0x80+j;
DAT=table[fre_order[j]];
}
ftw=0;//顺序字置零;
/* for(j=0;j<4;j++)
{
COM=0x80+j;
DAT=convert(fre_order)[j];
}*/
AD9858_update(convert(fre_order));
}
/*带shift功能按键*/
void skey0(void)
{
COM=0x80;
DAT=table[8];
}
void skey1(void)
{
COM=0x81;
DAT=table[9];
}
void skey2(void)
{
COM=0x82;
DAT=table[10];
}
void skey3(void)
{
COM=0x83;
DAT=table[11];
}
void skey4(void)
{
COM=0x84;
DAT=table[12];
}
void skey5(void)
{
COM=0x85;
DAT=table[13];
}
void skey6(void)
{
COM=0x86;
DAT=table[14];
}
void skey7(void)
{
COM=0x87;
DAT=table[15];
}
void skey8(void)
{
COM=0x86;
DAT=table[0];
}
void skey9(void)
{
COM=0x85;
DAT=table[7];
}
void skey10(void)
{
COM=0x84;
DAT=table[6];
key_num[0]-=1;
}
void skey11(void)
{
COM=0x83;
DAT=table[5];
key_num[1]-=1;
}
void skey12(void)
{
COM=0x82;
DAT=table[4];
key_num[2]-=1;
}
void skey13(void)
{
COM=0x81;
DAT=table[3];
key_num[3]-=1;
}
void skey14(void)
{
//COM=0x80;
//DAT=table[2];
uint i;
for(i=0;i<4;i++)
key_num[i]=0;
ftw=0;
}
void skey15(void)
{
//COM=0x81;
//DAT=table[1];
uint i;//shift +key15撤销;
for(i=0;i<8;i++)
fre_order[i]=0;
ftw=0;
}
uchar keyin(void)
{
uchar i;
//while(int_flag==0);
COM=0x40;
i=DAT;i=i&0x7f; //取键盘数据低7位
return(i);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -