用单片机如何点亮12232液晶 |
作者:瑞祥微电子 点击:2134 时间: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--); } /********主显写数据************************/ void MD(uchar i) { A0=1; E1=1; data=i; E1=0; } /**********从显写数据**********************/ 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); } /**********设置页地址**********************/ void page (uchar p0,p1) { MO(0xb8|p0); SO(0xb8|p1); //位或 } /*******设置行*************/ /*void x(d0,d1) { A0=0; MO(0xb0|d0); SO(0xb0|d1); } */ /**********设置列地址**********************/ void rank(uchar r0,uchar r1) { MO(0x7f&r0); SO(0x7f&r1); //位与 ? }
/**********初始化**********************/ void initial_LCD(void) { MO(RST);SO(RST); //复位 MO(OFF);SO(OFF); //关显示 MO(QD);SO(QD); //动态驱动 MO(ADC);SO(ADC); //时钟线输出 MO(ZKB|1);SO(ZKB|1); //1/32占空比 ---不可少 MO(WE); SO(WE); //结束写模式 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、液晶模块、液晶显示屏、液晶模组、点阵模块、笔段模块、液晶面板厂家瑞祥微电子搜集整理,转载请注明出处,如有侵权请联系删除,Q:381867214! |
|
|