用單片機(jī)如何點亮12232液晶 |
作者:瑞祥微電子 點擊:2552 時間:2013/8/12 |
/顯示程序,用于顯示所輸入輸出的量 12232 #include<stdio.h> #include<regx52.h> //#include<word.h> #define ON 0xaf #define OFF 0xae #define RST 0xe2 #define ZKB 0XA8 #define QD 0XA4 #define ADC 0XA0 #define WE 0XEE #define WB 0XE0
#define uchar unsigned char #define uint unsigned int #define E1 P1_0 //5 #define E2 P1_1 //6 //P1口有特殊要求 //#define RW P3_2 #define A0 P2_2 //8 #define data P0 // m=&charge;n=&discharge;p=&laolian;
/***********延時***************************/ /*void dly(unsigned long int i) { while(i--); } /********主顯寫數(shù)據(jù)************************/ void MD(uchar i) { A0=1; E1=1; data=i; E1=0; } /**********從顯寫數(shù)據(jù)**********************/ void SD(uchar i) { A0=1; E2=1; data=i; E2=0; } /**********主顯寫命令**********************/
void MO(uchar i) { A0=0; E1=1; data=i; E1=0; } /**********從顯寫命令**********************/ void SO(uchar i) { A0=0; E2=1; data=i; E2=0; }
/**********************主顯寫字符*********************/ void Mchar(uchar ch) {MD(ch); } /**********************從顯寫字符*********************/ void Schar(uchar ch) { SD(ch); } /**********設(shè)置頁地址**********************/ void page (uchar p0,p1) { MO(0xb8|p0); SO(0xb8|p1); //位或 } /*******設(shè)置行*************/ /*void x(d0,d1) { A0=0; MO(0xb0|d0); SO(0xb0|d1); } */ /**********設(shè)置列地址**********************/ void rank(uchar r0,uchar r1) { MO(0x7f&r0); SO(0x7f&r1); //位與 ? }
/**********初始化**********************/ void initial_LCD(void) { MO(RST);SO(RST); //復(fù)位 MO(OFF);SO(OFF); //關(guān)顯示 MO(QD);SO(QD); //動態(tài)驅(qū)動 MO(ADC);SO(ADC); //時鐘線輸出 MO(ZKB|1);SO(ZKB|1); //1/32占空比 ---不可少 MO(WE); SO(WE); //結(jié)束寫模式 MO(ON);SO(ON); //開顯示 } /**********清屏**********************/ void clrscreen(void) { uchar j,pager; for(pager=0;pager<4;pager++) { page(pager,pager); rank(0,0); for(j=0;j<61;j++) { Mchar(0); Schar(0); } } }
void display(uchar pager,uchar ranker,uchar width,uchar *bmp1)//頁,列,寬度,地址 //采用橫向掃描 { bit window=0; uchar Mranker; uchar Nranker; uchar x; Nranker=ranker; /*********先寫上半部分************/ for(x=0;x<width;x++) { if(ranker>60) { window=1; Mranker=ranker%61; } else Mranker=ranker; rank(Mranker,Mranker); page(pager,pager); //x(0,0); if(window) { Schar(*(bmp1++)); } else Mchar(*(bmp1++)); ranker++; } /**********再寫下半部分*************/ page(pager+1,pager+1); window=0; for(x=0;x<width;x++) { if(Nranker>60) { window=1; Mranker=Nranker%61; } else Mranker=Nranker; rank(Mranker,Mranker); if(window) { Schar(*(bmp1++)); } else Mchar(*(bmp1++)); Nranker++; }
}
本文由深圳LCD、LCM、液晶模塊、液晶顯示屏、液晶模組、點陣模塊、筆段模塊、液晶面板廠家瑞祥微電子搜集整理,轉(zhuǎn)載請注明出處,如有侵權(quán)請聯(lián)系刪除,Q:381867214! |
|
|