找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TM1638.h 单片机C语言头文件

[复制链接]
跳转到指定楼层
楼主
ID:604063 发表于 2019-9-5 22:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /* --EL------------------------------ ------------*/
  2. /* -----------------通用--------------------*/
  3. /*------------------------------------------------*/
  4. //CE-片选 DAI-数据输入 DAO-数据输出 CLK-时钟 STB—锁存  CLR-复位 addr-地址//
  5. #include "EL_Allhead.H"
  6. #include "EL_TM1638.H"
  7. unsigned char idata TM1638_CacheTab[16];//显示缓存
  8. unsigned char code  TM1638_SEGTab[]={0x5f,0x0c,0x9b,0x9e,0xcc,0xd6,0xd7,0x1c,0xdf,0xde};        //数码管0-9

  9. void TM1638_SPI(unsigned char dat) //TM1638
  10. {
  11.         unsigned char i;
  12.         TM1638_CE =0;           //给有效的片选信号(片选信号是低电平有效)                 
  13.         for(i=0;i<8;i++)//开始传送8位数据,每循环一次传送一位数据
  14.         {
  15.                 TM1638_CLK =0;
  16.                 Delay1us(1);
  17.                 dat>>=1;//移位数据,低位在前!
  18.                 TM1638_DAI=CY;
  19.                 TM1638_CLK =1;
  20.                 Delay1us(1);
  21.         }
  22. }
  23. void TM1638_DispData()//传送数据,并显示
  24. {
  25.         static unsigned char i;
  26.         TM1638_CE = 1;TM1638_CLK = 1;TM1638_DAI = 1;
  27.         TM1638_SPI(0x40);//写数据到显示寄存器,采用地址自动加一
  28.         TM1638_CE = 1;
  29.         TM1638_SPI(0xc0);//显示寄存器的00H单元开始
  30.         for(i=0;i<16;i++)
  31.                 TM1638_SPI(TM1638_CacheTab[i]);//给显示寄存器送数据,
  32.         TM1638_CE = 1;
  33.         TM1638_SPI(0x8b);//显示控制参数,点亮数码屏幕,亮度可以通过改变低三位调节
  34.         TM1638_CE = 1;
  35. }
  36. void TM1638_ClrData()//清除数据/
  37. {
  38.    unsigned char i;
  39.    TM1638_CacheTab[0]=0x01; //关机指示灯
  40.    for(i=1;i++;i<16)
  41.            TM1638_CacheTab[i]=0;
  42. }
  43. /***陈列数据处理函数**传入 数据,位置(0-9)10显示***/
  44. void TM1638_CfgData(unsigned char _Num,unsigned char _WeiData)  //陈列数据/
  45. {
  46.         unsigned char i=0, j=0;
  47.         if(_Num>1)_WeiData=TM1638_SEGTab[_WeiData]; //数码管0-9 转换
  48.         if(_Num<8) //1-8位
  49.         {
  50.                 for (i = 0; i < 16; i =i+2)
  51.                 {
  52.                         if ((_WeiData & 0x01) == 0x01)
  53.                                 TM1638_CacheTab[i]|=(0x01<<_Num); //1
  54.                         else
  55.                                 TM1638_CacheTab[i]&=~(0x01<<_Num); //0
  56.                         _WeiData =(_WeiData>>1);
  57.                 }
  58.         }
  59.         else if(_Num<10) //9-10位
  60.         {
  61.                 _Num = _Num - 8;
  62.                 for (i=1;i<16;i=i+2)
  63.                 {
  64.                         if (_WeiData&0x01==0x01)
  65.                                 TM1638_CacheTab[i]|=(0x01<<_Num); //1
  66.                         else
  67.                                 TM1638_CacheTab[i]&=~(0x01<<_Num); //0
  68.                         _WeiData =(_WeiData >> 1);
  69.                 }
  70.         }
  71.         else
  72.         {        
  73.                 TM1638_DispData();//传送数据,并显示
  74.         }
  75. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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