6076|7

1万

帖子

16

TA的资源

版主

楼主
 

MSP430G2452点亮段式液晶 [复制链接]

我这个是用LaunchPad驱动HT1621B型芯片,从而达到控制段式液晶,至于段式液晶屏,一定是3V地。

有图有真象先上图先:

 

 

段显显示:

 

我是用线搭的,DATA、WR、CS、接P1的0、1、2、

 

上程序:

 

此程序先每个段显一遍形成888888

然后显101

 

//-----------------------------------------------------------------------------------------
//程序说明:MSP4302452 驱动HT1621B 48脚贴片封装,从而达到控制段显液晶的目的
//时    间:2012-3-8
//-----------------------------------------------------------------------------------------
#include <io430g2452.h>
#include <in430.h>
#include <stdio.h>

#define uint  unsigned int
#define uchar  unsigned char
#define NOP() __no_operation() //本句很重要是关于NOP在430里好不好用的问题

 

#define HT1621_CS BIT2    //LCD 引脚定义
#define HT1621_WR BIT1       
#define HT1621_DAT BIT0       


#define  BIAS     0x52             //0b1000 0101 0010  1/3duty 4com
#define  SYSDIS   0X00             //0b1000 0000 0000  关振系统荡器和LCD偏压发生器
#define  SYSEN    0X02             //0b1000 0000 0010 打开系统振荡器
#define  LCDOFF   0X04             //0b1000 0000 0100  关LCD偏压
#define  LCDON    0X06             //0b1000 0000 0110  打开LCD偏压
#define  XTAL     0x28             //0b1000 0010 1000 外部接时钟
#define  RC256    0X30             //0b1000 0011 0000  内部时钟
#define  TONEON   0X12             //0b1000 0001 0010  打开声音输出
#define  TONEOFF  0X10             //0b1000 0001 0000 关闭声音输出
#define  WDTDIS1   0X0A        //0b1000 0000 1010  禁止看门狗

//-----------------------------------------------------------------------------------------
//函数名称:Delay()
//功    能:延时子程序
//-----------------------------------------------------------------------------------------
void Delay(uchar us)  //5,7,9
{
  while(--us); 
}
//-----------------------------------------------------------------------------------------
//函数名称:DelayMS()
//功    能:延时子程序
//-----------------------------------------------------------------------------------------
void DelayMS(uint iMs)
{
  uint i,j;
    for(i=0;i<iMs;i++)
      for(j=0;j<65;j++)
  {
   Delay(1);
  }
}
//-----------------------------------------------------------------------------------------
//函数名称:Ht1621Wr_Data()
//功    能:写数据函数,cnt为传送数据位数,数据传送为低位在前
//-----------------------------------------------------------------------------------------
void Ht1621Wr_Data(uchar Data,uchar cnt)
{
 uchar i;
   for (i=0;i<cnt;i++)
   {  
      P1OUT &= ~HT1621_WR;
  NOP();
  NOP();
  NOP();
  NOP();

  if((Data & 0x80)==0x80)
  {
   P1OUT |=HT1621_DAT;
  }
  else
  {
   P1OUT &=~HT1621_DAT;
  }
      P1OUT |=HT1621_WR;
  NOP();
  NOP();
  NOP();
  NOP();
      Data<<=1; 
   }
}
//-----------------------------------------------------------------------------------------
//函数名称:void Ht1621WrCmd(uchar Cmd)
//功能描述: HT1621命令写入函数
//参数说明:Cmd为写入命令数据 
//说    明:写入命令标识位100
//-----------------------------------------------------------------------------------------
void Ht1621WrCmd(uchar Cmd)
{
 P1OUT&=~HT1621_CS;
 NOP();
 NOP();
 NOP();
 NOP();
   Ht1621Wr_Data(0x80,4);          //写入命令标志100
   Ht1621Wr_Data(Cmd,8);                 //写入命令数据
   P1OUT |= HT1621_CS;
}
//-----------------------------------------------------------------------------------------
//函数名称:void Ht1621WrOneData(uchar Addr,uchar Data)
//功能描述: HT1621在指定地址写入数据函数
//参数说明:Addr为写入初始地址,Data为写入数据 
//说    明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位
//-----------------------------------------------------------------------------------------
void Ht1621WrOneData(uchar Addr,uchar Data)
{
  P1OUT &=~HT1621_CS;
  Ht1621Wr_Data(0xa0,3);                 //写入数据标志101
  Ht1621Wr_Data(Addr<<2,6);          //写入地址数据
  Ht1621Wr_Data(Data<<4,4);          //写入数据
  P1OUT |= HT1621_CS;  
}
//-----------------------------------------------------------------------------------------
//函数名称:void Ht1621WrAllData()
//功能描述: HT1621连续写入方式函数
//说    明:HT1621的数据位4位,此处每次数据为8位,写入数据总数按8位计算
//-----------------------------------------------------------------------------------------
void Ht1621WrAllData(void)
{
 uchar i;

 P1OUT &=~HT1621_CS;

  Ht1621Wr_Data(0xa0,3);          //写入数据标志101
   Ht1621Wr_Data(0x00<<2,6);         //写入地址数据

   for (i=0;i<16;i++)
   {
          Ht1621Wr_Data(0x00,8);         //写入数据
   }
   P1OUT |=HT1621_CS;  
}
//-----------------------------------------------------------------------------------------
//函数名称:void Ht1621_Init(void)
//功能描述: HT1621初始化
//说    明:初始化后,液晶屏所有字段均显示
//-----------------------------------------------------------------------------------------
void Ht1621_Init(void)
{
   P1OUT |=HT1621_CS;
   P1OUT |=HT1621_WR;
   P1OUT |=HT1621_DAT;
   DelayMS(2000);                         //延时使LCD工作电压稳定
   Ht1621WrCmd(BIAS);
   Ht1621WrCmd(RC256);              //使用内部振荡器
   Ht1621WrCmd(SYSDIS);
   Ht1621WrCmd(WDTDIS1);
   Ht1621WrCmd(SYSEN);
   Ht1621WrCmd(LCDON);
}
//-----------------------------------------------------------------------------------------
//函数名称:Initial()
//功    能:初始化子程序
//-----------------------------------------------------------------------------------------
void Initial(void)
{
 WDTCTL = WDTPW + WDTHOLD;//关闭看门狗
BCSCTL1 = CALBC1_1MHZ;                    // Set range
  DCOCTL = CALDCO_1MHZ;
  BCSCTL2 &= ~(DIVS_3);                     // SMCLK = DCO = 1MHz 
  P1DIR=0xFF;
  P1OUT=0xFF;
}


