• 大小: 115KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: 其他
  • 标签:

资源简介

CH452键盘数码管驱动程序,配有电路图,很方便查看是使用!

资源截图

代码片段和文件信息

/**************************************************
*程序名称:CH452+AT89S52 C控制程序          
*程序功能: 用CH452驱动16个按键  
* 12MHZ晶振
*  P2口用LED灯显示按键值  
*     
*编写:fw&x 编写时间:2008\11\3
***************************************************/
#include
#include
#define uchar unsigned char
#define uint unsigned int

/* 4线SPI接口的连接与实际电路有关 */
sbit   CH452_DCLK=P3^6;                     // 串行数据时钟上升延激活
sbit   CH452_DIN=P3^5;                 // 串行数据输出,接CH452的数据输入
sbit   CH452_LOAD=P3^4;                     // 串行命令加载,上升延激活
sbit   CH452_DOUT=P3^3;                     // INT1,键盘中断和键值数据输入,接CH452的数据输出

//#pragma NOAREGS // 如果MCS51使用键盘中断功能,那么建议加入此编译选项
#define DELAY_1US {_nop_();} // MCS51<=20MHz
/* 4线接口的位操作与单片机有关 */
#define CH452_DCLK_SET {CH452_DCLK=1;}
#define CH452_DCLK_CLR {CH452_DCLK=0;}
#define CH452_DCLK_D_OUT {} // 设置DCLK为输出方向对于双向I/O需切换为输出
#define CH452_DIN_SET {CH452_DIN=1;}
#define CH452_DIN_CLR {CH452_DIN=0;}
#define CH452_DIN_D_OUT {} // 设置DIN为输出方向对于双向I/O需切换为输出
#define CH452_LOAD_SET {CH452_LOAD=1;}
#define CH452_LOAD_CLR {CH452_LOAD=0;}
#define CH452_LOAD_D_OUT {} // 设置LOAD为输出方向对于双向I/O需切换为输出
#define CH452_DOUT_D_IN {CH452_DOUT=1;} // 设置DOUT为输入方向对于双向I/O需切换为输入

#define DISABLE_KEY_INTERRUPT {EX1=0;}
#define ENABLE_KEY_INTERRUPT {EX1=1;}
#define CLEAR_KEY_INTER_FLAG {IE1=0;}
#define CH452_RESET     0x0201 // 复位
#define CH452_SYSON2    0x0403 // 开启显示、键盘

volatile uchar keyp;

 //输出操作命令子程序
 //定义一无符号整型变量存储12字节的命令字。
void CH452_Write(unsigned short cmd)
{
unsigned char i;
DISABLE_KEY_INTERRUPT; //禁止键盘中断防止传输过程中被CH452中断而进入中断服务程序中再次传输
CH452_LOAD_CLR;         //命令开始LOAD=0
CH452_LOAD_D_OUT; // 设置LOAD为输出方向
CH452_DOUT_D_IN; // 设置DOUT为输入方向
CH452_DIN_D_OUT; // 设置DIN为输出方向
CH452_DCLK_D_OUT; // 设置DCLK为输出方向
for(i=0;i!=12;i++) //送入12位数据,低位在前
{
if (cmd&1) {CH452_DIN_SET;}
else {CH452_DIN_CLR;}  // 输出位数据
     CH452_DCLK_CLR;
     cmd>>=1;
     CH452_DCLK_SET;             //上升沿有效
}
   CH452_LOAD_SET;         //加载数据LOAD上升沿
DELAY_1US; //命令数据加载周期不小于6USCH451不需要该周期
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
DELAY_1US;
   ENABLE_KEY_INTERRUPT;
}

