|
0.png (9.76 KB, 下載次數(shù): 47)
下載附件
2018-1-12 16:28 上傳
HT1621是128 點內(nèi)存映象和多功能的LCD 驅(qū)動器 , HT1621 的軟件配置特性使它適用于多種 LCD 應(yīng)用場合,包括 LCD 模塊和顯示子系統(tǒng)。用于連接主控制器和HT1621 的管腳只有 4 或 5 條, HT1621 還有一個節(jié)電命令用于降低系統(tǒng)功耗。在虎風(fēng)所做的這個系統(tǒng)中 ht1621 用于驅(qū)動一個靜態(tài)的 LCD 液晶顯示器。液晶顯示的方式分為靜態(tài)顯示和動態(tài)顯示 。 靜態(tài)與動態(tài)的區(qū)別在于靜態(tài)顯示是持續(xù)供電的 , 而動態(tài)顯示是利用人的視覺停留效果 , 快速掃描數(shù)碼管各個段 , 讓人在視覺上感覺到數(shù)碼管是同時顯示的。
0.jpg (68.58 KB, 下載次數(shù): 43)
下載附件
2018-1-12 16:29 上傳
0.jpg (60.15 KB, 下載次數(shù): 53)
下載附件
2018-1-12 16:30 上傳
各位大牛下午好,我用STC12C5204單片機控制1621驅(qū)動液晶
程序調(diào)了幾天都沒進展,顯示的不知道什么亂七八糟的東西,好像命令根本寫不進去,COM0和com1是個1v不到的電平,com3為3點幾V的電平,com4有時有波形刷我自己寫的程序就是這個樣子,SEGMENT一部分有波形,其余就是一個電平
打電話咨詢合泰技術(shù),讓我搞他們的范例,于是我修改了下,還是老樣子大家?guī)臀铱纯词鞘裁磫栴},謝謝了下面的就是從合泰網(wǎng)上下的范例,我稍微修改了下,基本是原封不動的
單片機源程序如下:
- 各位大牛下午好,我用STC12C5204單片機控制1621驅(qū)動液晶
- 程序調(diào)了幾天都沒進展,顯示的不知道什么亂七八糟的東西,好像命令根本寫不進去,COM0和com1是個1v不到的電平,com3為3點幾V的電平,com4有時有波形
- 刷我自己寫的程序就是這個樣子,SEGMENT一部分有波形,其余就是一個電平
- 打電話咨詢合泰技術(shù),讓我搞他們的范例,于是我修改了下,還是老樣子
- 大家?guī)臀铱纯词鞘裁磫栴},謝謝了
- 下面的就是從合泰網(wǎng)上下的范例,我稍微修改了下,基本是原封不動的
- //STC12C5204AD單片機控制HT1621B驅(qū)動LCD
- #include <STC12C52XXAD.h>
- #include <stdio.h>
- #include <intrins.h>
- #define BIAS 0X52 //1/3偏壓,4背極
- #define RC256K 0X30 //系統(tǒng)時鐘選擇為片內(nèi)RC振蕩器
- #define WDTDIS1 0X0A //禁止WDT溢出標(biāo)志輸出
- #define TIMERDIS 0X08 //時基輸出禁止
- #define SYSEN 0X02 //打開系統(tǒng)時鐘
- #define SYSDIS 0X00 //關(guān)閉系統(tǒng)時鐘和偏壓發(fā)生器
- #define LCDON 0X06 //打開LCD偏壓發(fā)生器
- #define LCDOFF 0X04 //關(guān)閉LCD偏壓發(fā)生器
- #define TONEON 0X12 //打開音頻輸出
- #define TONEOFF 0X10 //關(guān)閉音頻輸出
- #define CS P3_2
- #define WR P3_4
- #define DATA P3_5
- #define uchar unsigned char
- #define uint unsigned int
- /***************************延時子函數(shù)******************************/
- void delay(uchar i) //j=12延時約4.3us
- {
- while(i--)
- {
- uchar j=0;
- while(j<8)
- j++;
- }
- }
- void SendBit_1621(uchar dat ,uchar cnt)
- {
- uchar i;
- for(i =0; i <cnt; i ++)
- {
- if((dat&0x80)==0)
- DATA=0;
- else DATA=1;
- WR=0;
- delay(2);
- WR=1;
- dat=dat<<1;
- }
- }
- void SendDataBit_1621(uchar dat,uchar cnt)
- {
- uchar i;
- for(i =0; i <cnt; i ++)
- {
- if((dat&0x01)==0) DATA=0;
- else DATA=1;
- WR=0;
- delay(2);
- WR=1;
- dat=dat>>1;
- }
- }
- void SendCmd(uchar command)
- {
- CS=0;
- _nop_();
- _nop_();
- SendBit_1621(0x80,4);
- SendBit_1621(command,8);
- CS=1;
- }
- void Write_1621(uchar addr,uchar dat)
- {
- CS=0;
- _nop_();
- _nop_();
- SendBit_1621(0xa0,3);
- SendBit_1621(addr,6);
- SendDataBit_1621(dat,4);
- CS=1;
- }
- void WriteAll_1621(uchar addr,uchar *p,uchar cnt)
- {
- uchar i;
- CS=0;
- _nop_();
- _nop_();
- SendBit_1621(0xa0,3);
- SendBit_1621(addr,6);
- for(i =0; i <cnt; i ++,p++)
- {
- SendDataBit_1621(*p,8);
- }
- CS=1;
- }
- /*******************************主函數(shù)******************************/
- main()
- {
- uchar a[10];
- a[0]=0xFF;a[1]=0xFF;a[2]=0xFF;a[3]=0xFF;a[4]=0xFF;
- a[5]=0xFF;a[6]=0xFF;a[7]=0xFF;a[8]=0xFF;a[9]=0xFF;
- a[10]=0xFF;a[11]=0xFF;a[12]=0xFF;a[13]=0xFF;a[14]=0xFF;
- a[15]=0xFF;
- SendCmd(BIAS);
- SendCmd(SYSEN);
- SendCmd(LCDON);
- // SendCmd(RC256K);
- WriteAll_1621(0,a,16);
- // SendCmd(LCDOFF);
- }
- LCD驅(qū)動程序 適用于HT1621
- //=============================================================================
- #define Lcd_Delay _nop_();_nop_();_nop_();_nop_();_nop_();_nop_()
- void Lcd_Data(uchar Start,uchar cData)
- //將數(shù)據(jù)當(dāng)中的字節(jié)與LCD上的進行同步
- // Start --要開始同頁面地址,每個頁面為4個有效位,總其為32X4字節(jié)
- // Length --要同步的頁面數(shù)量
- {
- uchar i;
- LCD_CS=0;
- Lcd_Delay;
- Lcd_Delay;
- Lcd_Delay;
- //Send ID 101B
- LCD_CLK=0;
- Lcd_Delay;
- LCD_IO=1;
- Lcd_Delay;
- LCD_CLK=1;
- Lcd_Delay;
- LCD_CLK=0;
- Lcd_Delay;
- LCD_IO=0;
- Lcd_Delay;
- LCD_CLK=1;
- Lcd_Delay;
- LCD_CLK=0;
- Lcd_Delay;
- LCD_IO=1;
- Lcd_Delay;
- LCD_CLK=1;
- Lcd_Delay;
- //Send Address 6bit
- Start=Start*2;
- for(i=0;i<6;i++)
- {
- if(Start&0x20) LCD_IO=1;
- else LCD_IO=0;
- Lcd_Delay;
- LCD_CLK=0;
- Lcd_Delay;
- Start=Start<<1;
- LCD_CLK=1;
- Lcd_Delay;
- }
- //Send data 8bit
- for(i=0;i<8;i++)
- {
- if(cData&0x01) LCD_IO=1;
- else LCD_IO=0;
- Lcd_Delay;
- LCD_CLK=0;
- Lcd_Delay;
- cData=cData>>1;
- LCD_CLK=1;
- Lcd_Delay;
- }
- LCD_CS=1;
- Lcd_Delay;
- }
- //=============================================================================
- void Lcd_Command(uchar Command)
- //向指定的LCD當(dāng)中寫入一個命令
- //每個命令應(yīng)以100三個位為起始,命令長度為9位,實際有效位為8位,因此在最后補一個0
- // LcdSelect--LCD的片選確定,取值為0,1,2
- // Command----要寫入的8位命令
- {
- uchar i;
- LCD_CS=0;
- Lcd_Delay;
- Lcd_Delay;
- Lcd_Delay;
- //Send ID 100B
- LCD_CLK=0;
- Lcd_Delay;
- LCD_IO=1;
- Lcd_Delay;
- LCD_CLK=1;
- Lcd_Delay;
- LCD_CLK=0;
- Lcd_Delay;
- LCD_IO=0;
- Lcd_Delay;
- LCD_CLK=1;
- Lcd_Delay;
- LCD_CLK=0;
- Lcd_Delay;
- LCD_IO=0;
- Lcd_Delay;
- LCD_CLK=1;
- Lcd_Delay;
- for(i=0;i<8;i++)
- {
- LCD_CLK=0;
- Lcd_Delay;
- if(Command&0x80) LCD_IO=1;
- else LCD_IO=0;
- Command=Command<<1;
- Lcd_Delay;
- LCD_CLK=1;
- Lcd_Delay;
- }
- ///最后補一個0
- LCD_CLK=0;
- Lcd_Delay;
- LCD_IO=0;
- Lcd_Delay;
- LCD_CLK=1;
- Lcd_Delay;
- LCD_CS=1;
- Lcd_Delay;
- }
- //=============================================================================
- void Lcd_Refresh(void) //重新對LCD進行刷屏
- {
- uchar i;
- for(i=0;i<LCD_BUFF_MAX;i++)
- Lcd_Data(i,lcd.buff[i]);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
HT1621(不帶字庫).zip
(1.43 MB, 下載次數(shù): 112)
2018-1-12 14:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|