⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch451.h

📁 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 + -