|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
TM1650模块子函数,欢迎下载测试应用. 取之于网络,分享给大家
+ H* R' ^; v5 F8 Q1 ?" a* x* O: F2 ]1 f7 z( H8 t
单片机源程序如下:, v# C. f- i# p1 M( d. d4 q
- #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();
- }( @ ^4 x: x( w8 f8 `2 m. n( J
' I u" J2 S' O( O, b
9 M9 k& M6 }6 ^# i& J |
|