/*********************************************************/ //打印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 data[i]= LCD_CODE[HT1621_NoPrint_Loc]; 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 /*********************************************************/ //送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(0x01,3); //送3位命令模式码100 0x80=0b10000000 0100 HT1621_Send_Bits(0xc0,9); //打开LCD偏置发生器 HT1621_PORT|=_BV(HT1621_CS); //CS端置1 HT1621_NoPrint( ); //液晶不显示 HT1621_Send_Bits(0x18,9); //系统时钟选用片内RC HT1621_Send_Bits(0x80,9); //打开系统振荡器 HT1621_Send_Bits(0x94,9); //1/2偏置,2个公共口 1000 } 7. 结束 HT1621作为液晶驱动芯片,功能十分灵活,而液晶在我们的学习项目中会经常用到,所以学好它的操作是十分必要的。 如果你看了这篇文章还不明白,就加虎风的QQ吧,279204362,我喜欢交朋友,让我们共同进步,嘎嘎!