资源简介
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个文件信息
- 上一篇:基于51单片机的打地鼠游戏
- 下一篇:《Linux环境编程》编程题答案及实验报告
评论
共有 条评论