请登录 免费注册
分享
  • 微信
  • 新浪微博
  • 人人网
  • QQ空间
  • 开心网
  • 豆瓣
会员服务
进取版 标准版 尊贵版
| 设为首页 | 收藏 | 导航 | 帮助
产品 资讯
请输入产品名称
JUKI贴片机 单极霍尔开关 pcb设备 全方位海绵 无感电容 电源供应 MDD72-16N1B-IXYS二极管
关注微信随身推
首页 电子商城 专题报道 资料中心 成功案例
词多 效果好 就选易搜宝!
杭州清达光电技术有限公司
新增产品 | 公司简介
注册时间:2009-06-24
联系人:
电话:
Email:
首页 公司简介 产品目录 公司新闻 技术文章 资料下载 成功案例 人才招聘 荣誉证书 联系我们

产品目录

特色产品
抄表160160液晶系列
适合ARDUION系统显示屏
特小字符/汉字
特大字符/汉字
电力行业专用
带温度补偿
带汉字库液晶屏
320240系列液晶
PDA液晶
超薄型
图形点阵液晶模块
单色字符液晶模组
OLED模块
OLED显示屏
TFT模块
彩屏解决方案
液晶配套产品
代理产品
日韩台代理产品
香港精电液晶
mono图形液晶显示模块
单色字符LCM模块
OLED
定制液晶
彩色液晶
香港精电液晶
日本单色产品
配件
首页 >>> 技术文章 >

技术文章

1602字符液晶6800时序8位并口样例程序

1602字符液晶6800时序8位并口样例程序由清达光电技术部提供,清达光电专业设计生产液晶模块,OLED模块,TFT模块等,产品齐全,供货快捷。

#include<reg51.h>

#include<intrins.h>

#include<stdio.h>

#define uchar unsigned char

#define uint unsigned int

sbit RS = P3^3;

sbit RW = P3^1;

sbit E = P3^0;

unsigned char X,Y;

/*-----------建立自定义演示用字符库-----------*/

code  unsigned int CGTAB[9][8]={

/*

横向取模 ,先上后下

*/

0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,   /* "↓"代码=0 */

0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,   /* "月"代码=1 */

0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00,   /* "日"代码=2 */

0x11,0x0a,0x04,0x1f,0x04,0x1f,0x04,0x00,   /* "¥"代码=3 */

0x0e,0x00,0x1f,0x0a,0x0a,0x0a,0x13,0x00,   /* "元"代码=4 */

0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00,   /* "℃"代码=5 */

0x04,0x0a,0x15,0x04,0x04,0x04,0x04,0x00,   /* "↑"代码=6 */

0x17,0x15,0x15,0x15,0x15,0x15,0x17,0x00,   /* "10"代码=7 */

0x04,0x04,0x04,0x04,0x15,0x0a,0x04,0x00,   /* "↓"代码=8 */

};

/*-----------自定义字符显示用字库-----------*/

void delay(unsigned int t)

{  unsigned int i,j;

  for(i=0;i<t;i++)

     for(j=0;j<10;j++)

        ;

}

void busy(void)

{  P1=0xff;

  RS=0;

  RW=1;

  E=1;

  while((P1&0x80)==0x80);

  E=0;

}

void writecom(unsigned char com)

{  RS=0;

  RW=0;

  P1=com;

  E=1;

  _nop_();

  E=0;

}

void lcdwc(unsigned char com)

{

  busy();

  writecom(com);

}

void lcdwd(unsigned char dat)

{

  busy();

  RS=1;

  RW=0;

  P1=dat;

  E=1;

  _nop_();

  E=0;

}

/*****************************************************

定义地址ddram显示范围

****************************************************/

void lcdpos(void)

{

  X&=0x0f;     ///16列

  Y&=0x03;  ///2行

  if(Y==0x00)

     lcdwc(X|0x80);//**行ddram

  else if(Y==0x01)

     lcdwc((X+0x40)|0x80); //**行ddram

}

/*****************************************************

 初始化函数

****************************************************/

void lcdreset()

{  delay(150); writecom(0x38);

  delay(50); writecom(0x38);

  delay(50); writecom(0x38);

  lcdwc(0x38); //8位数据 显示2行 5*7字符

  lcdwc(0x08); //关显示 光标关 闪烁关

  lcdwc(0x01); //

  lcdwc(0x06); //光标右移 画面不动

  lcdwc(0x0c); //开显示 光标关 闪烁关

}

/***************************************

全部写入

***************************************/

void lcdfill(unsigned char n)

{

  for(Y=0;Y<2;Y++)

     for(X=0;X<16;X++)

     {  lcdpos();       ///定义起始地址

        lcdwd(n);  }

}

/***************************************

全部写入隔点

***************************************/

void lcdgraphic(unsigned char m)

{

  for(Y=0;Y<2;Y++)

     for(X=0;X<16;X++)

     {  lcdpos();

        lcdwd(m);

        lcdwd(~m);  }

}

/*****************************************

字符串写入

*******************************************/

void lcdwda(unsigned char x,unsigned char y,unsigned char *s)

{

  Y=y;

  for(X=x;X<16;X++)

  {

     lcdpos();

     lcdwd(*s);

     s++;

     delay(400);

  }

}

/**************************/

/*     建立自���义函数     */

/**************************/

CGRAM()

 {

 uchar dat;

  unsigned char i,j;

  lcdwc(0x40);    /* 设置CGRAM地址 */

        /*  调写指令函数  */

  for(i=0;i<9;i++)

    {

    for(j=0;j<8;j++)

       {

        dat=CGTAB[i][j];  /* 取字模 */

        lcdwd(dat);   /*  调写数据函数  */

       }

    }

 }

/*****************************************

主函数

*******************************************/

main()

{

unsigned char i,j;

  E=0;

  lcdreset();

  while(1)

  {

   // lcdreset();

     lcdfill(0xff);

     delay(2000);

 lcdfill(0x55);

     delay(2000);

 lcdfill(0xaa);

     delay(2000);

 lcdgraphic(0xff);

 delay(2000);

  lcdgraphic(0x00);

 delay(2000);

  lcdgraphic(0x55);

 delay(2000);

  lcdgraphic(0xaa);

 delay(2000);

     for(i=0x30;i<=0x3a;i++)

     {  lcdfill(i);

        delay(3500);//显示0-9数字

     }

     lcdfill(' ');

     delay(2000);

 lcdwda(0,0,"ABCDEFGHIJKLMNOPQRSTUVWXYZ");

     lcdwda(0,1,"ZYXWVUTSRQPONMLKJIHGFEDCBA");

     delay(2000);

     lcdfill(' ');

  /*------------CGRAM显示段--------------*/

    CGRAM(); /* 调自定义字符库函数 */

    lcdwc(0x80);  /* 设置DDRAM地址**行显示 */

   // lcdwc(0xc0);  /* 设置DDRAM地址**行显示 */

         /* 调写指令函数  */

  for(i=0;i<9;i++)

    {

       /* 取字符代码 */

      lcdwd(i); /* 调写数据函数  */

    }

    delay(4000);  lcdfill(' ');

}

}

上一篇:1602宽温字符OLED显示模块HCS1626测试程序
下一篇:清达光电1602SPI串口液晶屏样例程序
              
若网站内容侵犯到您的权益,请通过网站上的联系方式及时联系我们修改或删除