6792|15

15

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

2553 驱动12864串行显示 [复制链接]

/********************************************************************
* 文件名  : 串行12864显示.c
* 描述    :  该程序实现了12864以串行的方式进行通信。
             液晶上的R9。R10决定液晶的串行或者并行通讯方式。

***********************************************************************/
#include //声明库

#define uchar unsigned char
#define uint  unsigned int

//CS=P1^5;            //片选信号
//SID=P1^6;                //数据信号
//SCLK=P1^7;                //时钟信号
//RST=P1^2;                //复位信号
//CH = P1^4;                //并行、串行选择信号

/********************************************************************
* 名称 : delay()
*
* 输入 : t
* 输出 : 无
***********************************************************************/
void delay(unsigned int t)
{
        unsigned int i,j;
        for(i=0; 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)
                {
                        P1OUT |=BIT6;//SID=1
                }
                else
                {
                        P1OUT &=~BIT6;
                }
                P1OUT &=~BIT7;//SCLK = 0;
                P1OUT |=BIT7;//SCLK = 1;
        }
}

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

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

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

/********************************************************************
* 名称 : hzkdis()
* 功能 : 显示字符串
* 输入 : *s
* 输出 : 无
***********************************************************************/
void hzkdis(char  *s)
{
        while(*s > 0)
    {
                write_data(*s);
                s++;
                delay(50);
    }
}

/********************************************************************
* 名称 : Test()
* 功能 : 显示子函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Test()
{
        write_com(0x03);
        delay(50);
        write_com(0x81);
        hzkdis("5555");
        write_com(0x91);
        hzkdis("");
        write_com(0x89);
        hzkdis("");
        write_com(0x98);
        hzkdis("");
}


/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void main()
{
        WDTCTL=WDTPW+WDTHOLD; //关掉看门狗
        P1DIR =0xFF;
        P1OUT &=~BIT4;//CH = 0;
        delay(1);
        lcdinit();
        delay(10);
        while(1)
        {
                Test();
                delay(5000);
        }
}

测试成功,目前想做数字示波器 液晶调好了 ad死活调不好.....

最新回复

请问楼主sendbyte(0xf8)和sendbyte(0xfa)这句是干嘛的  详情 回复 发表于 2013-9-6 14:49
 
点赞 关注

回复
举报

15

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
用ad采集128个二进制数 存成一个数组显示在12864上 数组怎么弄。。
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
/********************************************************************
* 名称 : delay()
*
* 输入 : t
* 输出 : 无
***********************************************************************/
void delay(unsigned int t)
{
         unsigned int i,j;
         for(i=0; i     for(j=0; j<10; j++);
}

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

不完整阿
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

4
 
楼主 我的LCD12864貌似 跟你一样的 淘宝买的。。。。起不来阿。 求指教

点评

应该是copy的时候出问题了吧。。原来是这样子的 void delay(unsigned int t) { unsigned int i,j; for(i=0; i  详情 回复 发表于 2012-7-19 14:19
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 风在心中 的帖子

应该是copy的时候出问题了吧。。原来是这样子的

void delay(unsigned int t)
{
        unsigned int i,j;
        for(i=0; i     for(j=0; j<5; j++);
}

点评

这样 都能编译 通过??? GOD  详情 回复 发表于 2012-7-19 14:47
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼 zxzxhhhhh 的帖子

这样 都能编译 通过???  GOD

点评

没错啊 找时间给你贴图  详情 回复 发表于 2012-7-19 15:50
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 6楼 风在心中 的帖子

没错啊 找时间给你贴图

点评

你用的时候 32K的晶振焊了吗?  详情 回复 发表于 2012-7-19 16:23
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

8
 
为什么我用这个程序 一点反应都没有。。 void delay(unsigned int t) 调整的是100us 没错阿
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 7楼 zxzxhhhhh 的帖子

你用的时候 32K的晶振焊了吗?

点评

我的延时 没有那么精确 用的内部晶振1m 8m我都试过 都能使 不过稳定性有差异 串口通信 你线连得对不对啊  详情 回复 发表于 2012-7-19 16:46
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

10
 

回复 9楼 风在心中 的帖子

我的延时 没有那么精确 用的内部晶振1m 8m我都试过 都能使 不过稳定性有差异  串口通信 你线连得对不对啊
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

11
 
我的屏幕是12864-32A3,R9是103,R10是102,试了很多串行程序,都跑不起来啊,这个硬件需要改么,怎么改啊

点评

R9怎么会是103? 我的R9是0欧姆 】R10没有焊接 需要把R9去掉 移到R10 就行了 这个程序我试过可以  详情 回复 发表于 2012-8-15 21:16
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

12
 
串行显示图片怎么写啊
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

13
 
牛  thanks
 
 
 

回复

7228

帖子

195

TA的资源

五彩晶圆(高级)

14
 

回复 11楼 3204100225 的帖子

R9怎么会是103?
我的R9是0欧姆
】R10没有焊接
需要把R9去掉 移到R10 就行了  这个程序我试过可以
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

15
 
学习中。。。新手支持
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 
请问楼主sendbyte(0xf8)和sendbyte(0xfa)这句是干嘛的
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表