|
自己編寫的HT1621B測(cè)試程序,參考了其他人的部分代碼,包括基本的初始化設(shè)置,寫數(shù)據(jù),寫命令,清屏,一筆一筆點(diǎn)亮LCD到全顯等,程序后面有注釋,位聲明自己定義個(gè)人根據(jù)自己的硬件電路自己連接
單片機(jī)源程序如下:
- #define SYSEN 0x02//打開(kāi)系統(tǒng)振蕩器
- #define LCDON 0x06//打開(kāi)LCD偏壓發(fā)生器
- #define RC256 0x30//片內(nèi)RC振蕩器
- #define BIAS 0x52//LCD 1/3偏壓 4個(gè)公共端口
- #define SYSDIS 0x00
- #define WDTDIS 0x0a
- sbit cs=P1^7;
- sbit rd=P3^2;
- sbit wr=P3^3;
- sbit dat=P3^4;
- uchar table[]={
- 0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,0x0f,};
- uchar table1[]={
- 0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xf0,};
- uchar table2[]={
- 0xe6,0xf8,0xb0,0xb0,0xbe,};
- uchar table3[]={
- 0x01,0x03,0x07,0x0f,};
- uchar table4[]={
- 0xde,0x22,0xfe,0x22,
- 0x0e,0x22,0xfa,0x22,
- 0xda,0x22,0xc6,0x22,
- 0x5e,0x22,0x7c,0x22,
- 0x06,0x22,0xbe,0x22 ,};
- uchar table5[]={
- 0xbe,0x06,0x7c,0x5e,
- 0xc6,0xda,0xfa,0x0e,
- 0xfe,0xde,};
- void wr_data(uchar da,uchar cnt)//寫數(shù)據(jù)函數(shù)
- {
- uchar i;
- for(i=0;i<cnt;i++)
- {
- wr=0;
- delayus(10);
- dat=(bit)(da&0x80);/*if(da>=0x80)
- dat=1;
- else
- dat=0;*/
- delayus(10);
- wr=1;
- delayus(10);
- da<<=1;
- }
- }
- void wr_clearlcd()//清屏
- {
- uchar i;
- cs=0;
- delayus(10);
- wr_data(0xa0,3);
- wr_data(0x00<<2,6);
- for(i=0;i<10;i++)
- {
- wr_data(0x00,8);
- }
- cs=1;
- delayus(10);
- }
- void wr_com(uchar com)//寫命令函數(shù)
- {
- cs=0;
- delayus(10);
- wr_data(0x80,4);
- wr_data(com,8);
- cs=1;
- delayus(10);
- }
- void wr_all_lcd(uchar add,uchar *p,uchar cnt)//寫連續(xù)地址
- {
- uchar i;
- cs=0;
- delayus(10);
- wr_data(0xa0,3);
- wr_data(add<<2,6);
- for(i=0;i<cnt;i++)
- {
- wr_data(*p,8);
- p++;
- }
- cs=1;
- delayus(10);
- }
- void lcd_init()
- {
- cs=1;
- wr=1;
- dat=1;
- delayms(20);
- wr_com(BIAS);
- wr_com(RC256);
- wr_com(SYSDIS);
- wr_com(WDTDIS);
- wr_com(SYSEN);
- wr_com(LCDON);
- wr_clearlcd();
- }
- void wr_add_data(uchar add,uchar dat)
- {
- cs=0;
- delayus(10);
- wr_data(0xa0,3);
- wr_data(add<<2,6);
- wr_data(dat<<4,4);//數(shù)據(jù)位為4位
- cs=1;
- delayus(10);
- }
- void daoshu(uchar add,uchar *p,uchar cnt)
- {
- uchar i,a,b;
- cs=0;
- delayus(10);
- wr_data(0xa0,3);
- for(i=0;i<cnt;i++)
- {
- wr_data(add<<2,6);
- for(a=0;a<6;a++)
- wr_data(*p,8);
- p++;
- for(b=0;b<3;b++)
- wr_data(*p,8);
- p++;
- delayms(1000);
- wr_clearlcd();
- cs=0;
- delayus(10);
- wr_data(0xa0,3);
- }
- cs=1;
- delayus(10);
- wr_clearlcd();
- cs=0;
- delayus(10);
- wr_data(0xa0,3);
- wr_data(0x08<<2,6);
- for(i=0;i<2;i++)
- wr_data(0xbe,8);
- cs=1;
- delayus(10);
- wr_add_data(0x10,0x02);
- }
- void ceshi(uchar add)//一段一段點(diǎn)亮全屏測(cè)試
- {
- uchar i,num,*p=table3;
- for(num=0;num<17;num++)
- {
- for(i=0;i<4;i++)
- {
- cs=0;
- delayus(10);
- wr_data(0xa0,3);
- wr_data(add<<2,6);
- wr_data(*p<<4,4);
- p++;
- delayms(1000);
- cs=1;
- delayus(10);
- }
- p=table3;
- add++;
- if(ZO==0)
- ONOFF=1;
- if(add==17)
- {
- wr_all_lcd(0x00,table1,10);
- delayms(2000);
- }
- }
- }
復(fù)制代碼
|
-
-
ht1621B.docx
2017-9-13 11:40 上傳
點(diǎn)擊文件名下載附件
12.37 KB, 下載次數(shù): 349
|