//-----------------------------------------------------------------------------------------
//函数名称:void Ht1621WrByteData(uchar address,uchar what)
//功    能:在指定的地址写入一个字节数,注意高字节先写,每次写入奇数地址
//-----------------------------------------------------------------------------------------

void Ht1621WrByteData(uchar address,uchar what)
{
 

 P1OUT &=~HT1621_CS;

  Ht1621Wr_Data(0xa0,3);          //写入数据标志101
  Ht1621Wr_Data(address<<2,6);         //写入地址数据
  Ht1621Wr_Data(what,8);         //写入数据
  
   P1OUT |=HT1621_CS;  
}


//-----------------------------------------------------------------------------------------
//函数名称:main()
//功    能:主函数
//-----------------------------------------------------------------------------------------
void main(void)
{
  uchar i,j,t;

 Initial();      //初始化子程序
   Ht1621_Init();          //上电初始化LCD

   DelayMS(1000);             //延时一段时间
 Ht1621WrAllData();
   
   //while(1)
 {
  Ht1621WrAllData();
      for(i=0;i<16;i++)     //SEG0-SEG31
         {
          t=0x01;
           for(j=0;j<4;j++)    //COM0 - COM3
            {
                 Ht1621WrOneData(i,t);
                  t<<=1;
                 t++;
                                 
               DelayMS(5000);
              }
    }           
   }
  Ht1621WrAllData(); //清屏
  Ht1621WrByteData(0x06,0x05); //显示101
  Ht1621WrByteData(0x02,0x05);
  Ht1621WrByteData(0x04,0xF5);
 
 
}

 

MSP4302222.rar (22.27 KB, 下载次数: 78)

HT1621.pdf (436.02 KB, 下载次数: 96)

[ 本帖最后由 ddllxxrr 于 2012-3-9 09:18 编辑 ]

最新回复

学习一下,我也写了一个HT1621驱动段码屏,看看有什么不同。  详情 回复 发表于 2013-9-8 14:52
 
点赞 关注
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复
举报

1469

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
哈哈,支持一下,我上次是没用驱动芯片,直接用launchPad驱动了
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

板凳
 
HT1621B功耗如何?
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

4
 
为么我的不显示101,乱码了呢?
 
 
 

回复

1万

帖子

16

TA的资源

版主

5
 

那是因为你的字模没搞对,你的屏同我的屏不是一个型号

请参考手册,研究下

点评

可以我的也是ht1621B啊,那你有1621B的字模么?能不能发给我一份,万分感谢!我QQ邮箱是:1547323320@qq.com:congratulate:  详情 回复 发表于 2012-8-28 09:39
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼 ddllxxrr 的帖子

可以我的也是ht1621B啊,那你有1621B的字模么?能不能发给我一份,万分感谢!我QQ邮箱是:1547323320@qq.com
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 5楼 ddllxxrr 的帖子

谢谢提醒,我自己也成功了

图片 001.jpg (28.67 KB, 下载次数: 1)

HT621B

HT621B
 
 
 

回复

41

帖子

1

TA的资源

一粒金砂(中级)

8
 
学习一下,我也写了一个HT1621驱动段码屏,看看有什么不同。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表