欢迎来到天天文库
浏览记录
ID:43516310
大小:40.00 KB
页数:5页
时间:2019-10-09
《1628驱动按键程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、/*文件名:TM1628*单片机型号:AT89S52*开发环境:KeiluVision3*晶震频率:12M*/#include#include#include"tm1628.h"#defineucharunsignedchar#defineuintunsignedint//定义控制端口sbitDIO=P2^0;sbitCLK=P2^1;sbitSTB=P2^2;//定义数据unsignedcharconstCODE[]={0x3f,0x06,0x5b,0x4f
2、,0x66,0x6d,0x7d,0x07,0xef,0x6f};//共阴数码管0-9的编码unsignedcharKEY[5]={0};//为存储按键值开辟的数组//向TM1628发送8位数据,从低位开始------------------------voidsend_8bit(uchardat){uchari;for(i=0;i<8;i++){if(dat&0x01)DIO=1;elseDIO=0;CLK=0;CLK=1;dat=dat>>1;}}//向TM1628发送命令------------
3、--------------------------voidcommand(ucharcom){STB=1;STB=0;send_8bit(com);}//读取按键值并存入KEY[]数组,从低字节开始,从低位开始----voidread_KEY(){uchari,j;command(0x42);//读键盘命令DIO=1;//将DIO置高for(j=0;j<5;j++)//连续读取5个字节5组8位20位for(i=0;i<8;i++){KEY[j]=KEY[j]>>1;CLK=0;CLK=1;if(D
4、IO)KEY[j]=KEY[j]
5、0X80;}STB=1;}//显示函数,1-7位数码管显示数字0-6----------------------------voidnodisplay(unsignedchar*s){uchari;command(0x03);//设置显示模式,7位10段模式command(0x40);//设置数据命令,采用地址自动加1模式command(0xc0);//设置显示地址,从00H开始for(i=0;i<7;i++)//发送显示数据{send_8bit(*s);//从00
6、H起,偶数地址送显示数据s++;send_8bit(0);//因为SEG9-14均未用到,所以奇数地址送全“0”}command(0x8F);//显示控制命令,打开显示并设置为最亮//read_KEY();//读按键值STB=1;}//按键处理函数-------------------------------------------------/*voidKEY_process(){//由用户编写}*///下边重新写定义unsignedcharkey_process(){switch(KEY[0])
7、//k1ks1k2ks10k2ks1k2ks20(k0-k7)高地位对调k7-k0实际是{case0x01:return1;break;case0x02:return2;break;case0x08:return3;break;case0x10:return4;break;default:return0;break;}switch(KEY[1]){case0x01:return5;break;case0x02:return6;break;case0x08:return7;break;case0x10
8、:return8;break;default:return0;break;}switch(KEY[2]){case0x01:return9;break;case0x02:return10;break;case0x08:return11;break;case0x10:return12;break;default:return0;break;}switch(KEY[3]){case0x01:return13;break;case0x02:return14;break;case0x08:return15;
9、break;case0x10:return16;break;default:return0;break;}switch(KEY[4]){case0x01:return17;break;case0x02:return18;break;case0x08:return19;break;case0x10:return20;break;default:return0;break;}}/*//主函数-----------------------------------------
此文档下载收益归作者所有