|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
TM1650模块子函数,欢迎下载测试应用. 取之于网络,分享给大家/ p( n9 u9 Y$ _
0 X y. M Y4 R; D
单片机源程序如下:6 F, a- a, O! j% ?5 P2 N
- #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();
- }
$ o2 I! {5 v e8 t5 O) M4 w
: @+ e+ H. I: }# ~+ L$ m0 r% J! _0 E& _( r. V; \2 L3 s0 _: ~' p2 }
|
|