//*************************************************
//输入按键代码子程序,从CH452读取
unsigned char CH452_Read( void )
{
unsigned char i;
   unsigned char cmdkeycode; //定义命令字,和数据存储器
   DISABLE_KEY_INTERRUPT; //禁止键盘中断防止传输过程中被CH452中断而进入中断服务程序中再次传输
   cmd=0x07;                //读按键的命令字
   CH452_LOAD_CLR;
   for(i=0;i!=4;i++)  // 只需要发出高4位多发也可以但应该确保最后留下的4位是该命令码
{
if (cmd&1) {CH452_DIN_SET;}
else {CH452_DIN_CLR;}  // 输出位数据
// CH452_DIN=cmd&1;       //送入最低位
     CH452_DCLK_CLR;  
     cmd>>=1;       //往右移一位
     CH452_DCLK_SET;       //产生时钟上升沿锁通知CH451输入位数据
  }
   CH452_LOAD_SET;       //产生加载上升沿通知CH451处理命令数据
   keycode=0;       //清除keycode
   for(i=0;i!=7;i++)
{
keycode<<=1;       //数据移入keycode高位在前低位在后
if (CH452_DO

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2009-08-26 21:31  ch452键盘驱动和数码管驱动\
     目录           0  2009-08-18 14:20  ch452键盘驱动和数码管驱动\CH452键盘驱动板\
     目录           0  2009-08-18 14:20  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\
     文件        6575  2009-08-05 15:53  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c
     文件        5275  2009-08-05 15:50  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c.c
     文件        1102  2009-08-05 15:53  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c.hex
     文件          40  2009-08-05 15:53  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c.lnp
     文件       10249  2009-08-05 15:53  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c.LST
     文件        8018  2009-08-05 15:53  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c.M51
     文件        7095  2009-08-05 15:53  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c.OBJ
     文件         988  2009-08-05 15:54  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c.Opt
     文件         844  2009-08-05 15:54  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c.plg
     文件        2125  2009-03-26 16:31  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c.Uv2
     文件         984  2009-07-24 14:56  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c_Opt.Bak
     文件           0  2009-03-26 15:54  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\452c_Uv2.Bak
     文件       35272  2009-05-10 22:49  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\CH452键盘驱动板原理图.pdf
     文件       12917  2009-05-11 00:29  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\CH452键盘驱动板布局图.pdf
     目录           0  2009-08-18 14:20  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\泌恒库\
     文件         605  2009-05-13 12:04  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\泌恒库\CH452CMD.H
     文件        5329  2009-05-13 14:14  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\泌恒库\CH452KEY.H
     文件         401  2009-05-13 14:10  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\泌恒库\CH452W4.C
     文件        1717  2006-11-05 00:00  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\泌恒库\EXAM.C
     文件        1572  2009-05-13 12:06  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板\泌恒库\PIN.H
     文件       35272  2009-08-05 15:58  ch452键盘驱动和数码管驱动\CH452键盘驱动板\CH452键盘驱动板原理图.pdf
     目录           0  2009-08-18 14:20  ch452键盘驱动和数码管驱动\CH452驱动8个数码管和20个按键\
     目录           0  2009-08-18 14:20  ch452键盘驱动和数码管驱动\CH452驱动8个数码管和20个按键\CH452测\
     文件       10807  2009-08-05 16:04  ch452键盘驱动和数码管驱动\CH452驱动8个数码管和20个按键\CH452测\452c
     文件        4006  2009-08-05 15:57  ch452键盘驱动和数码管驱动\CH452驱动8个数码管和20个按键\CH452测\452c.c
     文件        1585  2009-08-05 16:04  ch452键盘驱动和数码管驱动\CH452驱动8个数码管和20个按键\CH452测\452c.hex
     文件          40  2009-08-05 16:04  ch452键盘驱动和数码管驱动\CH452驱动8个数码管和20个按键\CH452测\452c.lnp
     文件        7845  2009-08-05 16:04  ch452键盘驱动和数码管驱动\CH452驱动8个数码管和20个按键\CH452测\452c.LST
............此处省略11个文件信息

评论

共有 条评论

相关资源