• PUDN用户
    了解作者
  • C/C++
    开发工具
  • 3KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 24
    下载次数
  • 2006-06-27 17:05
    上传日期
lcd12232.c LCD12232液晶显示驱动程序。
lcd12231.rar
  • www.pudn.com.txt
    218B
  • lcd12231.c
    11.9KB
内容介绍
//XDM9602@SINA.COM /*------------------------------------------------------------------------------------------------------------------------------------ 接口端:1:VDD、2:GND、3:VLCD、4:RET、5:CS1、6:CS2、7、R/W、8:A0、 9~16:D0~D7、17:背光电压 18:背光电压。(A是正电压、K ----------------------------------------------------------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------------------------------ LCD12232液晶显示驱动实验 目的:学习C语言编程 // E1:主驱动器使能信号,写操作时低电平有效,读操作时高电平有效;//负电压) // E2: 从驱动器使能信号,写操作时低电平有效,读操作时高电平有效;// // RW: 读写选择信号,低电平时写,高电平时读;// // RS: 数据/指令选择信号/ |DB0-----P1.0 | DB4-----P1.4 | RW-------P3.4 | |DB1-----P1.1 | DB5-----P1.5 | RS-------P3.5 | |DB2-----P1.2 | DB6-----P1.6 | E1-------P3.2 | |DB3-----P1.3 | DB7-----P1.7 | E2-------P3.3 | -------------------------------------------------------------------------------------------------------------*/ #include<at89x51.h rel='nofollow' onclick='return false;'> #include<stdio.h> #include<intrins.h> #define E1 P3_2 #define E2 P3_3 #define RW P3_4 #define RS P3_5 void delay(void); //延时子程序// void lcdinitial(void); //初始化子程序// void clrram(void ); //复位子程序// void writeMI(unsigned char i); //主驱动器发指令// void writeSI(unsigned char i); //从驱动器发指令// void writeMD(unsigned char i); //主驱动器发数据// void writeSD(unsigned char i); //从驱动器发数据// void SetPage(unsigned char page1,page2); //设置页地址。// void display(unsigned char word,unsigned char layer ,unsigned char width, unsigned char code *array); unsigned char code arrayadress1[]; unsigned char code arrayadress2[]; unsigned char code arrayadress3[]; unsigned char code arrayadress4[]; /*---------------------------- 主函数 -------------------------------*/ void main(void) { do { delay(); lcdinitial(); //初始化程序// clrram(); //清屏子程序// display(6,0,96,arrayadress3); display(6,1,96,arrayadress3+16); display(5,2,80,arrayadress4); display(5,3,80,arrayadress4+16); delay(); clrram(); display(6,0,96,arrayadress1); display(6,1,96,arrayadress1+16); display(7,2,114,arrayadress2); display(7,3,114,arrayadress2+16); delay(); } while(1); } /*---------------------------- 初始化函数 -----------------------------*/ void lcdinitial(void) { writeMI(0xE2);writeSI(0xE2); //复位指令// writeMI(0xAE);writeSI(0xAE); //显示开关指令// writeMI(0xA4);writeSI(0xA4); //休闲工作状态设置关// writeMI(0xA9);writeSI(0xA9); //占空比1/32// writeMI(0xEE);writeSI(0xEE); //指令改写方式// writeMI(0x00);writeMI(0xC0); //设置主控制器地址// writeSI(0x00);writeSI(0xC0); //设置从控制器地址// writeMI(0xAF);writeSI(0xAF); //休闲工作状态设置开// } /*------------------------------------- 函数 writMI(unsigned char i) 是内部函数 从i发指令 -----------------------------------------*/ void writeMI(unsigned char i) { do { E1=0; E2=0; RS=0; RW=1; E1=1;_nop_(); //判断主控制器忙?// }while(P1&0x80); // E1=0; RW=0;RS=0;E1=1;_nop_(); P1=i;_nop_(); E1=0; //低电平时发指令 } /*------------------------------------- 函数 writSI(unsigned char i) 是内部函数 从i发指令 -----------------------------------------*/ void writeSI(unsigned char i) { do{ E1=0; E2=0; RS=0; RW=1; E2=1; _nop_(); //判断从控制器忙?// }while(P1&0x80); E2=0; RW=0; RS=0; E2=1;_nop_(); P1=i; _nop_();E2=0; //低电平时发指令 } /*------------------------------------- 函数 writMD (unsigned char i) 是内部函数 从i发数据 -----------------------------------------*/ void writeMD(unsigned char i) { do{ E1=0; E2=0; RS=0; RW=1; E1=1; _nop_(); //判断主控制器忙?// }while(P1&0x80); E1=0; RW=0; RS=1; E1=1;_nop_(); P1=i; _nop_();E1=0; //低电平时发数据// } /*------------------------------------- 函数 writiSD(unsigned char i) 是内部函数 从i发数据 -----------------------------------------*/ void writeSD(unsigned char i) { do{ E1=0; E2=0; RS=0; RW=1; E1=1; _nop_(); //判断从控制器忙?// }while(P1&0x80); E2=0; RW=0; RS=1; E2=1;_nop_(); P1=i; _nop_();E2=0; //低电平时发数据// } /*------------------------------- 清屏函数、 设置页面地址、设置主窗口显示地址 -----------------------------------*/ void clrram(void) { unsigned char line; unsigned char page; for (page=0;page<4;page++) { SetPage(page,page);//设置页面地址 writeMI(0x00); //、设置主窗口显示地址// writeSI(0x00); //设置从窗口显示地址// for(line=0;line<62;line++) { writeMD(0x00); writeSD(0x00); } } } void SetPage(unsigned char page1,page2) { writeMI(0xB8|page1); //设置主窗口页面地址// writeSI(0xB8|page2); //设置从窗口页面地址// } void display(unsigned char word,unsigned char layer, unsigned char width,unsigned char code *array) { unsigned char x; unsigned char k=16 ; unsigned char address; //address表示显存的物理地址 unsigned char p=0; unsigned char page; if (layer==0) //页地址 page=0; if (layer==1) page=1; if (layer==2) page=2; if (layer==3) page=3; address=61-(word*16)/2; writeMI(0xB8|page); //主控制器发页地址// writeMI(address); //主控制器发窗口地址// for(x=0;x<=width/2;x++) { if(k--) { writeMD(array[p]); // (左-- 上)层数据输出 p++;} else {k=16; p=p+16; } } writeSI(0xB8|page); //从控制器发页地址// writeSI(0x00); //从控制器发窗口地址// for(x=0;x<=width/2;x++) { if(k--) { writeSD(array[p]); //(右--下)层数据输// p++;} else {k=16; p=p+16; } } } /*-------------------------------- yan shi cheng xu ------------------------------*/ //延时程序 void delay(void ) { unsigned int i; unsigned int j; for(i=0;i<=1000;i++) for(j=0;j<=150;j++); } unsigned char code arrayadress1[]={ /* 点阵:16x16 提取点阵方向:纵向 字节掉转:是 字节方式:C语言 */ 0x04,0x34,0xC4,0x04,0xC4,0x3C,0x20,0x10, // 欢 0x0F,0xE8,0x08,0x08,0x28,0x18,0x00,0x00, 0x10,0x08,0x06,0x01,0x82,0x8C,0x40,0x30, 0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00, 0x40,0x42,0x44,0xC8,0x00,0xFC,0x04,0x02, // 迎 0x82,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00, 0x00,0x40,0x20,0x1F,0x20,0x47,0x42,0x41, 0x40,0x7F,0x40,0x42,0x44,0x63,0x20,0x00, 0x40,0x40,0x42,0x44,0x58,0xC0,0x40,0x7F, // 光 0x40,0xC0,0x50,0x48,0x46,0x64,0x40,0x00, 0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00, 0x00,0x3F,0x40,0x40,0x40,0x40,0x70,0x00, 0x00,0xFC,0x00,0xFF,
评论
    相关推荐
    • 12232LCD.rar
      液晶的通用驱动程序,己经测试通过,可以放心使用。
    • LCD12232.zip
      lcd12232无字库的C51程序,是本人亲自验证过的。
    • LCD12232.zip
      51单片机控制12232液晶C程序的编写及应用
    • lcd12232.rar
      LCD12232a液晶显示模块使用手册和程序
    • LCD12232.rar
      点阵液晶模块使用说明,详细的介绍了它的使用方法以及实例在MCU中的应用!
    • 12232LCD.zip
      12232液晶汉字图形显示程序 可能看起来有点乱,不过效果还是不错的,显示图形总的来说比显示汉字要简单,当然显示汉字也不难。希望此程序能给你一些帮助。
    • LCD12232KEIL程序
      包括常用的LCD的C语言程序,很值得看看
    • lcd12232显示文字
      用C语言写的LCD12232显示中文的小程序,用在51系列单片机上,经验证可行。
    • 12232LCD C51代码
      基于51 单片机 Keil环境的 C代码 ,正对12232 串口屏的显示
    • LCD12232驱动
      SPI接口的12232液晶(带字库)的驱动,使用STM32F413单片机