单片机屏幕显示及键盘

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//发送命令字
//读键扫数据 命令
//4个字节数据合成一个字节
if((0x01<<i)==key_value) break; } return i; } void Write_DATA(unsigned char add,unsigned char DATA) { Write_COM(0x44); digitalWrite(STB,LOW); TM1638_Write(0xc0|add); TM1638_Write(DATA); digitalWrite(STB,HIGH); } void Write_allLED(unsigned char LED_flag) { unsigned char i; for(i=0;i<8;i++) { if(LED_flag&(1<<i)) Write_DATA(2*i+1,1); else Write_DATA(2*i+1,0); //控制全部LED函数,LED_flag表示各个LED状态 //指定地址写入数据
void TM1638_Write(unsigned char { unsigned char i; pinMode(DIO,OUTPUT); for(i=0;i<8;i++) {
DATA)
//写数据函数
digitalWrite(CLK,LOW); if(DATA&0X01) digitalWrite(DIO,HIGH); else digitalWrite(DIO,LOW); DATA>>=1; digitalWrite(CLK,HIGH); } } unsigned char TM1638_Read(void) { unsigned char i; unsigned char temp=0;; pinMode(DIO,INPUT);//设置为输入 for(i=0;i<8;i++) { temp>>=1; digitalWrite(CLK,LOW); if(digitalRead(DIO)==HIGH) temp|=0x80; digitalWrite(CLK,HIGH); //读数据函数
} return temp; }
void Write_COM(unsigned char cmd) { digitalWrite(STB,LOW); TM1638_Write(cmd); digitalWrite(STB,HIGH); } unsigned char Read_key(void) { unsigned char c[4],i,key_value=0; digitalWrite(STB,LOW); TM1638_Write(0x42); for(i=0;i<4;i++) { c[i]=TM1638_Read(); } digitalWrite(STB,HIGH); for(i=0;i<4;i++) { key_value|=c[i]<<i; } for(i=0;i<8;i++) {
} }
//TM1638初始化函数
void init_TM1638() { unsigned char i; Write_COM(0x8b); Write_COM(0x40); //亮度 (0x88-0x8f)8级亮度可调 //采用地址自动加1 //
digitalWrite(STB,LOW); TM1638_Write(0xc0); for(i=0;i<16;i++) //设置起始地址 //传送16个字节的数据
TM1638_Write(0x00); digitalWrite(STB,HIGH); }
void setup () { pinMode(STB,OUTPUT); pinMode(CLK,OUTPUT); pinMode(DIO,OUTPUT); //让三个脚都是输出状态 } void loop() { unsigned char i; init_TM1638(); for(i=0;i<8;i++) Write_DATA(i<<1,tab[0]); while(1) { i=Read_key(); if(i<8) { num[i]++; while(i==Read_key()); if(num[i]>15) num[i]=0; Write_DATA(i*2,tab[num[i]]); Write_allLED(1<<i); } } //等待按键释放 //读按键值 //初始化寄存器 //初始化TM1638
#define DATA_COMMAND #define DISP_COMMAND #define ADDR_COMMAND
百度文库
0X40 0x80 0XC0
//TM1638模块引脚定义 int DIO = 2; int CLK = 1; int STB = 0; //这里定义了那三个脚 //共阴数码管显示代码 unsigned char tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; unsigned char num[8]; //各个数码管显示的值
}
相关文档
最新文档