7757|20

24

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

12864液晶串行显示,欢迎交流!! [复制链接]

//12864液晶串行显示测试程序
//P1.4模拟SID(接第5脚),P1.5模拟SCLK(接第6脚)
//4脚(CS信号)接高电平选通,15脚(PSB信号)接地选择串行方式
//17脚(RST信号)根据注释提示悬空
#include <MSP430g2231.h>

void int_port(void)                    //管脚初始化                      
{
  P1SEL&=~BIT4;                        //P1.4模拟SID,设置为i/o口输出方向                       
  P1DIR|=BIT4;                         
  P1OUT&=~BIT4;                          
  P1SEL&=~BIT5;                        //P1.5模拟SCLK,设置为i/o口输出方向                           
  P1DIR|=BIT5;                           
  P1OUT&=~BIT5;                          
}
void delay(unsigned int t)             //延时函数
{                                      //粗略延时,满足时序要求
 unsigned int i,j;
 for(i=0; i<t;  i++)
        for(j=0; j<10; j++);
}
void sendbyte(unsigned char zdata)     //数据传送函数
{
  unsigned char code_seg7;            
  unsigned char serial_clk;             
  unsigned char serial_shift;              
  code_seg7=zdata;                             
  serial_shift=0x80;                      
  for(serial_clk=0; serial_clk<8; serial_clk++)
  {                                  
    if(code_seg7&serial_shift)           
    {
      P1OUT|=BIT4;                     //SID为1
    }
    else
    {
      P1OUT&=~BIT4;                    //SID为0                      
    }
    P1OUT&=~BIT5;                      //产生时钟信号下沿
    P1OUT|=BIT5;                       //产生时钟信号上沿                            
    serial_shift=serial_shift>>1;      //准备发送下一位数据          
  }  
}
void write_com(unsigned char cmdcode)  //写命令函数
{                                      //串口控制格式(11111AB0)
                                //A数据方向控制,A=H时读,A=L时写
                                       //B数据类型选择,B=H时为显示数据,B=L时为命令
 sendbyte(0xf8);                //MCU向LCD发命令
 
        sendbyte(cmdcode & 0xf0);      //发高四位数据(数据格式D7D6D5D4_0000)
 sendbyte((cmdcode << 4) & 0xf0);//发低四位数据(数据格式D3D2D1D0_0000)
 delay(2);                      //延时等待
}
void write_data(unsigned char Dispdata)//写数据函数
{
 
 sendbyte(0xfa);                //MCU向LCD发数据
 sendbyte(Dispdata & 0xf0);     //发高四位数据
 sendbyte((Dispdata << 4) & 0xf0);//发低四位数据
 delay(2);
}
void lcdinit()                         //LCD初始化

 delay(20000);                  //复位等待(内部自带上电复位电路),时间较长
 write_com(0x30);               //功能设定:基本指令集操作              
 delay(50);                     //延时等待
 write_com(0x0c);               //整体显示,关游标            
 delay(50);
}
void print_string(unsigned char *s)          //发送字符串

 while(*s > 0)                  //C语言里字符串末尾自动加“\0”(ASCII码值为0)
    {
  write_data(*s);        //发送字符对应的ASCII码,12864指针可设置自动指向下一个显示地址
  s++;      
  delay(50);
    }
}
void Test()
{       unsigned char dat1,dat2,dat3,dat4;
 dat1=1;dat2=2;dat3=3;dat4=4;
        write_com(0x03);              //发指令,地址归位
 delay(50);                     //延时   
 write_com(0x80);               //第一行首地址0x80
 print_string("德州仪器MSP430 "); //第一行显示(必须加一个空格否则不能下载)
        write_com(0x94);               //第二行首地址0x90,从第四个开始显示
        write_data(dat1+0x30);         //发送dat1的ASCII码,显示dat1的值
        write_data(dat2+0x30);         //发送dat1的ASCII码,显示dat2的值
        write_data(dat3+0x30);         //发送dat1的ASCII码,显示dat3的值
        write_data(dat4+0x30);         //发送dat1的ASCII码,显示dat4的值
        write_data('H');               //发送H的ASCII码,显示H
        write_data('z');               //发送z的ASCII码,显示z
        write_com(0x90);
        print_string("频率: ");
        delay(500);                    //较长时间延时,保证下次操作前LCD完成上述功能处于非忙状态
}
void main()
{
        WDTCTL=WDTPW+WDTHOLD;          //关闭看门狗
        int_port();                    //端口初始化
 lcdinit();                     //LCD初始化
 Test();                        //测试
 while(1);                      //CPU空转
}

