📄 ch451.h
字号:
//用于操作CH451芯片,本程序曾实际运用在89C51中,用了键盘、显示
sbit LOAD=P1^5; //这部分定义了89C51与CH451之间的接口,
sbit DIN=P1^6; //用户可根据自己的不同情况加以调整
sbit DCLK=P1^7;
sbit DOUT=P3^3;
void CH451Init(void) //初始化函数
{
DIN=0;
delay(5);
DIN=~DIN;
DCLK=1;
DIN=1;
LOAD=1;
DOUT=1;
TCON&=0xF3;
EX1=1;
CH451WR(0x0808);
}
void CH451WR(uint dat) //写CH451函数
{EX1=0;
uchar i;
for(i=0;i<12;i++)
{DCLK=0;
DIN=dat&0x01;
DCLK=1;
dat=dat>>1;
}
LOAD=0;
LOAD=1;
EX1=1;
}
void keybd(void) interrupt 2 using 2 //键盘响应中断子函数,中断入口用户可自己选
{
uchar i,j=0x07,k=6;
for(i=0;i<4;i++)
{DCLK=0;
DIN=j&0x01;
j=j>>1;
DCLK=1;
}
LOAD=0;
LOAD=~LOAD;
for(i=0;i<8;i++)
{DCLK=0;
j=j|DOUT;
j=j<<k--;
KCLK=1;
}
keyvalue=j; //至此得到键值,以下是根据不同键值做出的响应,用户可自己定义响应函数
switch(keyvalue){
case 0x47: up();TH1=0x0B;TL1=0xDC;TR1=1;break;
case 0x4F: down();TH1=0x0B;TL1=0xDC;TR1=1;break;
case 0x57: config();TH1=0x0B;TL1=0xDC;TR1=1;break;
case 0x5F: ensure();TH1=0x0B;TL1=0xDC;TR1=1;break;
case 0x67: print();break;
default: break;
}
}
void show(uchar v1,uchar v2,uchar v3,uchar v4,uchar v5,uchar v6,uchar v7) //显示子函数,这里只驱动6个数码管,用户可扩展
{uint i;
uchar addr=0x08;
i=addr++;i=(i<<8)|v1;CH451WR(i);
i=addr++;i=(i<<8)|v2;CH451WR(i);
i=addr++;i=(i<<8)|v3;CH451WR(i);
i=addr++;i=(i<<8)|v4;CH451WR(i);
i=addr++;i=(i<<8)|v5;CH451WR(i);
i=addr++;i=(i<<8)|v6;CH451WR(i);
i=0x0600;i=i|v7;CH451WR(i);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -