找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1891|回复: 0
收起左侧

TM1721液晶屏驱动 单片机源代码

[复制链接]
ID:50487 发表于 2022-3-22 08:40 | 显示全部楼层 |阅读模式
分享给大家这款液晶显示屏的代码
附件中源代码有显示代码,和按键读取代码自己测试好的

单片机源程序如下:
  1. #include "intrins.h"
  2. #include "TM1721.h"

  3. //发送一个数据
  4. void TM1721_SEND(char dat)
  5. {
  6. unsigned char dat_cnt;       
  7. for(dat_cnt=0;dat_cnt<8;dat_cnt++)
  8.     {
  9.     TM1721_CLK=0;
  10.     if((dat>>dat_cnt&0x01)==0x01)TM1721_DIO=1;
  11.     else TM1721_DIO=0;
  12.     delayus(1);
  13.     TM1721_CLK=1;
  14.                 delayus(1);       
  15.     }
  16. }
  17. void TM1721_COMMED(char dat)
  18. {
  19. TM1721_STB=0;       
  20. TM1721_SEND(dat);
  21. TM1721_STB=1;
  22. delayus(5);       
  23. }
  24. void TM1721_COMMED_DATA(char com,char dat)
  25. {
  26. TM1721_STB=0;       
  27. TM1721_SEND(com);
  28. TM1721_SEND(dat);       
  29. TM1721_STB=1;
  30. delayus(5);       
  31. }
  32. //接受一个数据
  33. char TM1721_RECIVE()
  34. {
  35. unsigned char dat_cnt,dat=0;
  36. TM1721_DIO=1;
  37. for(dat_cnt=0;dat_cnt<8;dat_cnt++)
  38.     {
  39.     TM1721_CLK=0;
  40.     delayus(5);
  41.     TM1721_CLK=1;
  42.     if(TM1721_DIO==1)dat|=1<<dat_cnt;  
  43.     }
  44. return dat;
  45. }

  46. //TM1721初始化
  47. void TM1721_INT()
  48. {
  49. unsigned char dat_cnt=0;

  50. TM1721_COMMED(TM1721_DIP_MODE);//设置显示模式

  51. TM1721_COMMED(TM1721_FIXED_ADDR);//设置固定工作模式

  52. for(dat_cnt=0;dat_cnt<16;dat_cnt++)
  53.     {
  54.     TM1721_COMMED_DATA(0xc0+dat_cnt,0x0);//清空显示寄存器
  55.     }
  56. TM1721_COMMED(TM1721_DIP_ON);//打开显示
  57. }

  58. char TM1721_CHAR(char cha)
  59. {
  60. char r_cha=0;
  61. switch(cha)
  62.         {
  63.         case 0: r_cha=1<<4|1<<6|1|1<<1|1<<2|1<<3|1;               
  64.                     break;
  65.         case 1: r_cha=1<<4|1<<6;
  66.                                 break;
  67.         case 2: r_cha=1<<4|1|1<<5|1<<2|1<<3;
  68.                                 break;
  69.         case 3: r_cha=1<<4|1<<6|1|1<<5|1<<3;
  70.                                 break;
  71.         case 4: r_cha=1<<4|1<<6|1<<5|1<<1;
  72.                                 break;
  73.         case 5: r_cha=1|1<<6|1<<1|1<<5|1<<3;
  74.                                 break;
  75.         case 6: r_cha=1|1<<6|1<<1|1<<5|1<<3|1<<2;
  76.                                 break;
  77.         case 7: r_cha=1<<4|1<<6|1;
  78.                                 break;
  79.         case 8: r_cha=1|1<<6|1<<1|1<<5|1<<3|1<<2|1<<4;
  80.                                 break;
  81.         case 9: r_cha=1|1<<6|1<<1|1<<5|1<<3|1<<4;       
  82.                                 break;
  83.         case '.': r_cha=1<<7;
  84.                           break;
  85.         case '_': r_cha=0;
  86.                           break;                               
  87.         }
  88. return r_cha;
  89. }

  90. void TM1721_DIP(char a,char b,char c,char d,char e,char a_d,char b_d,char c_d,char d_d,char e_d)
  91. {
  92. char dip_temp[6]={0,0,0,0,0};
  93. //数据缓冲
  94. dip_temp[0]=TM1721_CHAR(e)<<4;
  95. dip_temp[1]=((TM1721_CHAR(e)|TM1721_CHAR(e_d))>>4)&0x0f;//第1位
  96. dip_temp[0]|=TM1721_CHAR(d)&0x0f;
  97. dip_temp[1]|=(TM1721_CHAR(d)|TM1721_CHAR(d_d))&0xf0;//第2位

  98. dip_temp[2]=(((TM1721_CHAR(c)|TM1721_CHAR(c_d))>>4)&0x0f)|(TM1721_CHAR(c)<<4);//第3位
  99. dip_temp[3]=(((TM1721_CHAR(b)|TM1721_CHAR(b_d))>>4)&0x0f)|(TM1721_CHAR(b)<<4);//第4位
  100. dip_temp[4]=(((TM1721_CHAR(a)|TM1721_CHAR(a_d))>>4)&0x0f)|(TM1721_CHAR(a)<<4);//第5位



  101. TM1721_COMMED(TM1721_FIXED_ADDR);//设置固定工作模式       

  102. TM1721_COMMED_DATA(0xc0,dip_temp[0]);//高位显示
  103. TM1721_COMMED_DATA(0xc1,dip_temp[1]);//高位显示
  104. TM1721_COMMED_DATA(0xc2,dip_temp[2]);//高位显示
  105. TM1721_COMMED_DATA(0xc3,dip_temp[3]);//高位显示
  106. TM1721_COMMED_DATA(0xc4,dip_temp[4]);//高位显示

  107. TM1721_COMMED(TM1721_DIP_ON);//打开显示
  108. }

  109. unsigned char  *TM1721_KEY_APP()
  110. {
  111. static unsigned char p[3]={0,0,0};
  112. TM1721_STB=0;       
  113. TM1721_SEND(TM1721_KEY);//打开显示
  114. p[0]= TM1721_RECIVE();
  115. p[1]= TM1721_RECIVE();
  116. p[2]= TM1721_RECIVE();
  117. return p;       
  118. }
复制代码
51hei.png
上图2个文件下载 c代码(请自行移植到各单片机平台):
TM1721.zip (1.54 KB, 下载次数: 37)

评分

参与人数 1黑币 +30 收起 理由
admin + 30 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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