找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6837|回复: 3
打印 上一主题 下一主题
收起左侧

如何用LCD12864显示单片机程序中的变量数字?

[复制链接]
跳转到指定楼层
楼主
ID:213280 发表于 2018-12-3 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 蓝琪 于 2018-12-4 15:56 编辑

定义两个变量X,Y,初始值都为0,用串口发送1,X的值就+1,发送2,Y的值就+1,并在12864上显示,下面是12864的串行显示程序,求教什么改

/********************************************************************
* 文件名  : 串行12864显示.c
* 描述    :  该程序实现了12864以串行的方式进行通信。
* 创建人  :
* 版本号  :
***********************************************************************/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int

sbit CS=P3^4;            //RS片选信号
sbit SID=P3^3;                //RW数据信号
sbit SCLK=P3^2;                //E时钟信号
sbit RST=P2^6;                //复位信号
sbit CH = P2^7;                //PSB并行、串行选择信号

/********************************************************************
* 名称 : delay()
* 功能 : 延时,延时时间为 100us * t。这是通过软件延时,有一定误差。
* 输入 : t
* 输出 : 无
***********************************************************************/
void delay(unsigned int t)
{
        unsigned int i,j;
        for(i=0; i<t;  i++)
    for(j=0; j<10; j++);
}

/********************************************************************
* 名称 : sendbyte()
* 功能 : 按照液晶的串口通信协议,发送数据
* 输入 : zdata
* 输出 : 无
***********************************************************************/
void sendbyte(unsigned char zdata)
{
        unsigned int i;
        for(i=0; i<8; i++)
        {
                if((zdata << i) & 0x80)
                {
                        SID = 1;
                }
                else
                {
                        SID = 0;
                }
                SCLK = 0;
                SCLK = 1;
        }
}

/********************************************************************
* 名称 : write_com()
* 功能 : 写串口指令
* 输入 : cmdcode
* 输出 : 无
***********************************************************************/
void write_com(unsigned char cmdcode)
{
        CS = 1;
        sendbyte(0xf8);
        sendbyte(cmdcode & 0xf0);
        sendbyte((cmdcode << 4) & 0xf0);
        delay(2);
}

/********************************************************************
* 名称 : write_data()
* 功能 : 写串口指令
* 输入 : cmdcode
* 输出 : 无
***********************************************************************/
void write_data(unsigned char Dispdata)
{
        CS = 1;
        sendbyte(0xfa);
        sendbyte(Dispdata & 0xf0);
        sendbyte((Dispdata << 4) & 0xf0);
        delay(2);
}

/********************************************************************
* 名称 : lcdinit()
* 功能 : 初始化函数
* 输入 : cmdcode
* 输出 : 无
***********************************************************************/
void lcdinit()
{  
        RST = 0;
        delay(100);
        RST = 1;
        delay(20000);
        write_com(0x30);
        delay(50);
        write_com(0x0c);
        delay(50);
}

/********************************************************************
* 名称 : hzkdis()
* 功能 : 显示字符串
* 输入 : *s
* 输出 : 无
***********************************************************************/
void hzkdis(unsigned char code *s)
{  
        while(*s > 0)
    {
                write_data(*s);
                s++;
                delay(50);
    }
}
/********************************************************************
* 名称 : Display()
* 功能 : 显示子函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Display()
{  
        //write_com(0x01);
    //delay(50);   
        write_com(0x80);
        hzkdis("X:");
        write_com(0x90);
        hzkdis("Y:");
        }
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main()
{
        CH = 0;
        delay(1);
        lcdinit();
        delay(10);
        while(1)
        {
                Display();
                delay(50);
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:438905 发表于 2018-12-4 08:15 | 只看该作者
楼上正解!!!
回复

使用道具 举报

板凳
ID:213280 发表于 2018-12-4 10:18 | 只看该作者
zhc123 发表于 2018-12-4 08:15
楼上正解!!!

兄弟你是沙发还楼上正解,为了一黑币,你也太水了吧,一点建议也没有
回复

使用道具 举报

地板
ID:396960 发表于 2018-12-4 13:07 | 只看该作者
write_com(0x80); //显示的位置?
write_data();       //显示内容
比如你要显示X   那就write_data(X);
程序都是调出来的,别人只能告诉你哪里是关键,东西都在你手里,当然是自己负责调试了。

评分

参与人数 1黑币 +100 收起 理由
admin + 100 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表