单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5110|回复: 12
打印 上一主题 下一主题
收起左侧

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

  [复制链接]
跳转到指定楼层
楼主
TM1650模块子函数,欢迎下载测试应用. 取之于网络,分享给大家

单片机源程序如下:
  1. #include<STC12C5A.h>
  2. #include"tm1650.h"
  3. void Delay_us(uint i) //us延时
  4. {
  5.         for(;i>0;i--)
  6.         {
  7.         _nop_();
  8. //        _nop_();
  9. //        _nop_();
  10.         }
  11. }
  12. void I2CStart(void)        //开始信号
  13. {
  14.         CLK_H;
  15.         DIO_H;
  16.         Delay_us(5);
  17.         DIO_L;
  18.         
  19. }

  20. void I2Cask(void) //ACK信号
  21. {
  22.         uchar timeout = 1;
  23.         CLK_H;
  24.         Delay_us(5);
  25.         CLK_L;
  26.         while((DIO)&&(timeout<=100))
  27.         {
  28.           timeout++;        
  29.         }
  30.         Delay_us(5);
  31.         CLK_L;
  32. }

  33. void I2CStop(void) //停止信号
  34. {
  35.         CLK_H;
  36.         DIO_L;
  37.         Delay_us(5);
  38.         DIO_H;
  39. }

  40. void I2CWrByte(uchar oneByte) //写一个字节高位在前,低位在后
  41. {
  42.         uchar i;
  43.         CLK_L;
  44.         Delay_us(1);
  45.         for(i=0;i<8;i++)
  46.         {        
  47.                 oneByte = oneByte<<1;
  48.                 DIO = CY;
  49.                 CLK_L;
  50.                 Delay_us(5);
  51.                 CLK_H;
  52.                 Delay_us(5);
  53.                 CLK_L;
  54.         }
  55. }

  56. uchar Scan_Key(void)          // 按键扫描
  57. {
  58.         uchar i;
  59.         uchar rekey;
  60.         I2CStart();
  61.         I2CWrByte(0x49);//读按键命令
  62.         I2Cask();
  63.         //DIO_H;
  64.         for(i=0;i<8;i++)
  65.         {
  66.            CLK_H;
  67.            rekey = rekey<<1;
  68.            if(DIO)
  69.            {
  70.                    rekey++;
  71.            }
  72.            Delay_us(5);
  73.            CLK_L;        
  74.         }
  75.         I2Cask();
  76.         I2CStop();
  77.         return(rekey);
  78. }


  79. void TM1650_Set(uchar add,uchar dat) //数码管显示
  80. {
  81.         //写显存必须从高地址开始写
  82.         I2CStart();
  83.         I2CWrByte(add); //第一个显存地址
  84.         I2Cask();
  85.         I2CWrByte(dat);
  86.         I2Cask();
  87.         I2CStop();
  88. }
复制代码

所有资料51hei提供下载:
TM1650.rar (1.01 KB, 下载次数: 167)


评分

参与人数 2黑币 +55 收起 理由
supermcu8 + 5 共享资料的黑币奖励!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
liuminjun163 发表于 2018-9-17 20:12 | 只看该作者
这个程序不错,找了好久总算找到合适的方案了
回复

使用道具 举报

板凳
liuzhengduo16 发表于 2018-10-22 15:02 | 只看该作者
我想问一下,我用赛元的MCU驱动的这个芯片,为什么按键扫描的时候按键没有任何反应呢
回复

使用道具 举报

地板
shaoyoujing 发表于 2018-11-28 16:35 | 只看该作者
谢谢了
回复

使用道具 举报

5#
tyghbn 发表于 2018-12-21 21:17 | 只看该作者
下来看看是否适合
回复

使用道具 举报

6#
安静的麻瓜 发表于 2019-1-4 14:50 | 只看该作者
请问,这个是pic的还是51的,我是个新手  求指教呀
回复

使用道具 举报

7#
zhp8363 发表于 2019-4-25 20:22 | 只看该作者
谢了!
回复

使用道具 举报

8#
11111114pl 发表于 2019-4-30 13:06 | 只看该作者
主函数部分没有吗     主要是按键扫描判断       有点搞不懂
回复

使用道具 举报

9#
11111114pl 发表于 2019-4-30 13:06 | 只看该作者
安静的麻瓜 发表于 2019-1-4 14:50
请问,这个是pic的还是51的,我是个新手  求指教呀

51的升级版   也属于51
回复

使用道具 举报

10#
xyqkos 发表于 2019-5-17 16:55 | 只看该作者
谢谢了
回复

使用道具 举报

11#
Villain334 发表于 2019-5-27 14:53 | 只看该作者
很好,但是没有黑币了、、、
回复

使用道具 举报

12#
yueqi 发表于 2019-7-3 13:12 | 只看该作者
!好东西
回复

使用道具 举报

13#
302976867 发表于 2019-7-26 16:05 | 只看该作者
谢楼主分享了。学习学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

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