qepuemc 发表于 2024-10-20 17:24:41

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

研究了一两个月了,实在研究不出来。
哪位大哥的理由可以发出来分享一下吗?

现在的情况就是没有输出。别的都不考虑。现在就考虑能输出就行。
谢谢谢谢

邮箱 发表于 2024-10-20 19:47:27

使用逻辑分析仪查看

qepuemc 发表于 2024-10-21 08:57:28

邮箱 发表于 2024-10-20 19:47
使用逻辑分析仪查看

万用表也不是傻子,万用表测不出来电压

邮箱 发表于 2024-10-21 11:27:21

qepuemc 发表于 2024-10-21 08:57
万用表也不是傻子,万用表测不出来电压

逻辑分析仪看通信时序是否正确

qepuemc 发表于 2024-10-21 11:39:25

邮箱 发表于 2024-10-21 11:27
逻辑分析仪看通信时序是否正确

就算我有逻辑分析一。就算我去看。我也看不懂

qepuemc 发表于 2024-10-21 11:40:39

邮箱 发表于 2024-10-21 11:27
逻辑分析仪看通信时序是否正确

我知道的,就是把程序下载进去就完活了.有意思的就是根本就找不到。这么基本的东西,不知道为啥要藏着掖着

vip2128 发表于 2024-10-21 11:58:59

找1621d的手册去编, 或者找类似的芯片程序去改

vip2128 发表于 2024-10-21 12:17:45

Ai8H2K32U驱动HT1621再驱动段码LCD
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11050

这个去改

qepuemc 发表于 2024-10-22 08:08:39

本帖最后由 qepuemc 于 2024-10-22 08:41 编辑

vip2128 发表于 2024-10-21 12:17
Ai8H2K32U驱动HT1621再驱动段码LCD
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11050



这个。代码之前就已经看过了。当时一看没法用,也就没试好。
刚才改了改,把没用的去掉。已经成功发信号到了1621   终于看到点亮的希望了。
非常感谢。{:5_272:}

qepuemc 发表于 2024-10-31 23:00:00

自己分享一个吧。用stc15w408AS的 这类的都可以。
代码直接贴出保证可以编译也可以用。只是实现可以驱动 正常连接
#include <STC15WX.h>                                       //MCU头文件
#include "intrins.h"                                       //包含nop指令头文件

#define uchar unsigned char                                 //数据类型宏定义
#define uint unsigned int                                 //数据类型宏定义

#define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //宏定义


/******************TM1621D模块命令定义*********************/
#define SYSDIS   0x00         //关系统振荡器和LCD偏压发生器      
#define SYSEN    0x02    //打开系统振荡器      

#define LCDOFF   0x04   //关LCD偏压
#define LCDON    0x06   //开LCD偏压
                                                         
#define RC       0x30   //内部RC振荡      

#define BIAS   0x52   //1/3偏压 4公共口      

/********************定义控制端口**********************/
sbit CS=P1^3;
sbit WRITE=P1^4;
sbit DATA=P1^5;

/********************定义数据*************************/
//uchar code Smg={0xeb,0x60,0xc7,0xE5,0x6C,0xAD,0xaf,0xE0,0xef,0xed,0xee,0x2f,0x8b,0x67,0x8f,0x8e};//0~F字型码
uchar code Smg={0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//0~F字型码
uchar code Tab0={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //清屏


/********************延时函数*************************/
void delay_nms(uint n)
{
   uint i;
   while(n--)
   for(i=0;i<500;i++);
}

/********************从高位写入数据*************************/
void Write_Data_H(uchar Data, uchar Cnt)         //Data的高cnt位写入TM1621D,高位在前
{
uchar i;
for(i=0;i<Cnt;i++)
{
WRITE=0;
if(Data&0x80)                                 //从最高位发送
    DATA=1;               
else
    DATA=0;
nop;
nop;
WRITE=1;
Data<<=1;
}
WRITE=0;
DATA=0;
}

/********************从低位写入数据*************************/
void Write_Data_L(uchar Data,uchar Cnt) //Data 的低cnt位写入TM1621D,低位在前
{
unsigned char i;
for(i=0;i<Cnt;i++)
{
   WRITE=0;
   if(Data&0x01)                                 //从低位发送
   DATA=1;
   else
   DATA=0;
      nop;
      nop;
      WRITE=1;
      Data>>=1;
}
WRITE=0;
DATA=0;
}

/********************写入控制命令*************************/
void WriteCmd(uchar Cmd)
{
CS=0;
nop;
Write_Data_H(0x80,4);   //写入命令标志100
Write_Data_H(Cmd,8);      //写入命令数据
CS=1;
nop;
}

/*********指定地址写入数据,实际写入后4位************/
void WriteOneData(uchar Addr, uchar Data)
{
CS=0;
Write_Data_H(0xa0,3);   //写入数据标志101
Write_Data_H(Addr<<2,6);//写入地址数据
Write_Data_L(Data,4);   //写入数据
CS=1;
nop;
}

/*********连续写入方式,每次数据为8位,写入数据************/
void WriteAllData(uchar Addr,uchar *p,uchar cnt)
{
uchar i;
CS=0;
Write_Data_H(0xa0,3);          //写入数据标志101
Write_Data_H(Addr<<2,6);      //写入地址数据
for(i=0;i<cnt;i++)                //写入数据
{
   Write_Data_L(*p,8);            
   p++;
}
CS=1;
nop;
}

/*******************TM1621D初始化**********************/
void TM1621D_init()
{
CS=1;
WRITE=1;
DATA=1;
nop;
delay_nms(1);                        
WriteCmd(BIAS);               //1/3偏压 4公共口
WriteCmd(RC);                         //内部RC振荡
WriteCmd(SYSDIS);               //关系统振荡器和LCD偏压发生器
WriteCmd(SYSEN);               //打开系统振荡器
WriteCmd(LCDON);               //开LCD偏压
}

void main()
{
TM1621D_init();                //开机初始化
delay_nms(1);
WriteAllData(0,Tab0,16);         //LCD清显存
while(1)
{
// WriteAllData(0x0b,Smg,6);          //LCD SEG10到SEG21显示0~5
       

       
        WriteOneData(0x09,0x0a); //1234   3
       
        WriteOneData(0x0B,0x0b); //1234   4
       
        WriteOneData(0x0e,0x0c); //1234   4
       
        WriteOneData(0x0f,0x0f); //1234   4
               //WriteAllData(0x0e,Smg,1);          //LCD SEG10到SEG21显示0~5
}
}
页: [1] 2
查看完整版本: tm1621d驱动可以用的例子谁有可以发下吗