5887|9

755

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

MSP430操作LCD12864基础代码 [复制链接]

/******************************************************************************/
//文件名:lcd_int.h
////
//创建时间:2010年10月23日23:29:08
//
//修改时间:
//
//创建人员:Dewey
//
//版本:第一版
/******************************************************************************/

#ifndef __LCD_INT_H__
#define __LCD_INT_H__

#define LCD_DataPort_In  P4DIR=0x00 
#define LCD_DataPort_Out P4DIR=0xff  
#define Lcd_Data_In      P4IN
#define Lcd_Data_Out     P4OUT    

#define LCD_CMDOut    P3DIR|=0x07     //P3口的低三位设置为液晶控制
#define LCD_RS_H      P3OUT|=BIT2      //P3.0
#define LCD_RS_L      P3OUT&=~BIT2     //P3.0
#define LCD_RW_H      P3OUT|=BIT1      //P3.1
#define LCD_RW_L      P3OUT&=~BIT1     //P3.1
#define LCD_EN_H      P3OUT|=BIT0      //P3.2
#define LCD_EN_L      P3OUT&=~BIT0     //P3.2

/******************************************************************************/
//函数名:Write_Cmd2Lcd()
//
//说明:液晶写指令函数
//
//参数:cmd       液晶操作指令
//    
//返回:无
//
//创建时间:2010年10月23日23:37:32
//
//修改时间:
//
//创建人员:Dewey
//
//版本:第一版
//
/******************************************************************************/

void Write_LcdCmd(U8 cmd)
{
  U8 LcdTemp = 0 ;                    //液晶状态

  LCD_RS_L ;                        
  LCD_RW_H ;
  LCD_DataPort_In ;                   //设置液晶数据接口为输入状态
  do                                  //检测液晶是否为忙
  {   
    LCD_EN_H ;
    _NOP(); 
    LCD_DataPort_In;
    LcdTemp = Lcd_Data_In ;
    LCD_EN_L ;  
  }
  while(LcdTemp & 0x80);
 
  LCD_DataPort_Out;                     //设置液晶数据接口为输出状态
  LCD_RW_L ;
  Lcd_Data_Out = cmd ;                //发送数据至液晶
  LCD_EN_H;
  _NOP();           
  LCD_EN_L;
}

/******************************************************************************/
//函数名:Write_LcdData()
//
//说明:写数据到液晶
//
//参数:Data         所写数据
//    
//返回:无
//
//创建时间:2010年10月23日23:50:01
//
//修改时间:
//
//创建人员:Dewey
//
//版本:第一版
//
/******************************************************************************/

void Write_LcdData(U8 Data)
{
  U8 LcdTemp = 0 ;                    //液晶状态

  LCD_RS_L ;                        
  LCD_RW_H ;
  LCD_DataPort_In ;                   //设置液晶数据接口为输入状态
  do                                  //检测液晶是否为忙
  {   
    LCD_EN_H ;
    _NOP();     
    LcdTemp = Lcd_Data_In ;
    LCD_EN_L ;  
  }
  while(LcdTemp & 0x80);
 
  LCD_DataPort_Out;                   //设置液晶数据接口为输出状态
  LCD_RS_H ;
  LCD_RW_L ;    
  Lcd_Data_Out = Data ;               //发送数据至液晶
  LCD_EN_H;
  _NOP();           
  LCD_EN_L; 
}

/******************************************************************************/
//函数名:Lcd_Clear()
//
//说明:液晶清屏函数
//
//参数:无
//    
//返回:无
//
//创建时间:2010年10月24日0:04:32
//
//修改时间:
//
//创建人员:Dewey
//
//版本:第一版
//
/******************************************************************************/

void Lcd_Clear(void)
{
  Write_LcdCmd(0x34); //扩充指令操作
  Delay_ms(10);
  Write_LcdCmd(0x30); //基本指令操作
  Delay_ms(10);
  Write_LcdCmd(0x01); //清屏
  Delay_ms(10);
}

/******************************************************************************/
//函数名:Lcd_Int()
//
//说明:液晶初始化函数
//
//参数:无
//    
//返回:无
//
//创建时间:2010年10月23日23:59:26
//
//修改时间:
//
//创建人员:Dewey
//
//版本:第一版
//
/******************************************************************************/