最新回复

楼主,第三口传一个电位器好像没用,依旧是暗的   详情 回复 发表于 2014-7-28 10:48

点评

楼主,能把具体连线说一下吗? 你程序里只写了使能,片选等一些管脚的连接情况,DB0到DB7等 是怎样接的呢?  详情 回复 发表于 2012-7-21 11:56
 
点赞 关注

回复
举报

3836

帖子

19

TA的资源

纯净的硅(中级)

沙发
 
很清晰的注释啊

点评

有助大家交流么:pleased:  详情 回复 发表于 2012-7-20 20:34
 
 

回复

7173

帖子

195

TA的资源

五彩晶圆(高级)

板凳
 
最近搞串行显示的帖子很多啊

点评

Launchpad管脚太少,并行不够用,都是为了显示能直观点  详情 回复 发表于 2012-7-20 20:36
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 沙发 fish001 的帖子

有助大家交流么
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 板凳 常见泽1 的帖子

Launchpad管脚太少,并行不够用,都是为了显示能直观点
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

6
 
好东西 正在找 谢了哈 楼主
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 楼主 ice0107 的帖子

楼主,能把具体连线说一下吗?  你程序里只写了使能,片选等一些管脚的连接情况,DB0到DB7等 是怎样接的呢?

点评

DB0~DB7悬空  详情 回复 发表于 2012-7-21 21:28
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 7楼 zhang90222 的帖子

DB0~DB7悬空
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

9
 
为什么我的显示在加5V时会出现乱码?而加4.7V才可以正常显示,但是4.7V时比较暗。。。
求帮助。。。。

点评

没道理啊 检查电路 要不你就加5v 然后给第三管脚 引个电位器 调节一下。  详情 回复 发表于 2012-7-23 18:56
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

10
 

回复 9楼 nlls1990 的帖子

没道理啊  检查电路  要不你就加5v 然后给第三管脚 引个电位器 调节一下。

点评

楼主,第三口传一个电位器好像没用,依旧是暗的  详情 回复 发表于 2014-7-28 10:48
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

11
 
我的是12964-32A3,并行没问题,串行这个程序烧进去没有显示啊,是需要硬件怎么该么
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

12
 
serial_shift=0x80;  初值是这么多 serial_shift=serial_shift>>1;这句是右移一位
    sendbyte(0xf8);   怎么可以实现这个数据传送到SDI上  是不是要code_seg7>>=1啊,求解释
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

13
 

430单片机

我的是12864-32A3,程序烧进去,出不来,只是背光灯亮,什么原因?
pin3管脚用接吗?
片选线是如何接的?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

14
 
楼主,您好!为什么我的显示很暗呢?
 
 
 

回复

161

帖子

0

TA的资源

一粒金砂(中级)

15
 
多谢,正在找串行显示
 
 
 

回复

161

帖子

0

TA的资源

一粒金砂(中级)

16
 
多谢,顶起
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

17
 
不错,加油楼主。
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(中级)

18
 
谢谢分享
 
个人签名hello world !~
 
 

回复

161

帖子

0

TA的资源

一粒金砂(中级)

19
 
顶起
 
 
 

回复

161

帖子

0

TA的资源

一粒金砂(中级)

20
 
楼主,多谢,能亮有显示,就是显示的内容太暗,背光串电位器调节还是太暗,怎么办
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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