#include "user\h\macro.h"
#include "..\..\LU_SDK\board\h\TM1650.h"
#include "intrins.H"
#define _1650_CLK P12
#define _1650_DIO P13
//DIOת���� ����
#define _1650_IO_PORT SOC_P1
#define _1650_IO_BIT SOC_BIT3
u8 idata dis_1650[4];
void Set1650(u8 add,u8 dat);
void Init1650(unsigned char BL){
Set1650(0x48,(BL*16+0x01));//�趨���ȣ�����ʾ�˶���ʾ��ʽ����һ���ֽ��и�λ�������ȣ���λ�����߶λ�˶���ʾ��ʽ�Ϳ�����
//�磺0x71Ϊ�����ȣ��˶���ʾ��ʽ������ʾ��0x79ΪΪ�����ȣ��߶���ʾ��ʽ������ʾ
}
void Delay_us(u16 i){ //us��ʱ
for(;i>0;i--){
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void Start1650(void){//��ʼ�ź�
_1650_CLK = 1;
_1650_DIO = 1;
Delay_us(5);
_1650_DIO = 0;
}
void Ask1650(void){ //ACK�ź�
u8 timeout = 1;
_1650_CLK = 1;
Delay_us(5);
_1650_CLK = 0;
//DIO������
#if (_1650_IO_PORT == SOC_P0)
P0CON &=~_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P1)
P1CON &=~_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P2)
P2CON &=~_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P5)
P5CON &=~_1650_IO_BIT;
#endif
while((_1650_DIO)&&(timeout<=100)){
timeout++;
}
#if (_1650_IO_PORT == SOC_P0)
P0CON |=_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P1)
P1CON |=_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P2)
P2CON |=_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P5)
P5CON |=_1650_IO_BIT;
#endif
//DIO�����
Delay_us(5);
_1650_CLK = 0;
}
void Stop1650(void){ //ֹͣ�ź�
_1650_CLK = 1;
_1650_DIO = 0;
Delay_us(5);
_1650_DIO = 1;
}
void WrByte1650(u8 oneByte){//дһ���ֽڸ�λ��ǰ����λ�ں�
u8 i;
_1650_CLK = 0;
Delay_us(1);
for(i=0;i<8;i++){
oneByte = oneByte<<1;
_1650_DIO = CY;
_1650_CLK = 0;
Delay_us(5);
_1650_CLK = 1;
Delay_us(5);
_1650_CLK = 0;
}
}
u8 Scan_Key(void){ // ����ɨ��
u8 i;
u8 rekey;
Start1650();
WrByte1650(0x49);//����������
Ask1650();
//DIO������
#if (_1650_IO_PORT == SOC_P0)
P0CON &=~_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P1)
P1CON &=~_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P2)
P2CON &=~_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P5)
P5CON &=~_1650_IO_BIT;
#endif
for(i=0;i<8;i++){
_1650_CLK = 1;
rekey = rekey<<1;
if(_1650_DIO){
rekey++;
}
Delay_us(5);
_1650_CLK = 0;
}
#if (_1650_IO_PORT == SOC_P0)
P0CON |=_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P1)
P1CON |=_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P2)
P2CON |=_1650_IO_BIT;
#endif
#if (_1650_IO_PORT == SOC_P5)
P5CON |=_1650_IO_BIT;
#endif
//DIO�����
Ask1650();
Stop1650();
return(rekey);
}
void Set1650(u8 add,u8 dat){ //�������ʾ
//д�Դ����Ӹߵ�ַ��ʼд
Start1650();
WrByte1650(add); //��һ���Դ��ַ
Ask1650();
WrByte1650(dat);
Ask1650();
Stop1650();
}
void Write_All_Data_1650(unsigned char BL)
{
Init1650(BL);
Set1650(0x68,dis_1650[0]);
Set1650(0x6A,dis_1650[1]);
Set1650(0x6C,dis_1650[2]);
Set1650(0x6E,dis_1650[3]);
Set1650(0x48,(BL*16+0x01));
}
[显示驱动系列] [TM1650驱动程序]
需积分: 14 48 浏览量
2022-10-24
15:09:29
上传
评论
收藏 1KB RAR 举报
极客-LU
- 粉丝: 1971
- 资源: 5
最新资源
- python-leetcode面试题解之第274题H指数.zip
- python-leetcode面试题解之第270题最接近二叉搜索树值.zip
- python-leetcode面试题解之第267题回文排列II.zip
- python-leetcode面试题解之第264题丑数II.zip
- python-leetcode面试题解之第263题丑数.zip
- python-leetcode面试题解之第258题各位相加.zip
- python-leetcode面试题解之第257题二叉树的所有路径.zip
- python-leetcode面试题解之第253题会议室II.zip
- python-leetcode面试题解之第252题会议室.zip
- python-leetcode面试题解之第249题移位字符串分组.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0