




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、* *AT89C51單片機(jī)控制 HT1621B 驅(qū)動 LCD*(全顯示程序)*/#in elude <reg51.h>#in elude vintrin s.h>#defi neBIAS 0X501/2偏壓,4背極/#defi neRC256 0X30II系統(tǒng)時(shí)鐘選擇為片內(nèi)RC振蕩器#defi neRC2560X38#defi neWDTDIS1 0X0A/禁止WDT溢出標(biāo)志輸出#defi neTIMERDIS 0X08/時(shí)基輸出禁能#defi neSYSEN 0X02/打開系統(tǒng)時(shí)鐘#defi neLCDON 0X06/打開偏壓發(fā)生器#defi neSYSDIS 0X00/關(guān)
2、閉系統(tǒng)時(shí)鐘和偏壓發(fā)生器#defi ne_NOP() _nop_()sbit LED=P2A0;sbit CS=P2A7;sbit WRD=P2A6;sbit DATA=P2A5;#define uehar unsigned char#define uint unsigned intvoid SENDBYTE (uehar dat);void SENDBIT (uehar dat,ueharbitent);/*延時(shí)子函*/void delay1s()/ 延時(shí) 1Suchar i;uint j;for(i=0;i<10;i+)for(j=0;j<1300;j+);void delay1
3、s()/ 延時(shí) 1Svoid delay1s()/ 延時(shí) 1S*HT1621B初始化*void delay1s()/ 延時(shí) 1Svoid delay1s()/ 延時(shí) 1S/ 初始化 HT1621void START_HT1621()CS=1;WRD=1;DATA=1;/delay();_NOP();CS=0;CS=0;WRD=0;WRD=0;void delay1s()/ 延時(shí) 1Svoid delay1s()/ 延時(shí) 1S/*發(fā)送命令子函數(shù) A*/void delay1s()/ 延時(shí) 1Svoid delay1s()/ 延時(shí) 1Svoid SENDCOMA(uchar com)/發(fā)送命令 A
4、, ID=100+0void delay1s()/ 延時(shí) 1Svoid delay1s()/ 延時(shí) 1SSTART_HT1621();SENDBIT(0X80,4);SENDBYTE(com);void delay1s()/ 延時(shí) 1Svoid delay1s()/ 延時(shí) 1S/*發(fā)送命令子函數(shù) B*/void delay1s()/ 延時(shí) 1Svoid delay1s()/ 延時(shí) 1Svoid SENDCOMB(uchar adr)/發(fā)送命令B,發(fā)送顯示數(shù)據(jù)void delay1s()/ 延時(shí) 1SSTART_HT1621();/HT1621 初始化SENDBIT(0XA0,4);/發(fā)送寫數(shù)據(jù)
5、ID: 101+6位LCD之RAM地址第1位SENDBIT(adr,5);/ 然后發(fā)送地址后 5 位*發(fā)送命令子函數(shù)C*/ 發(fā)送命令 C, ID=100+1void SENDCOMC(uchar com)START_HT1621();SENDBIT(0X90,4);SENDBYTE(com);*按位發(fā)送數(shù)據(jù)子函數(shù)*/ 從最高位發(fā)送/ 在 WRD 的上升沿,數(shù)據(jù)寫入 HT1621Bvoid SENDBIT (uchar dat,uchar bitcnt) / 按位發(fā)送數(shù)據(jù)uchar i;for(i=0;i<bitcnt;i+)if(dat&0x80)=0X00)DATA=0;els
6、eDATA=1;/delay();_NOP();WRD=1;/delay();_NOP();WRD=0;dat=dat<<1;/*發(fā)送字節(jié)數(shù)據(jù)子函數(shù) */ 發(fā)送字節(jié)數(shù)據(jù)void SENDBYTE (uchar dat)SENDBIT(dat,8);/*LCD顯示子函數(shù) */void display(uchar dat)/LCD 顯示uchar i;SENDCOMB(0X00);/ 從 RAM 的 0X00 地址開始放入數(shù)據(jù)SENDBYTE(dat);SENDBYTE(dat);for (i=0;i<2;i+)SENDBYTE(dat);/從 SEG0 開始顯示數(shù)據(jù)/*HT16
7、21B 初始化設(shè)置 */void SETUP_HT1621()/HT1621 偏壓、背極、工作方式設(shè)置SENDCOMA(BIAS);SENDCOMA(RC256);SENDCOMA(SYSEN);delay1s();SENDCOMA(LCDON);SENDCOMA(WDTDIS1);SENDCOMA(TIMERDIS);/*主函數(shù) */main()/ 主函數(shù)LED=1;SETUP_HT1621();while(1)display(0XFF);/ 全顯示各位大牛下午好,我用STC12C520單片機(jī)控制1621驅(qū)動液晶 程序調(diào)了幾天都沒進(jìn)展, 顯示的不知道什么亂七八糟的東西, 好像命令根本寫不 進(jìn)
8、去,COM和 coml是個(gè)1v不到的電平,com3為3點(diǎn)幾V的電平,com4有時(shí)有 波形刷我自己寫的程序就是這個(gè)樣子,SEGMENT部分有波形,其余就是一個(gè)電平打電話咨詢合泰技術(shù),讓我搞他們的范例,于是我修改了下,還是老樣子 大家?guī)臀铱纯词鞘裁磫栴},謝謝了 下面的就是從合泰網(wǎng)上下的范例,我稍微修改了下,基本是原封不動的/STC12C5204AD單片機(jī)控制 HT1621B驅(qū)動 LCD#include <STC12C52XXAD.h> #include <stdio.h> #include <intrins.h>#define BIAS 0X52/1/3#def
9、ine RC256K 0X30/#define WDTDIS1 0X0A/#define TIMERDIS 0X08/#define SYSEN 0X02/#define SYSDIS 0X00/#define LCDON 0X06/#define LCDOFF 0X04/#define TONEON 0X12/#define TONEOFF 0X10/#define CS P3_2#define WR P3_4 #define DATA P3_5偏壓, 4背極系統(tǒng)時(shí)鐘選擇為片內(nèi)RC振蕩器 禁止 WD溢出標(biāo)志輸出 時(shí)基輸出禁止 打開系統(tǒng)時(shí)鐘 關(guān)閉系統(tǒng)時(shí)鐘和偏壓發(fā)生器 打開LCD偏壓發(fā)生器 關(guān)閉
10、LCD偏壓發(fā)生器 打開音頻輸出 關(guān)閉音頻輸出延時(shí)子函數(shù)/j=12延時(shí)約 4.3us#define uchar unsigned char #define uint unsigned int /* void delay(uchar i)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;vo
11、id 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_();_no
12、p_();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 a10;a0=0xFF;a1=0xFF;a2=0x
13、FF;a3=0xFF;a4=0xFF;a5=0xFF;a6=0xFF;a7=0xFF;a8=0xFF;a9=0xFF; a10=0xFF;a11=0xFF;a12=0xFF;a13=0xFF;a14=0xFF;a15=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_();_no
14、p_() void Lcd_Data(uchar Start,uchar cData)/將數(shù)據(jù)當(dāng)中的字節(jié)與LCD上的進(jìn)行同步/ Start -要開始同頁面地址,每個(gè)頁面為4個(gè)有效位,總其為32X4字節(jié)/ Length - 要同步的頁面數(shù)量uchar i;LCD_CS=0;Lcd_Delay;Lcd_Delay;Lcd_Delay; /Send ID 101BLCD_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;LC
15、D_CLK=0;Lcd_Delay;LCD_IO=1;Lcd_Delay;LCD_CLK=1;Lcd_Delay; /Send Address 6bitStart=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
16、=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)中寫入一個(gè)命令/每個(gè)命令應(yīng)以 100三個(gè)位為起始 , 命令長度為 9位,實(shí)際有效位為 8位, 因此在 最后補(bǔ)一個(gè) 0/ LcdSelect-LCD 的片選確定,取值為 0,1,2/ Command 要寫入的 8 位命令uchar i;LCD_CS=0;Lcd_Delay;Lcd_Delay;Lcd_Delay;/S
17、end ID 100BLCD_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_D
18、elay;LCD_CLK=1;Lcd_Delay;/ 最后補(bǔ)一個(gè) 0LCD_CLK=0;Lcd_Delay;LCD_IO=0;Lcd_Delay;LCD_CLK=1;Lcd_Delay;LCD_CS=1;Lcd_Delay;/=void Lcd_Refresh(void) /重新對 LCD進(jìn)行刷屏uchar i;for(i=0;i<LCD_BUFF_MAX;i+)Lcd_Data(i,lcd.buffi);/= void Lcd_Cls(void) / 清空 LCD顯示區(qū)/功能:清空LCD顯示區(qū)/返值:無/ 入口: cSelectlc LCD 的片選,取值為 0,1,2 uchar i;for(i=0;i<LCD_BUFF_MAX;i+)lcd.buffi=0;Lcd_Refresh();/=void
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租充氣皮艇合同范本
- 幾人共同購房合同范本
- 電纜外貿(mào)合同范本
- 包裝合同范本8篇
- 公司合同范本梳理審核
- 倉庫流轉(zhuǎn)合同范本
- 單位集資建房轉(zhuǎn)讓合同范本
- 勞防用品采購合同范本
- 出售立軸制砂機(jī)合同范本
- 出售玻璃蓋板合同范本
- 幼兒系列故事繪本課件達(dá)芬奇想飛-
- 連鎖藥店運(yùn)營管理
- (中職)中職生禮儀實(shí)用教材完整版PPT最全教程課件整套教程電子講義(最新)
- 出納收入支出日記賬Excel模板
- 給水排水用格柵除污機(jī)通用技術(shù)條件
- DBJ61_T 179-2021 房屋建筑與市政基礎(chǔ)設(shè)施工程專業(yè)人員配備標(biāo)準(zhǔn)
- 渝價(jià)〔2013〕430號
- 一年級下冊綜合實(shí)踐活動課件-身邊的水果和蔬菜全國通用16張
- 市政工程主要施工機(jī)械設(shè)備
- 書香里的童年
- 三周滾動進(jìn)度計(jì)劃
評論
0/150
提交評論