|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
TM1650模块子函数,欢迎下载测试应用. 取之于网络,分享给大家
- F$ w# U: K7 a# r. ^+ n9 `/ P" s4 @# w
单片机源程序如下:
5 n* Q! l% w# \, N) i- #include<STC12C5A.h>
- #include"tm1650.h"
- void Delay_us(uint i) //us延时
- {
- for(;i>0;i--)
- {
- _nop_();
- // _nop_();
- // _nop_();
- }
- }
- void I2CStart(void) //开始信号
- {
- CLK_H;
- DIO_H;
- Delay_us(5);
- DIO_L;
- }
- void I2Cask(void) //ACK信号
- {
- uchar timeout = 1;
- CLK_H;
- Delay_us(5);
- CLK_L;
- while((DIO)&&(timeout<=100))
- {
- timeout++;
- }
- Delay_us(5);
- CLK_L;
- }
- void I2CStop(void) //停止信号
- {
- CLK_H;
- DIO_L;
- Delay_us(5);
- DIO_H;
- }
- void I2CWrByte(uchar oneByte) //写一个字节高位在前,低位在后
- {
- uchar i;
- CLK_L;
- Delay_us(1);
- for(i=0;i<8;i++)
- {
- oneByte = oneByte<<1;
- DIO = CY;
- CLK_L;
- Delay_us(5);
- CLK_H;
- Delay_us(5);
- CLK_L;
- }
- }
- uchar Scan_Key(void) // 按键扫描
- {
- uchar i;
- uchar rekey;
- I2CStart();
- I2CWrByte(0x49);//读按键命令
- I2Cask();
- //DIO_H;
- for(i=0;i<8;i++)
- {
- CLK_H;
- rekey = rekey<<1;
- if(DIO)
- {
- rekey++;
- }
- Delay_us(5);
- CLK_L;
- }
- I2Cask();
- I2CStop();
- return(rekey);
- }
- void TM1650_Set(uchar add,uchar dat) //数码管显示
- {
- //写显存必须从高地址开始写
- I2CStart();
- I2CWrByte(add); //第一个显存地址
- I2Cask();
- I2CWrByte(dat);
- I2Cask();
- I2CStop();
- }! H3 Z, P* P C3 t- q4 H
+ P; v$ J% w7 ~& O$ V0 i# I! i" j8 \1 |/ F' y( |; x' T, O
|
|