打印

HT1621B 是不是不能读RAM

[复制链接]
3144|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
c316348771|  楼主 | 2013-3-28 18:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define HT1621IO_DIR P2DIR |= BIT4+BIT5+BIT6+BIT7 
#define CS1 P2OUT |= BIT7
#define CS0 P2OUT &= ~BIT7
#define RD1 P2OUT |= BIT6
#define RD0 P2OUT &= ~BIT6
#define WR1 P2OUT |= BIT5
#define WR0 P2OUT &= ~BIT5
#define DAT1 P2OUT |= BIT4
#define DAT0 P2OUT &= ~BIT4
#define DAT_IN P2IN & BIT4
//读LCD单个地址的数据码
unsigned char Read_1621(unsigned char addr)
{
P2DIR &=~BIT4;
unsigned char Data_Byte;
unsigned char i;
unsigned char temp;
Data_Byte=0x00;
temp=0x01;
CS0;
SendBit_1621(0xa0,3); //写入标志码"110"
SendBit_1621(addr<<2,6); //写入6 位addr
RD0;
_NOP();
for(i=0;i<4;i++)
{
_NOP();
RD1;
_NOP();
if(DAT_IN)
{
Data_Byte=Data_Byte|temp;
}
RD0;
temp=temp<<1;
}
CS1;
P2DIR |= BIT4;
return(Data_Byte);
}
void SendBit_1621(unsigned char data,unsigned char cnt) //data的高cnt位写入HT1621,高位在前 
{
unsigned char i;
for(i =0; i <cnt; i ++)
{
if((data&0x80)==0) DAT0;
else DAT1;
WR0;
_NOP();
WR1;
data<<=1;
}
}
单片机用的MSP430F5438A 能进行写操作 进行不了读操作!附上时序图跟代码!求解

read.png (41.33 KB )

read.png

相关帖子

沙发
baiyunfei.k.f| | 2013-3-29 08:36 | 只看该作者
我用过HT1622,驱动段码液晶正常,不过为了节省口线我没有读操作,而是在单片机的RAM中开辟了与HT1622的RAM一样大的区,写操作同时改动这个区的数据,觉得这样比读取HT1622要更效率,只是多用了单片机的RAM

使用特权

评论回复
板凳
SunFans| | 2013-3-30 08:46 | 只看该作者
嗯 ,楼上所言甚是,我们用1621的时候也是只写而没去读RAM数据。

使用特权

评论回复
地板
dxl365| | 2013-9-9 22:17 | 只看该作者
我也是一样的我的主控IC MSP430F149

使用特权

评论回复
5
849928055| | 2015-3-5 10:06 | 只看该作者
请问下,让数字秒闪是怎么操作的

使用特权

评论回复
6
tyw| | 2015-3-5 10:33 | 只看该作者
本帖最后由 tyw 于 2015-3-5 10:49 编辑
849928055 发表于 2015-3-5 10:06
请问下,让数字秒闪是怎么操作的


1621只是一个驱动芯片,没有闪烁指令,想玩秒闪只能每0.5秒加载送显,再隔0.5秒清屏(送"黑"数据即可).

HOLTEK HT1621 LCD驱动器.pdf (436.02 KB)

使用特权

评论回复
7
849928055| | 2015-3-6 10:05 | 只看该作者
tyw 发表于 2015-3-5 10:33
1621只是一个驱动芯片,没有闪烁指令,想玩秒闪只能每0.5秒加载送显,再隔0.5秒清屏(送"黑"数据即可).

我往里面送数据  和地址都是根据表格一个一个写的,感觉好繁琐,如果能建立个数组就好了,不知道怎么搞,前辈指点一下。。。

QQ图片20150306100114.png (19.31 KB )

断码的cad图

断码的cad图

使用特权

评论回复
8
tyw| | 2015-3-6 11:47 | 只看该作者
849928055 发表于 2015-3-6 10:05
我往里面送数据  和地址都是根据表格一个一个写的,感觉好繁琐,如果能建立个数组就好了,不知道怎么搞, ...

一般在RAM区划出一块区来映射1621的每一个笔段,写一个子程序把RAM映射区内容逐个写到1621.
只要修改RAM映射区内容就可更改1621显示内容了.
例如定义: 01H→度十位;02H→度个位;03H→分十位,04H→分个位......
度有变化了,就改写01H,02H.其他无变化就不修改.
显示刷新就只管整体把DISP显示映射区写入1621.

使用特权

