中国IEEE
关于我们 | 会员登陆 | 收藏本站 | 留 言 薄
 

 | 网站首页 | 电子知识 | 单片机知识 | 电路设计 | 微电子技术 | SCADA系统 | 资源下载 | 给我留言 | 视频教程 | ieee | 
热门搜索关键字: 单片机教程 | 三极管微电子 |  C语言汇编语言SCADA元器件IEEE |
cnieee.com baidu
栏目导航  
栏目更新推荐  
·红外遥控及C语言51红外遥控解码程序
·8051单片机C语言数据采集程序
·LCD驱动芯片1335控制器C51源程序
·Keil C51和 标准C语言的异同…
·C51延时程序
·数字滤波常用的软件方法
·渐变LED流水灯程序(C源程序)
·99计数器C语言版本
点击TOP(10)  
  • 此栏目下没有热点文章
  • 图片文章  

    C语言嵌入式系统编程…

    C语言嵌入式系统编程…

    C语言嵌入式系统编程…
     
    您现在的位置: 中国IEEE中国电气电子工程师网 >> 单片机知识 >> 编程语言 >> 单片机C语言 >> 正文

    LCD驱动芯片1335控制器C51源程序
    文章来源:本站整理 点击数: 更新时间:2008-6-6 【字体:
    (欢迎光临中国IEEE,希望本文能对您有所帮助http://www.cnieee.com)


    相关文章:

    Keil C51和 标准C语言的异同…
    KEIL C51支持的完整芯片…
    第二章   Keil C软件使用…
    Keil C51使用详解3…

  • 上一个文章:

  • 下一个文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    关于〖LCD驱动芯片1335控制器C51源程序〗的最新评论:

    下面是C语言写的一个LCD驱动芯片1335控制器源程序

    /*include files */
    #include "w78e58.h"
    //#include "zimo.h" //这是自己做的一个汉字库,
    可以在本站下载一个字模程序,添加汉字。
    世纪开发网:21hf.com*/
    #include "stdio.h"
    #include "stdlib.h"
    #include "math.h"
    #include "absacc.h"
    #include "intrins.h"
    #include "string.h"

    /*define function*/
    #define HIBYTE(V1) ((BYTE)((V1)>>8))
    #define LOBYTE(V1) ((BYTE)((V1)&0Xff))
    #define MAKEWORD(V1,V2) ((((WORD)(V1))<<8)+(WORD)(V2))

    /*define SED1335 port address*/
    #define SEDWRCOM XBYTE[0X1100] //写指令代码
    #define SEDRDCSR XBYTE[0X1100] //读光标指针
    #define SEDWRDAT XBYTE[0X1000] // 写指令参数和显示数据

    /*define LCD code */
    #define SYSSET 0x40
    #define SCROLL 0x44
    #define SLEEP 0x53
    #define DISPON 0x59
    #define DISPOFF 0x58
    #define OVLAY 0x5b
    #define HDOTSCR 0x5a
    #define CSRFORM 0x5d
    #define CGRAMADR 0x5c
    #define CSRRGT 0x4c
    #define CSRLFT 0x4d
    #define CSRUP 0x4e
    #define CSRDOWN 0x4f
    #define CSRW 0x46
    #define CSRR 0x47
    #define MWRITE 0x42
    #define MREAD 0x43
    #define AP 30

    /*define screen flag*/
    BOOL FG_FIRST=0;
    BOOL FG_MAIN=0;
    BOOL FG_PWD=0;
    BOOL FG_PRG=0;
    BOOL FG_PRG1=0;
    BOOL FG_PRG2=0;
    BOOL FG_PRG3=0;
    BOOL FG_CYCLE=0;
    BOOL FG_LIMIT=0;
    BOOL FG_TIME=0;
    BOOL FG_INPUT=0;
    BOOL FG_OUTPUT=0;
    BOOL FG_PID=0;
    BOOL FG_SELFCTL=0;
    BOOL FG_VARY=0;

    /*LCD initial parameters*/
    BYTE code SYSTAB[8]={0x30,0x87,0x0f,0x1d,0x4c,0xa0,0x1e,0x00};
    BYTE code SCRTAB[10]={0x00,0x00,0xa0,0x00,0x40,0xa0,0x00,0x80,0x00,0x00};

    /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
    /*START OF THE PROGRAME*/
    /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/


    /*SBUROUTINES OF LCD DRIVE*/
    void WLCDCOM(BYTE com )
    //写LCD控制命令
    {
    SEDWRCOM=com;
    _nop_();
    }

    void WLCDDATA(BYTE ref )
    //写LCD控制参数和显示字符数据
    {
    SEDWRDAT=ref;
    _nop_();
    }

    void CLRVRAM(void)
    //显示存储器清零
    {
    WORD i,j;
    WLCDCOM(CSRRGT);
    WLCDCOM(CSRW);
    WLCDDATA(0x00);
    WLCDDATA(0x00);
    WLCDCOM(MWRITE);
    for(i=0;i<=0xff;i++)
    {
    for(j=0;j<=0xff;j++)
    {
    WLCDDATA(0x00);
    }
    }
    }

    void CLRSCREEN(void)
    //清除显示屏幕
    {
    WORD i,j;
    WLCDCOM(CSRRGT);
    WLCDCOM(CSRW);
    WLCDDATA(0X00);
    WLCDDATA(0X00);
    WLCDCOM(MWRITE);
    for(i=0;i<0xa0;i++)
    {
    for(j=0;j {
    WLCDDATA(0x00);
    }
    }
    }

    void WNUMBER(BYTE x,BYTE y,BYTE (*p)[16],BYTE num )
    //功能:显示0~9等10个数字,num为要显示的数字的值(16×8)
    //x坐标寄存器(字节),y坐标寄存器(点行)
    {
    WORD temp;
    BYTE hi,lo;
    BYTE a,b,c;
    temp=y*AP;
    hi=HIBYTE(temp);
    lo=LOBYTE(temp);
    lo=x+lo;
    if(CY==1) {hi+=0x01;CY=0;}

    WLCDCOM(CSRDOWN);
    WLCDCOM(CSRW);
    WLCDDATA(lo);
    WLCDDATA(hi);
    WLCDCOM(MWRITE);
    for(c=0;c<16;c++)
    {
    WLCDDATA(*(*(p+num)+c));
    }
    lo=lo+0x01;
    if(CY==1) {hi+=0x01;CY=0;}
    }

    void WBLOCK(BYTE x,BYTE y,BYTE (*p)[16],BYTE num )
    //功能:显示16×8点字符,num为要显示的字符块长度
    //x坐标为低8位寄存器(字节),y坐标寄存器(点行)
    {
    WORD temp;
    BYTE hi,lo;
    BYTE a,b,c;
    temp=y*AP;
    hi=HIBYTE(temp);
    lo=LOBYTE(temp);
    lo=x+lo;
    if(CY==1) {hi+=0x01;CY=0;}

    WLCDCOM(CSRDOWN);
    WLCDCOM(CSRW);
    WLCDDATA(lo);
    WLCDDATA(hi);
    WLCDCOM(MWRITE);
    for(c=0;c<16;c++)
    {
    WLCDDATA(*(*(p+num-1)+c));
    }
    lo=lo+0x01;
    if(CY==1) {hi+=0x01;CY=0;}
    }

    void FILLBLOCK(BYTE x,BYTE y,BYTE len )
    //功能:显示16×16字符,len为要显示的字符块的长度
    //x坐标为低8位寄存器(字节),y坐标寄存器(点行)
    {
    WORD temp;
    BYTE hi,lo;
    BYTE a,b;
    temp=y*AP;
    hi=HIBYTE(temp);
    lo=LOBYTE(temp);
    lo=x+lo;
    if(CY==1) {hi+=0x01;CY=0;}
    for(b=0;b {
    WLCDCOM(CSRDOWN);
    WLCDCOM(CSRW);
    WLCDDATA(lo);
    WLCDDATA(hi);
    WLCDCOM(MWRITE);
    for(a=0;a<16;a++)
    {
    WLCDDATA(0xff);
    }
    lo=lo+0x01;
    if(CY==1) {hi+=0x01;CY=0;}
    }
    }

    void CLRBLOCK(BYTE x,BYTE y,BYTE len )
    //清除16×8字符快,len为要清除的字符块的长度
    //x坐标寄存器(字节

    [1] [2] 下一页

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明网站地图 | 名站导航 | 管理登录 | 
    本站资源部分来自互联网,如侵犯您的权利,我们将予以删除  鲁ICP备08006092号
    本站欢迎同类网站做友情链接,QQ留言
    中国IEEE 中国电气电子工程师网 版权所有