//十位数
else {
data[2] =LCD_CODE[(unsigned char) (dat/100)];
data[1] =LCD_CODE[(unsigned char) (dat/10)] ;
data[0] =LCD_CODE[(unsigned char) (dat)];
} //百位数
for(i=0;i HT1621_Dis_Char(data[i],i); } /*********************************************************/ //打印INT型数据 //dat--待显示数据 //chk--显示的数据位数: 0--关闭 1~3时,显示对应的数据;大于3时只显示3位;(从左到右) //point_loc--显示的小数点的位置:0以及大于2时:不显示小数点;1-显示第1个,2-显示第2个;(从左到右) /*********************************************************/ void HT1621_Print_Int(unsigned long dat,unsigned char chk,unsigned char point_loc) { unsigned char i; unsigned char data[HT1621_DATA_NUM]; //chk为0,则屏幕不显示 for(i=0;i if(chk>0) {data[0] = LCD_CODE[(unsigned char) (dat)]; dat=dat/10; } if(chk>1) {data[1] = LCD_CODE[(unsigned char) (dat)]; dat=dat/10; } if(chk>2) {data[2] = LCD_CODE[(unsigned char) (dat)]; } //显示小数点 if (point_loc==1) data[0]|=0x80; else if (point_loc==2) data[1]|=0x80; //从低位到高位,调用显示每个数的函数HT1621_Dis_Char for(i=0;i HT1621_Dis_Char(data[i],i); } /*********************************************************/ //送d_count位数据d;从低位开始送 /*********************************************************/ void HT1621_Send_Bits(unsigned char d, unsigned char d_count) { unsigned char j; for (j=0; j { HT1621_PORT&=~_BV(HT1621_WR); //wr置低; HT1621_Delay(50); if (d & 0x01==1) //置数据位; { HT1621_PORT|=_BV(HT1621_DATA); //data置0 } else { HT1621_PORT&=~_BV(HT1621_DATA); //data置1 } HT1621_PORT|=_BV(HT1621_WR); //wr置高; HT1621_Delay(50); d =(d>>1); //右移位 } } /*********************************************************/ //HT1621初始化 /*********************************************************/ void HT1621_Init() { DDRC |= _BV(4)|_BV(5)|_BV(7); //定义端口PC4-PC5-PC7输出 HT1621_PORT&=~_BV(HT1621_CS); //CS端清零 HT1621_Send_Bits(0x18,9); //系统时钟选用片内RC HT1621_Send_Bits(0x80,9); //打开系统振荡器 HT1621_Send_Bits(0x94,9); //1/2偏置,2个公共口 1000 0100 HT1621_Send_Bits(0xc0,9); //打开LCD偏置发生器 HT1621_PORT|=_BV(HT1621_CS); //CS端置1 HT1621_NoPrint( ); //液晶不显示 } 7. 结束 HT1621作为液晶驱动芯片,功能十分灵活,而液晶在我们的学习项目中会经常用到,所以学好它的操作是十分必要的。
HT液晶显示驱动详细原理及程序