void Lcd_Int(void)
{
  LCD_CMDOut;           //液晶控制端口设置为输出 
  Delay_ms(500);
  Write_LcdCmd(0x30); 
  Delay_ms(5);
  Write_LcdCmd(0x02); 
  Delay_ms(5);
  Write_LcdCmd(0x0c);  
  Delay_ms(5);
  Write_LcdCmd(0x01); 
  Delay_ms(5);
  Write_LcdCmd(0x06);
  Delay_ms(5);
  Write_LcdCmd(0x80);
  Delay_ms(5);
}

/******************************************************************************/
//函数名:Lcd_DisPos()
//
//说明:液晶显示字符位置设置函数
//
//参数:x       显示位置的横坐标
//      y       显示位置的纵坐标
//
//返回:无
//
//创建时间:2010年10月24日14:53:47
//
//修改时间:
//
//创建人员:Dewey
//
//版本:第一版
//
/******************************************************************************/

void Lcd_DisPos(U8 x ,U8 y)
{
  U8 Position;
  if(x == 1)
  {
    x = 0x80;
  }
  else if(x == 2)
  {
    x = 0x90;
  }
  else if(x == 3)
  {
    x = 0x88;
  }
  else if(x == 4)
  {
    x = 0x98;
  }
  Position = x + y;
  Write_LcdCmd(Position);
}

/******************************************************************************/
//函数名:Lcd_DisWord()
//
//说明:液晶显示字符串函数
//
//参数:字符串指针头
//    
//返回:无
//
//创建时间:2010年10月24日14:58:38
//
//修改时间:
//
//创建人员:Dewey
//
//版本:第一版
//
/******************************************************************************/

void Lcd_DisWord(U8 Word[])
{
  U8 num = 0;
  while(Word[num])
  {
    Write_LcdData(Word[num++]);
  }
}

/******************************************************************************/
//函数名:LcdDis_Picture()
//
//说明:液晶显示图片128*64
//
//参数:图像数据指针头
//    
//返回:无
//
//创建时间:2010年10月24日0:13:22
//
//修改时间:
//
//创建人员:Dewey
//
//版本:第一版
//
/******************************************************************************/

void LcdDis_Picture(const U8 *bmp)
{
  U8 i, j;
  Write_LcdCmd(0x34);                 //写数据,关闭图形显示
  for (i = 0; i < 32; i++)            //32行(上半屏)
  {
    Write_LcdCmd(0x80 + i);          //先写入Y坐标值
    Write_LcdCmd(0x80);              //写入X坐标值
    for (j = 0; j < 16; j++)
      Write_LcdData(*bmp++);
  }
  for (i = 0; i < 32; i++)
  {
    Write_LcdCmd(0x80 + i);             //先写入Y坐标值
    Write_LcdCmd(0x88);                 //写入X坐标值
    for (j = 0; j < 16; j++)
      Write_LcdData(*bmp++);
  }
  Write_LcdCmd(0x36);                   //写完数据,开图形显示
  Write_LcdCmd(0x30);                  //回到基本指令集
}

#endif

 

最新回复

  哈哈 你太帅了  详情 回复 发表于 2011-8-24 15:06
 
点赞 关注

回复
举报

1万

帖子

16

TA的资源

版主

沙发
 

顶个楼主辛苦

 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 

回复

7219

帖子

192

TA的资源

五彩晶圆(高级)

板凳
 
laige来个贴图最好 楼主
 
 
 

回复

755

帖子

0

TA的资源

五彩晶圆(初级)

4
 

板子背面图

 

 

板子正面图

上电后效果

 
 
 

回复

755

帖子

0

TA的资源

五彩晶圆(初级)

5
 

板子是自己DIY的,做的一个GSM防盗监控系统,后来改用51实现的。


图中核心芯片是MSP430F149

 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

6
 
不错
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(高级)

7
 
好,不错,学习了
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(中级)

8
 
试过没,能显示效果吗
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

9
 
支持楼主支持楼主,顶了啊
 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(中级)

10
 
  哈哈 你太帅了
 
个人签名www.zhope17.com
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表