找回密码
 注册
关于网站域名变更的通知
查看: 286|回复: 2
打印 上一主题 下一主题

TM1650模块单片机源程序(子函数)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-31 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
TM1650模块子函数,欢迎下载测试应用. 取之于网络,分享给大家4 C) o% M1 c7 Y* z( x; B6 M

/ x. Z, H' N' B/ K0 s1 Y' C单片机源程序如下:
4 _$ r3 ?) ]. a# x: y) Z% g
  • #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();
  • }3 ?8 _; b% I8 I4 W* a  U

' f: {) t4 l' G& t9 e- M0 ^9 A- B+ h* y1 b2 z

该用户从未签到

2#
发表于 2022-8-31 10:45 | 只看该作者
好程序,谢谢分享!

该用户从未签到

3#
发表于 2022-8-31 14:57 | 只看该作者
学习中,谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-28 18:43 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表