评论回复
9
849928055| | 2015-3-9 15:00 | 只看该作者
tyw 发表于 2015-3-6 11:47
一般在RAM区划出一块区来映射1621的每一个笔段,写一个子程序把RAM映射区内容逐个写到1621.
只要修改RAM映 ...

谢谢,虽然还不是太懂,我去试试

使用特权

评论回复
10
849928055| | 2015-3-9 16:38 | 只看该作者
849928055 发表于 2015-3-9 15:00
谢谢,虽然还不是太懂,我去试试

怎么在RAM区划出一块区来映射1621的每一个笔段

使用特权

评论回复
11
tyw| | 2015-3-9 17:41 | 只看该作者
本帖最后由 tyw 于 2015-3-9 18:09 编辑
849928055 发表于 2015-3-9 16:38
怎么在RAM区划出一块区来映射1621的每一个笔段


每个笔段对应RAM字节中的1个bit,自已去规划安排一下就行了.至于笔段定义得根据LCD的真值表自已规划.
下图内容供参考.每个字节没用足,是便于写程序

DHQ_LCD.ASM.rar (7.9 KB)



使用特权

评论回复
12
849928055| | 2015-3-11 09:54 | 只看该作者
tyw 发表于 2015-3-9 17:41
每个笔段对应RAM字节中的1个bit,自已去规划安排一下就行了.至于笔段定义得根据LCD的真值表自已规划.
下图 ...

还是不太懂,我这个压缩包里按键程序,和显示程序都写好了,能帮我修改下一下,按下按键1lcd秒闪。谢谢

按键测试程序1 - 副本 - 副本.zip

243.77 KB

使用特权

评论回复
13
tyw| | 2015-3-11 10:17 | 只看该作者
849928055 发表于 2015-3-11 09:54
还是不太懂,我这个压缩包里按键程序,和显示程序都写好了,能帮我修改下一下,按下按键1lcd秒闪。谢谢 ...

少累,俺只玩汇编,帮不了泥

使用特权

评论回复
14
849928055| | 2015-3-12 13:07 | 只看该作者
tyw 发表于 2015-3-11 10:17
少累,俺只玩汇编,帮不了泥

好吧,谢谢

使用特权

评论回复
15
c316348771|  楼主 | 2015-3-19 15:21 | 只看该作者
849928055 发表于 2015-3-6 10:05
我往里面送数据  和地址都是根据表格一个一个写的,感觉好繁琐,如果能建立个数组就好了,不知道怎么搞, ...

把每一段的数据和地址码定义好,再写一个通用的底层读/写函数,通过传参来实现点亮响应的段位

使用特权

评论回复
16
c316348771|  楼主 | 2015-3-19 15:24 | 只看该作者
HT1621B是可读写的,很早的帖子早忘了怎么处理好的了,附上读函数
//*****************************************************************************
//将读到的数据存到Data_Byte;
unsigned char ReadBit_1621(unsigned char cnt)
{
  unsigned char i;
  unsigned char Data_Byte;
  unsigned char temp;
  i=0;
  Data_Byte=0x00;
  temp=0x01;
  Data_IN;
  for(i=0;i<cnt;++i)
     {
        RD0;
        delay_us(7);
        if(DAT_IN)
        {
          Data_Byte = Data_Byte | temp;
        }
        RD1;
        delay_us(7);
        temp=temp<<1;
     }
   Data_OUT;
   RD1;
   return(Data_Byte);
}

使用特权

评论回复
17
849928055| | 2015-3-28 10:16 | 只看该作者
c316348771 发表于 2015-3-19 15:24
HT1621B是可读写的,很早的帖子早忘了怎么处理好的了,附上读函数

谢谢

使用特权

评论回复
18
849928055| | 2015-3-28 10:18 | 只看该作者
c316348771 发表于 2015-3-19 15:24
HT1621B是可读写的,很早的帖子早忘了怎么处理好的了,附上读函数

Data_IN; Data_OUT;是定义的什么

使用特权

评论回复
19
849928055| | 2015-3-28 10:18 | 只看该作者
c316348771 发表于 2015-3-19 15:24
HT1621B是可读写的,很早的帖子早忘了怎么处理好的了,附上读函数

Data_IN; Data_OUT;是定义的什么

使用特权

评论回复
20
疏梅淡雪| | 2016-2-29 18:09 | 只看该作者
baiyunfei.k.f 发表于 2013-3-29 08:36
我用过HT1622,驱动段码液晶正常,不过为了节省口线我没有读操作,而是在单片机的RAM中开辟了与HT1622的RAM ...

这样会不会因为读写次数超出,导致单片机失效呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