1628驱动按键程序
/*文件名TM1628 *单片机型号 AT89S52 *开发环境Keil uVision3 *晶震频率12M */ include include include “tm1628.h“ define uchar unsigned char define uintunsigned int //定义控制端口 sbit DIO P20; sbit CLK P21; sbit STB P22; //定义数据 unsigned char const CODE[]{0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 xef,0 x6f}; //共阴数 码管 0-9 的编码 unsigned char KEY[5]{0};//为存储按键值开辟的数组 //向 TM1628 发送 8 位数据,从低位开始------------------------ void send_8bituchar dat { uchar i; fori0;i1; } } //向 TM1628 发送命令-------------------------------------- void commanduchar com { STB1; STB0; send_8bitcom; } //读取按键值并存入 KEY[]数组,从低字节开始,从低位开始---- void read_KEY { uchar i,j; command0 x42;//读键盘命令 DIO1;//将 DIO 置高 forj0;j1; CLK0; CLK1; ifDIO KEY[j]KEY[j]|0X80; } STB1; } //显示函数,1-7 位数码管显示数字 0-6---------------------------- void nodisplayunsigned char *s { uchar i; command0 x03;//设置显示模式,7 位 10 段模式 command0 x40;//设置数据命令,采用地址自动加 1 模式 command0 xc0;//设置显示地址,从 00H 开始 fori0;i7;i//发送显示数据 { send_8bit*s;//从 00H 起,偶数地址送显示数据 s; send_8bit0;//因为 SEG9-14 均未用到,所以奇数地址送全“0” } command0 x8F;//显示控制命令,打开显示并设置为最亮 //read_KEY;//读按键值 STB1; } //按键处理函数------------------------------------------------- /*void KEY_process { //由用户编写 } */ //下边重新写定义 unsigned char key_process { switchKEY[0] 实际是 { case 0 x01return 1; break; case 0 x02return 2; break; case 0 x08return 3; break; case 0 x10return 4; break; defaultreturn 0;break; } switchKEY[1] { case 0 x01return 5; break; case 0 x02return 6; break; case 0 x08return 7; break; case 0 x10return 8; break; defaultreturn 0;break; } switchKEY[2] { case 0 x01return 9; break; case 0 x02return 10; break; case 0 x08return 11; break; case 0 x10return 12; break; defaultreturn 0;break; } switchKEY[3] { case 0 x01return 13; break; case 0 x02return 14; break; case 0 x08return 15; break; case 0 x10return 16; break; defaultreturn 0;break; } switchKEY[4] { case 0 x01return 17; break; case 0 x02return 18; break; case 0 x08return 19; break; case 0 x10return 20; break; //k1ks1k2ks1 0 k2ks1k2ks2 0(k0-k7)高地位对调k7-k0 defaultreturn 0;break; } } /* //主函数------------------------------------------------------- void main { display;//显示 while1 { read_KEY;//读按键值 key_process;//按键处理 } } */ ifndef __tm1628_H__ define __tm1628_H__ define uchar unsigned char define uintunsigned int //向 TM1628 发送 8 位数据,从低位开始------------------------ void send_8bituchar dat ; //向 TM1628 发送命令-------------------------------------- void commanduchar com ; //读取按键值并存入 KEY[]数组,从低字节开始,从低位开始---- void read_KEY ; //显示函数,1-7 位数码管显示数字 0-6---------------------------- void nodisplayunsigned char *s ; //按键处理函数------------------------------------------------- /*void KEY_process { //由用户编写 } */ //下边重新写定义 unsigned char key_process; endif