搜索
bottom↓
回复: 5

HT1622 驱动问题

[复制链接]

出0入0汤圆

发表于 2014-2-10 09:06:35 | 显示全部楼层 |阅读模式
HT1622 驱动断码屏只有com口有输出 段 驱动脚没有输出有谁碰到过

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2014-2-10 09:31:40 | 显示全部楼层
从没遇到过:
1.确认HT1622驱动正常,SYS ON ,LCD ON
2.从新换一片IC
3.是不是测量有问题,实际能不能显示

出0入0汤圆

 楼主| 发表于 2014-2-14 11:27:24 | 显示全部楼层
移植了驱动但是总觉得这驱动有问题
/*****************************************************************
HT1622 底层驱动 Data 数据 Length 数据长度
*****************************************************************/
void Write_HT1622_Byte(unsigned char Data,unsigned char Length)
{
    unsigned char i,Temp=0x80;
    for (i=0;i<Length;i++)
    {   
        CLR_BIT ( HT1621_WR );   //“写”时钟置0
        if (Data&Temp)
          SET_BIT ( HT1621_DAT );//数据线置1
        else
          CLR_BIT ( HT1621_DAT );//数据线置0
        Temp>>=1;                //准备下一位
        SET_BIT ( HT1621_WR );   //“写”时钟置1
    }
}
/*****************************************************************
HT1622写入数据函数 Address 写数据地址  Data 数据
*****************************************************************/
void Write_HT1622_Data(unsigned char Address,unsigned char Data)
{
    CLR_BIT ( HT1621_CS );       //片选置0
    Address <<= 2;               //将实际地址挪到高位
    Data <<= 4;                  //将实际数据挪到高位
    Write_HT1622_Byte(0xA0,3);   //写入写数据的ID 101 高3位有效
    Write_HT1622_Byte(Address,6);//写入6个位初始地址 高6位有效
    Write_HT1622_Byte(Data,4);   //写入4个位数据 高4位有效
    SET_BIT ( HT1621_CS );       //片选置1  
}
/*****************************************************************
//HT1622写命令函数 Command 命令
*****************************************************************/
void Write_HT1622_Command(unsigned char Command)
{     
    CLR_BIT ( HT1621_CS );       //片选置0
    Write_HT1622_Byte(0x80,3);   //写入命令的ID:100
    Write_HT1622_Byte(Command,8);//写入实际命令的高8位(CMD.):C8-C1
    SET_BIT ( HT1621_DAT );      //|写入一个“1”即手册上所指“无关位”的那一个数据位
    CLR_BIT ( HT1621_WR );       //|
    _NOP();_NOP();_NOP();        //|
    SET_BIT ( HT1621_WR );       //|
    SET_BIT ( HT1621_CS );       //片选置1
}
/*****************************************************************
显示数字函数 *Data显示内容指针 Address 显示首位置   Length内容长度
*****************************************************************/
void Display(unsigned char *Data,unsigned char Address,unsigned char Length)
{
  unsigned char i = 0,Temp=0x0F;
  unsigned char ADDH,ADDL;
  for(;i<Length;i++)
  {
    Temp=DIS[*Data];                  //数据解析
    ADDL = Address*2;                 //低4位地址解析
    ADDL = ADDL*2+2-(ADDL/31)*59;     //低4位地址解析
    Write_HT1622_Data(ADDL,Temp&0x0F);//写低4位数据
    ADDH = Address*2-1;               //高4位地址解析
    ADDH = ADDH*2+2-(ADDH/31)*59;     //高4位地址解析
    Temp>>=4;                         //高4位数据解析
    Write_HT1622_Data(ADDH,Temp&0x0F);//写高4位数据
    Data ++;                          //显示数据指针增一
    Address ++;                       //显示地址增一
  }
}

在datasheet里面明明写的地址 和数据高低位不一致 地址高位在前  数据低位在前

出0入0汤圆

