📄 zlg7289.c
字号:
#include "system.h"
/********发送7289命令子程序********/
void send_command(unsigned char i_command)
{
unsigned char i;
for(i=0; i<8; i++)
{
DIO= ( (i_command & 0x80)==0x80 ? 1:0 ); //发送最高位,总是在clk的下降沿
delay_us(20);
CLK=1; // clk=1;
delay_us(20);
CLK=0; // clk=0;
i_command=i_command<<1; //移位命令,最高位在前
}
// CLK=0; //发送完后将线上数据置为初始值
// DIO=1; //CLK=0, DIO=1;
delay_us(20);
}
/********7289接收数据***********/
unsigned char recieve_data(void)
{
unsigned char i;
unsigned char key_data=0; //clear
// DIO=1; //data变为输入,需要读引脚
for(i=0; i<8; i++)
{
CLK=1; //clk=1
delay_us(20); //先延迟25us
key_data <<=1; //左移数据
key_data |= DIO_IN ? 0x01:0; //数据读入key_data的最低位
CLK = 0;
delay_us(20);
}
// DIO=0;
// DIO=1;
return key_data;
}
/* 7289发单字节命令 */
void send_single_command(unsigned char command_7289)
{
// cannot_send_7289_command = 1; //屏蔽其他使用7289功能
DDRB=0xf7;
delay_us(20);
CS = 0; //使CS端出现一个下降沿
delay_us(50);
send_command(command_7289);
CS = 1; //CS 置为初始值
delay_us(50);
}
/* 7289发双字节命令 */
void send_double_command(unsigned char command_7289_a, unsigned char command_7289_b)
{
// unsigned char i;
//cannot_send_7289_command = 1; //屏蔽其他使用7289功能
DDRB=0xf7;
delay_us(20);
CS = 0; //使CS端出现一个下降沿
delay_us(50);
send_command(command_7289_a);
send_command(command_7289_b);
CS=1;
delay_us(50);
}
/* 7289接收键盘码命令 */
unsigned char recieve_key_code(void)
{
unsigned char key_code = 0xFF;
unsigned char recieve_command_code = 0x15;
DDRB=0xf7;
delay_us(20);
CS = 0; //使CS端出现一个下降沿
delay_us(50);
send_command(recieve_command_code);
DDRB=0xf3;
delay_us(20);
key_code = recieve_data();
CS = 1; //CS 置为初始值
delay_us(50);
return key_code;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -