HT1621B 是不是不能读RAM

[复制链接]
 楼主| c316348771 发表于 2013-3-28 18:09 | 显示全部楼层 |阅读模式
  1. #define HT1621IO_DIR P2DIR |= BIT4+BIT5+BIT6+BIT7
  2. #define CS1 P2OUT |= BIT7
  3. #define CS0 P2OUT &= ~BIT7
  4. #define RD1 P2OUT |= BIT6
  5. #define RD0 P2OUT &= ~BIT6
  6. #define WR1 P2OUT |= BIT5
  7. #define WR0 P2OUT &= ~BIT5
  8. #define DAT1 P2OUT |= BIT4
  9. #define DAT0 P2OUT &= ~BIT4
  10. #define DAT_IN P2IN & BIT4
  11. //读LCD单个地址的数据码
  12. unsigned char Read_1621(unsigned char addr)
  13. {
  14. P2DIR &=~BIT4;
  15. unsigned char Data_Byte;
  16. unsigned char i;
  17. unsigned char temp;
  18. Data_Byte=0x00;
  19. temp=0x01;
  20. CS0;
  21. SendBit_1621(0xa0,3); //写入标志码"110"
  22. SendBit_1621(addr<<2,6); //写入6 位addr
  23. RD0;
  24. _NOP();
  25. for(i=0;i<4;i++)
  26. {
  27. _NOP();
  28. RD1;
  29. _NOP();
  30. if(DAT_IN)
  31. {
  32. Data_Byte=Data_Byte|temp;
  33. }
  34. RD0;
  35. temp=temp<<1;
  36. }
  37. CS1;
  38. P2DIR |= BIT4;
  39. return(Data_Byte);
  40. }
  1. void SendBit_1621(unsigned char data,unsigned char cnt) //data的高cnt位写入HT1621,高位在前
  2. {
  3. unsigned char i;
  4. for(i =0; i <cnt; i ++)
  5. {
  6. if((data&0x80)==0) DAT0;
  7. else DAT1;
  8. WR0;
  9. _NOP();
  10. WR1;
  11. data<<=1;
  12. }
  13. }
单片机用的MSP430F5438A 能进行写操作 进行不了读操作!附上时序图跟代码!求解

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
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
849928055 发表于 2015-3-5 10:06 | 显示全部楼层
请问下,让数字秒闪是怎么操作的
tyw 发表于 2015-3-5 10:33 | 显示全部楼层
本帖最后由 tyw 于 2015-3-5 10:49 编辑
849928055 发表于 2015-3-5 10:06
请问下,让数字秒闪是怎么操作的


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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
849928055 发表于 2015-3-6 10:05 | 显示全部楼层
tyw 发表于 2015-3-5 10:33
1621只是一个驱动芯片,没有闪烁指令,想玩秒闪只能每0.5秒加载送显,再隔0.5秒清屏(送"黑"数据即可).

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
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.
849928055 发表于 2015-3-9 15:00 | 显示全部楼层
tyw 发表于 2015-3-6 11:47
一般在RAM区划出一块区来映射1621的每一个笔段,写一个子程序把RAM映射区内容逐个写到1621.
只要修改RAM映 ...

谢谢,虽然还不是太懂,我去试试
849928055 发表于 2015-3-9 16:38 | 显示全部楼层
849928055 发表于 2015-3-9 15:00
谢谢,虽然还不是太懂,我去试试

怎么在RAM区划出一块区来映射1621的每一个笔段
tyw 发表于 2015-3-9 17:41 | 显示全部楼层
本帖最后由 tyw 于 2015-3-9 18:09 编辑
849928055 发表于 2015-3-9 16:38
怎么在RAM区划出一块区来映射1621的每一个笔段


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





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
849928055 发表于 2015-3-11 09:54 | 显示全部楼层
tyw 发表于 2015-3-9 17:41
每个笔段对应RAM字节中的1个bit,自已去规划安排一下就行了.至于笔段定义得根据LCD的真值表自已规划.
下图 ...

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
tyw 发表于 2015-3-11 10:17 | 显示全部楼层
849928055 发表于 2015-3-11 09:54
还是不太懂,我这个压缩包里按键程序,和显示程序都写好了,能帮我修改下一下,按下按键1lcd秒闪。谢谢 ...

少累,俺只玩汇编,帮不了泥
849928055 发表于 2015-3-12 13:07 | 显示全部楼层
tyw 发表于 2015-3-11 10:17
少累,俺只玩汇编,帮不了泥

好吧,谢谢
 楼主| c316348771 发表于 2015-3-19 15:21 | 显示全部楼层
849928055 发表于 2015-3-6 10:05
我往里面送数据  和地址都是根据表格一个一个写的,感觉好繁琐,如果能建立个数组就好了,不知道怎么搞, ...

把每一段的数据和地址码定义好,再写一个通用的底层读/写函数,通过传参来实现点亮响应的段位
 楼主| c316348771 发表于 2015-3-19 15:24 | 显示全部楼层
HT1621B是可读写的,很早的帖子早忘了怎么处理好的了,附上读函数
  1. //*****************************************************************************
  2. //将读到的数据存到Data_Byte;
  3. unsigned char ReadBit_1621(unsigned char cnt)
  4. {
  5.   unsigned char i;
  6.   unsigned char Data_Byte;
  7.   unsigned char temp;
  8.   i=0;
  9.   Data_Byte=0x00;
  10.   temp=0x01;
  11.   Data_IN;
  12.   for(i=0;i<cnt;++i)
  13.      {
  14.         RD0;
  15.         delay_us(7);
  16.         if(DAT_IN)
  17.         {
  18.           Data_Byte = Data_Byte | temp;
  19.         }
  20.         RD1;
  21.         delay_us(7);
  22.         temp=temp<<1;
  23.      }
  24.    Data_OUT;
  25.    RD1;
  26.    return(Data_Byte);
  27. }

849928055 发表于 2015-3-28 10:16 | 显示全部楼层
c316348771 发表于 2015-3-19 15:24
HT1621B是可读写的,很早的帖子早忘了怎么处理好的了,附上读函数

谢谢
849928055 发表于 2015-3-28 10:18 | 显示全部楼层
c316348771 发表于 2015-3-19 15:24
HT1621B是可读写的,很早的帖子早忘了怎么处理好的了,附上读函数

Data_IN; Data_OUT;是定义的什么
849928055 发表于 2015-3-28 10:18 | 显示全部楼层
c316348771 发表于 2015-3-19 15:24
HT1621B是可读写的,很早的帖子早忘了怎么处理好的了,附上读函数

Data_IN; Data_OUT;是定义的什么
疏梅淡雪 发表于 2016-2-29 18:09 | 显示全部楼层
baiyunfei.k.f 发表于 2013-3-29 08:36
我用过HT1622,驱动段码液晶正常,不过为了节省口线我没有读操作,而是在单片机的RAM中开辟了与HT1622的RAM ...

这样会不会因为读写次数超出,导致单片机失效呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

8

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部