发表于 2014-2-14 13:15:14 | 显示全部楼层

  1. /*---------    HT1622测试程式范例 -----*/

  2. #include   "reg52M.h"

  3. #define RD    P3_3
  4. #define CS    P3_4
  5. #define WR    P3_5

  6. //------- DATA ---> P2.7

  7. //--- MCU: AT89C52, clock: 12.0MHZ

  8. /*------------------------ 标志定义 ----------*/


  9. #define TT 5
  10. #define FLASH 15000
  11. #define FLASH2 40000



  12. /* ----------  延 时 ---------------------*/
  13.   void  delay(uint n) { while(n)n--; }

  14. /*------------------WRITE CODE-------------*/

  15. void Wcode(uchar characer)
  16. {
  17.    uchar i;
  18.    uchar ddd;
  19.    CS=0;
  20.    ddd=0x80;
  21.    

  22.   for(i=1;i<=3;i++)     // Write: 100
  23.   {
  24.    WR=0;
  25.    P2=ddd;
  26.    delay(TT);
  27.    WR=1;
  28.    delay(TT);
  29.    
  30.         ddd=ddd<<1;
  31.    }
  32.    
  33. for(i=0;i<9;i++)     // write: Command
  34.   {
  35.    WR=0;
  36.    P2=characer;
  37.    delay(TT);
  38.    WR=1;
  39.    delay(TT);
  40.   
  41.    characer=characer<<1;  
  42.    
  43.                   }
  44. CS=1;
  45. WR=1;

  46. }


  47. /*------------------------ 字节转化 ----------------*/
  48. uchar Fan(uchar ID)
  49. {
  50.      uchar x=0x0;
  51.      uchar i;

  52.     for(i=0;i<4;i++)
  53.     {
  54.       x=x<<1;
  55.       x=x|(ID&0x1);
  56.       ID=ID>>1;
  57.                    }
  58.       return(x);
  59. }

  60. /*------------------WRITE Address and Aata-------------*/

  61. //--------Note: dat 的高四位无效

  62. void Wdata(uchar address,uchar dat)
  63. {
  64.    uchar i;
  65.    uchar eee;
  66.    eee=0xa0;
  67.    CS=0;
  68.   for(i=1;i<=3;i++)  // write code: 101
  69.   {
  70.    WR=0;
  71.    P2=eee;
  72.    delay(TT);
  73.    WR=1;
  74.    delay(TT);
  75.              eee=eee<<1;
  76.   }
  77.    

  78.   address=address<<2;  //write address: A5 A4 A3 A2 A1 A0

  79. for(i=0;i<6;i++)
  80.   {
  81.    WR=0;
  82.    P2=address;
  83.    delay(TT);
  84.    WR=1;
  85.    delay(TT);
  86.              address=address<<1;  
  87.   }

  88.   i=Fan(dat);
  89.   i=i<<4;
  90.   dat=i;   

  91. for(i=0;i<4;i++)  //write data: D0 D1 D2 D3
  92.   {
  93.    WR=0;
  94.    P2=dat;
  95.    delay(TT);
  96.    WR=1;
  97.    delay(TT);
  98.           dat=dat<<1;
  99.    }

  100. CS=1;
  101. WR=1;

  102. }


  103. /*--------------- Main Programmer  HT-1621 -----------------*/



  104. void  main()
  105. {

  106. uchar ADR;



  107. WR=1;
  108. RD=1;
  109. WR=1;
  110. RD=1;
  111. CS=1;

  112. delay(6000);


  113.    while(1)
  114. {

  115. /*------------------------------------ Init HT1621 --------*/

  116.   Wcode(0x18); // Choose Extenderal 32768 HZ OSCILLATOR
  117.   Wcode(0xE3); // Normal Mode
  118.   Wcode(0x01); // SYS EN
  119.   Wcode(0x03); // LCD ON



  120. /* ---------------------- 清屏 --------------*/
  121. for(ADR=0;ADR<63;ADR++) Wdata(ADR,0x00);
  122.                
  123. delay(60000);
  124. delay(60000);

  125. /* ---------------------- 全显 --------------*/
  126. for(ADR=0;ADR<63;ADR++) {  Wdata(ADR,0x0F);  delay(6000); }


  127. while(1);  // stop;

  128. }  // --------------- End While ------------------  

  129. } //---------------- The END ---------------------
复制代码

出0入0汤圆

发表于 2018-7-2 21:04:20 | 显示全部楼层
我碰到跟你一样的情况了,请问楼主怎么解决的呢?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 21:54

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

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