找回密码
 立即注册
楼主: qepuemc

tm1621d驱动可以用的例子谁有可以发下吗

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:387
  • 最近打卡:2025-05-12 07:41:26

43

主题

336

回帖

627

积分

高级会员

积分
627
发表于 2024-10-31 23:01:22 | 显示全部楼层
再分享stc8h8k02u这类的。依然只是实现在点亮

  1. //********************************************************************
  2. #include <COMM/STC8H.h>                                         //MCU头文件
  3. #include <stdio.h>
  4. /*****************************************************************************
  5. *版权信息:深圳天微电子有限公司
  6. *文 件 名:TM1621D-V1.0
  7. *当前版本:V1.0
  8. *MCU 型号:STC12C5608AD
  9. *开发环境:Keil uVision4
  10. *晶震频率:11.0592MHZ      
  11. *完成日期:2013-08-07
  12. *程序功能:1.LCD驱动:LCD屏所接SEG显示0~5
  13. *免责声明:1.此程序为TM1621D驱动LCD演示程序,仅作参考之用。
  14.             2.如有直接使用本例程程序造成经济损失的,本公司不承担任何责任            
  15. #include "intrins.h"                                         //包含nop指令头文件
  16. #define uchar unsigned char                                 //数据类型宏定义
  17. #define uint unsigned int                                 //数据类型宏定义
  18. #define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //宏定义
  19. /******************TM1621D模块命令定义*********************/
  20. #include "intrins.h"                                         //包含nop指令头文件
  21. #define uchar unsigned char                                 //数据类型宏定义
  22. #define uint unsigned int                                 //数据类型宏定义
  23. #define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //宏定义
  24. #define SYSDIS   0x00         //关系统振荡器和LCD偏压发生器        
  25. #define SYSEN    0x02    //打开系统振荡器        
  26. #define LCDOFF   0x04     //关LCD偏压
  27. #define LCDON    0x06     //开LCD偏压
  28.                                                          
  29. #define RC       0x30     //内部RC振荡        
  30. #define BIAS     0x52     //1/3偏压 4公共口        
  31. /********************定义控制端口**********************/
  32. sbit CS=P1^5;
  33. sbit WRITE=P1^6;
  34. sbit DATA=P1^7;
  35. /********************定义数据*************************/
  36. //uchar code Smg[16]={0xeb,0x60,0xc7,0xE5,0x6C,0xAD,0xaf,0xE0,0xef,0xed,0xee,0x2f,0x8b,0x67,0x8f,0x8e};  //0~F字型码
  37. uchar code Smg[16]={0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};  //0~F字型码
  38. uchar code Tab0[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //清屏
  39. /********************延时函数*************************/
  40. void delay_nms(uint n)
  41. {
  42.    uint i;
  43.    while(n--)
  44.      for(i=0;i<500;i++);
  45. }
  46. /********************从高位写入数据*************************/
  47. void Write_Data_H(uchar Data, uchar Cnt)           //Data的高cnt位写入TM1621D,高位在前
  48. {
  49. uchar i;
  50. for(i=0;i<Cnt;i++)
  51. {
  52.   WRITE=0;
  53.   if(Data&0x80)                                   //从最高位发送
  54.     DATA=1;               
  55.   else
  56.     DATA=0;
  57.   nop;
  58.   nop;
  59.   WRITE=1;
  60.   Data<<=1;
  61. }
  62. WRITE=0;
  63. DATA=0;
  64. }
  65. /********************从低位写入数据*************************/
  66. void Write_Data_L(uchar Data,uchar Cnt) //Data 的低cnt位写入TM1621D,低位在前
  67. {
  68. unsigned char i;
  69. for(i=0;i<Cnt;i++)
  70. {
  71.    WRITE=0;
  72.    if(Data&0x01)                                 //从低位发送
  73.      DATA=1;  
  74.    else
  75.      DATA=0;
  76.         nop;
  77.         nop;
  78.         WRITE=1;
  79.         Data>>=1;
  80. }
  81.   WRITE=0;
  82.   DATA=0;  
  83. }
  84. /********************写入控制命令*************************/
  85. void WriteCmd(uchar Cmd)
  86. {
  87. CS=0;
  88. nop;
  89. Write_Data_H(0x80,4);     //写入命令标志100
  90. Write_Data_H(Cmd,8);      //写入命令数据
  91. CS=1;
  92. nop;
  93. }
  94. /*********指定地址写入数据,实际写入后4位************/
  95. void WriteOneData(uchar Addr, uchar Data)
  96. {
  97. CS=0;
  98. Write_Data_H(0xa0,3);     //写入数据标志101
  99. Write_Data_H(Addr<<2,6);  //写入地址数据
  100. Write_Data_L(Data,4);     //写入数据
  101. CS=1;
  102. nop;
  103. }
  104. /*********连续写入方式,每次数据为8位,写入数据************/
  105. void WriteAllData(uchar Addr,uchar *p,uchar cnt)
  106. {
  107. uchar i;
  108. CS=0;
  109. Write_Data_H(0xa0,3);          //写入数据标志101
  110. Write_Data_H(Addr<<2,6);        //写入地址数据
  111. for(i=0;i<cnt;i++)                //写入数据
  112. {
  113.    Write_Data_L(*p,8);            
  114.    p++;
  115. }
  116. CS=1;
  117. nop;
  118. }
  119. /*******************TM1621D初始化**********************/
  120. void TM1621D_init()
  121. {
  122. CS=1;
  123. WRITE=1;
  124. DATA=1;
  125. nop;
  126. delay_nms(1);                        
  127. WriteCmd(BIAS);                 //1/3偏压 4公共口
  128. WriteCmd(RC);                         //内部RC振荡
  129. WriteCmd(SYSDIS);                 //关系统振荡器和LCD偏压发生器
  130. WriteCmd(SYSEN);                 //打开系统振荡器
  131. WriteCmd(LCDON);                 //开LCD偏压
  132. }
  133. void main()
  134. {
  135.             P1M0 &= ~0xe0; P1M1 &= ~0xe0;
  136. TM1621D_init();                //开机初始化
  137. delay_nms(1);
  138. WriteAllData(0,Tab0,16);         //LCD清显存
  139. while(1)
  140. {
  141. // WriteAllData(0x0b,Smg,6);          //LCD SEG10到SEG21显示0~5
  142.        
  143.        
  144.         WriteOneData(0x09,0x0a); //  1234   3
  145.        
  146.         WriteOneData(0x0B,0x0b); //  1234   4
  147.        
  148.         //WriteOneData(0x0e,0x0c); //  1234   4
  149.        
  150.         //WriteOneData(0x0f,0x0f); //  1234   4
  151.                  //WriteAllData(0x0e,Smg,1);          //LCD SEG10到SEG21显示0~5
  152. }
  153. }
复制代码


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:271
  • 最近打卡:2025-05-12 10:31:08

9

主题

96

回帖

581

积分

高级会员

积分
581
发表于 2024-12-7 23:54:39 | 显示全部楼层
qepu*** 发表于 2024-10-31 23:01
再分享stc8h8k02u这类的。依然只是实现在点亮

移植这个代码后,成功电量LCD。不过还有其他问题需要请教一下。就是数据怎么应对到COM口和SEG口得。比如代码里面得0x0a,是怎么对应的呢?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:515
  • 最近打卡:2025-05-12 09:31:29

10

主题

196

回帖

655

积分

高级会员

积分
655
发表于 2024-12-8 20:48:11 | 显示全部楼层

这玩意用电池有优势,其它别无事处

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:387
  • 最近打卡:2025-05-12 07:41:26

43

主题

336

回帖

627

积分

高级会员

积分
627
发表于 2024-12-9 16:39:49 来自手机 | 显示全部楼层
lyagp03 发表于 2024-12-7 23:54
移植这个代码后,成功电量LCD。不过还有其他问题需要请教一下。就是数据怎么应对到COM口和SEG口得。比如 ...

对应你的芯片。上面的角。和数码管差不多
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:271
  • 最近打卡:2025-05-12 10:31:08

9

主题

96

回帖

581

积分

高级会员

积分
581
发表于 2024-12-10 11:10:58 | 显示全部楼层
qepu*** 发表于 2024-12-9 16:39
对应你的芯片。上面的角。和数码管差不多

好的,谢谢。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-12 22:41 , Processed in 0.111665 second(s), 77 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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