搜索
bottom↓
回复: 5

ht1621连续写数据时候地址值自动加2???

[复制链接]

出0入0汤圆

发表于 2011-4-26 03:37:21 | 显示全部楼层 |阅读模式
void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt)        {
  uchar num2;
  HT1621_CS=0;
  _Nop();
  _Nop();
  Ht1621Send_Bit(0xa0,3);                         //写入数据标志101
  Ht1621Send_Bit(Addr<<2,6);                      //写入地址数据
// Ht1621Send_Bit(Addr,6); //写入地址数据
  for (num2=0;num2<cnt;num2++)
   {
     Ht1621Send_Data_Bit(*p,8);                         
    p++;
   }
  HT1621_CS=1;
// _Nop();
}
Ht1621WrAllData(0x00,table4,24);送这条指令之后发现 地址值自动加2???
从AD采样的数据不断的需要刷新LCD 如何连续刷新LCD 显示是用一点一点来刷新 我的LCD SEG复用了太多 太多的标志占用一个SEG,
一个一个点亮没有问题,太多的数据需要刷新的话 前一个数据又会刷没了。。。。。。
请各位大侠指教。。。。。。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出350入8汤圆

发表于 2011-4-26 08:41:26 | 显示全部楼层
没看到你的HT1621Send_data_bit();程序,只能猜猜:是不是你的程序发送一组数据完后的延时不够,或者最后的时序处理不对.

出0入0汤圆

 楼主| 发表于 2011-4-26 12:41:22 | 显示全部楼层
回复【1楼】bmagui
-----------------------------------------------------------------------
大侠帮我看下 那有问题  现在是 一个一个去点亮 ,比较麻烦 还得判断先前的数据,SEG复用太多,刷数据比较麻烦 想用 连续写的方式来刷屏,是不是我理解错了 ,认为1621的扫描是先SEG扫过4个COM 地址再加一(现在是观察到地址自动加2)循环这样
连续写的话有什么优势,网上看了些参加程序很多是通过一个一个点去刷,这两者有什么区别?? 一个一个点亮不是需要去判断先前同一个SEG中COM的数据位,要不刷新会冲掉以前的数据???(子程序也是从网上载的,一个一个点亮没问题), 人都快晕了

void Ht1621Send_Bit(uchar Data,uchar cnt)
{
  uchar num;
  for (num=0;num<cnt;num++)
   {
    // HT1621_WR=0;
         _Nop();
         if((Data&0x80)==0)
         HT1621_DAT=0;
         else
         HT1621_DAT=1;
         HT1621_WR=0;
         _Nop();
     HT1621_WR=1;
         _Nop();
         _Nop();
     Data<<=1;
  }
}


void Ht1621Send_Data_Bit(uchar Data,uchar cnt)
{
  uchar num1;
  for(num1=0;num1<cnt;num1++)
   {
     //HT1621_WR=0;
         _Nop();
         if((Data&0x01)==0)
         HT1621_DAT=0;
         else
         HT1621_DAT=1;
          HT1621_WR=0;
           _Nop();
     HT1621_WR=1;
         _Nop();
         _Nop();
     Data>>=1;
   }
}
void Ht1621Send_Bit(uchar Data,uchar cnt)
{
  uchar num;
  for (num=0;num<cnt;num++)
   {
    // HT1621_WR=0;
         _Nop();
         if((Data&0x80)==0)
         HT1621_DAT=0;
         else
         HT1621_DAT=1;
         HT1621_WR=0;
         _Nop();
     HT1621_WR=1;
         _Nop();
         _Nop();
     Data<<=1;
  }
}


void Ht1621Send_Data_Bit(uchar Data,uchar cnt)
{
  uchar num1;
  for(num1=0;num1<cnt;num1++)
   {
     //HT1621_WR=0;
         _Nop();
         if((Data&0x01)==0)
         HT1621_DAT=0;
         else
         HT1621_DAT=1;
          HT1621_WR=0;
           _Nop();
     HT1621_WR=1;
         _Nop();
         _Nop();
     Data>>=1;
   }
}

void Ht1621Wr_Cmd(uchar Cmd)
{
   HT1621_CS=0;
   _Nop();
   _Nop();
   _Nop();
   Ht1621Send_Bit(0x80,4);                            //写入命令标志100        按1000 4位写入 必须写4
   Ht1621Send_Bit(Cmd,8);                             //写入命令数据
   HT1621_CS=1;
   _Nop();
   _Nop();
   _Nop();
}

void Ht1621WrOneData(uchar Addr,uchar Data)
{
  HT1621_CS=0;
  _Nop();
  _Nop();
  _Nop();
  Ht1621Send_Bit(0xa0,3);                           //写入数据标志101
  Ht1621Send_Bit(Addr<<2,6);                        //写入地址数据
  //Ht1621Send_Bit(Addr,6); //写入地址数据
  Ht1621Send_Data_Bit(Data,4);                   //写入数据

// Ht1621Send_Data_Bit(Data,4);                   //写入数据
  HT1621_CS=1;
  _Nop();
  _Nop();
  _Nop();
}

出0入0汤圆

发表于 2011-9-26 22:20:56 | 显示全部楼层
给个在KeilC51用过的例子:
用过的例子ourdev_679896O39W14.rar(文件大小:5K) (原文件名:Ht1620驱动of KeilC51.rar)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 23:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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