简单的12864显示程序

简单的12864显示程序12864

大家好,又见面了,我是你们的朋友全栈君。

  • 2864是128*64点阵液晶模块的点阵数简称。我使用的内部自带汉字库的一款液晶作为风速显示
  • 好了废话不多说,接下来就贴上我的程序
  • #//头信息
    #include <reg51.h>
    #include <math.h>
    #include <INTRINS.H>
    
    //定义数据类型
    #define  uchar unsigned char
    #define  uint unsigned int
    #define  xchar unsigned char code  
    
    #define      DataPort P1
    #define     DELAYMS 80
    
    //端口定义
    sbit RS_Port    =    P2^7;
    sbit RW_Port    =    P2^6;
    sbit E_Port      = P2^5;
    sbit PSB_Port    =    P2^4;
    
    
    //输入显示的内容   # 每行显示七个字 要改内内容直接在下边该就行了 
    // 但是需要留意的是,每行必须七个字 否则乱码  后期我会修改
    xchar CorpInf[]=
    {
         "风速风速风速风"
        "风速风速风速风"
        "风速风速风速风"
        "风速风速风速风"
    };
    
    //短延时函数
    #pragma disable         
    void delay(uchar uc_dly)
    {
        while (uc_dly--);
    }
    
    //长延时函数,以秒每单位
    #pragma disable      
    void delays() 
    {
        uchar uc_dly,uc_dly1,uc_dly2;
    
        uc_dly =DELAYMS;
        
        while (uc_dly --)
        {
            for (uc_dly1=0;uc_dly1<50;uc_dly1++)
                for (uc_dly2=0;uc_dly2<50;uc_dly2++);
        };
    }
    
    
    //写命令
    #pragma disable  
    void wr_cmd(uchar cmd)  
    {
        E_Port = 0;
        _nop_();
        _nop_();
    
        RS_Port=0;
        _nop_();
        _nop_();
    
        RW_Port=0;
        _nop_();
        _nop_();
    
        E_Port=1;
        _nop_();
        _nop_();
    
        DataPort=cmd;
        _nop_();
        _nop_();
    
        E_Port=0;
        _nop_();
        _nop_();
    
        delay(5);
    }
    
    //写数据
    #pragma disable
    void wr_dat(uchar dat) 
    {    
        E_Port = 0;
        _nop_();
        _nop_();
     RS_Port=1;
        _nop_();
        _nop_();
        
        RW_Port=0;
        _nop_();
        _nop_();
    
        E_Port=1;
        _nop_();
        _nop_();
            
        DataPort=dat;
        _nop_();
        _nop_();
    
        E_Port=0;
        _nop_();
        _nop_();
    
        delay(5);
    }
    
    //显示初始化
    #pragma disable
    void Init(void)   
    {
        wr_cmd(0x30);     //DL=1:8-BIT interface
        wr_cmd(0x30);     //RE=0:basic instruction
        wr_cmd(0x06);     //Entire display shift right by 1
        wr_cmd(0x08);     //Display OFF,Cursor OFF,Cursor position blink OFF
    
        wr_cmd(0x34);     //DL=1:8-BIT interface
        wr_cmd(0x34);     //RE=0:Extend instruction
        wr_cmd(0x03);
    }
    
    
    //写入数据的行数以及数据的分布
    #pragma disable
    void DisGBStr(xchar *CorpInf)
    {
        uchar uc_GBCnt;
    
        wr_cmd(0x30);     //DL=1:8-BIT interface
        wr_cmd(0x30);     //RE=0:basic instruction
        wr_cmd(0x0C);     //Display OFF,Cursor OFF,Cursor position blink OFF
    
        wr_cmd(0x80);
        for (uc_GBCnt=0;uc_GBCnt<16;uc_GBCnt++)
        {
            wr_dat(CorpInf[2 * uc_GBCnt]);
            wr_dat(CorpInf[2 * uc_GBCnt + 1]);
        };
    
        wr_cmd(0x90);
        for (uc_GBCnt=0;uc_GBCnt<16;uc_GBCnt++)
        {
            wr_dat(CorpInf[2 * uc_GBCnt + 32]);
            wr_dat(CorpInf[2 * uc_GBCnt + 33]);
        };
    
        delays();
    }
    
    #pragma disable
    void CRAM_OFF()
    {
        wr_cmd(0x30);     //DL=1:8-BIT interface
        wr_cmd(0x30);     //RE=0:basic instruction
        wr_cmd(0x08);    //Display ON,Cursor OFF,Cursor position blink OFF
        wr_cmd(0x01);     //CLEAR
        delay(250);
    }
    
    void main()
    {
        EA=1; //Interurupt Enabled
    
        IT0 = 1;//INT0 Low Level Trigger
    
        EX0 = 1;//INT0 Enabled
    
        PSB_Port =1;
        _nop_();
        delay(250);
    
        //ST7920 Init
        Init();
    
        while (1)
        {
            CRAM_OFF();
            DisGBStr(CorpInf);
        }
    }

     

  • 其中需要注意的是在数组中显示的是可以变化的 如果不想写这么多字的化 也可以修改后边的for循环来是显示的字变少,但是如果不这样操作的话,就会使显示乱码
    xchar CorpInf[]=
    {
         "风速风速风速风"
        "风速风速风速风"
        "风速风速风速风"
        "风速风速风速风"
    };

     

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155417.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SSTI完全学习[通俗易懂]

    一、什么是SSTISSTI就是服务器端模板注入(Server-SideTemplateInjection),也给出了一个注入的概念。常见的注入有:SQL注入,XSS注入,XPATH注入,XML注入,代码注入,命令注入等等。sql注入已经出世很多年了,对于sql注入的概念和原理很多人应该是相当清楚了,SSTI也是注入类的漏洞,其成因其实是可以类比于sql注入的。sql注入是从用户获…

    2022年4月5日
    96
  • phpspreadsheet中文手册_php file_put_contents

    phpspreadsheet中文手册_php file_put_contents今天遇到一个问题,涉及php与excel之间数据转换。之前一直用PHPExcel,他们的开发组不更新了。但是找到了PhpSpreadsheet。一、介绍用纯php编写的库,它提供了一组类,允许您读取和写入不同的电子表格文件格式支持格式环境要求php5.6及以上php_zip支持并启用php_xml支持并启用php_gd2支持并启用安装>composerrequi…

    2022年9月17日
    3
  • 史蒂芬周博客地址[通俗易懂]

    史蒂芬周博客地址[通俗易懂]http://www.sdifen.com/

    2022年8月5日
    7
  • Idea激活码最新教程2020.3.2版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2020.3.2版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2020 3 2 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2020 3 2 成功激活

    2025年5月22日
    4
  • 很太吧动漫邪恶游戏

    很太吧动漫邪恶游戏自己玩当然谈比给别人好一定要请女模特来实验吗十大发生的法师答复撒旦法撒旦法撒..万法归宗

    2022年9月13日
    4
  • expect java,Expect 使用详解「建议收藏」

    expect java,Expect 使用详解「建议收藏」第1章expect概括expect期待expect是Unix系统中用来进行自动化控制和测试的软件工具,由DonLibes制作,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用Tk工具,将交互程序包装在X11的图形用户界面中。…

    2025年5月31日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号