打印

求助:12864显示字模和图形,一头雾水呀.谁有个C程序发来我参考下

[复制链接]
2999|2
手机看帖
扫描二维码
随时随地手机跟帖
沙发
雁舞白沙| | 2013-2-23 21:00 | 只看该作者
#include <bmp.h>
#include <GLOBAL.h>
#include <stdlib.h>
#include <stdbool.h>
#include <msp430x41x.h>

//*===LCD---端口定义============================================================  

  //-------------CS---片选
  #define LcdCsOut            P3DIR |=  BIT2
  #define LcdCsHig            P3OUT |=  BIT2            
  #define LcdCsLow            P3OUT &=~ BIT2
  //-------------RT---复位
  #define LcdRtOut            P3DIR |=  BIT3
  #define LcdRtHig            P3OUT |=  BIT3            
  #define LcdRtLow            P3OUT &=~ BIT3
  //-------------RS---寄存器选择
  #define LcdRsOut            P3DIR |=  BIT4
  #define LcdRsHig            P3OUT |=  BIT4            
  #define LcdRsLow            P3OUT &=~ BIT4
  //-------------SA---数据端
  #define LcdSaOut            P3DIR |=  BIT5
  #define LcdSaHig            P3OUT |=  BIT5            
  #define LcdSaLow            P3OUT &=~ BIT5
  //-------------SC---时钟端
  #define LcdScOut            P3DIR |=  BIT6
  #define LcdScHig            P3OUT |=  BIT6            
  #define LcdScLow            P3OUT &=~ BIT6

//*===ROM---端口定义============================================================  

  //-------------CS---片选
  #define RomCsOut            P4DIR |=  BIT2
  #define RomCsHig            P4OUT |=  BIT2            
  #define RomCsLow            P4OUT &=~ BIT2
  //-------------SC---复位
  #define RomScOut            P4DIR |=  BIT3
  #define RomScHig            P4OUT |=  BIT3            
  #define RomScLow            P4OUT &=~ BIT3
  //-------------RS---寄存器选择
  #define RomDuOut            P4DIR |=  BIT4
  #define RomDuHig            P4OUT |=  BIT4            
  #define RomDuLow            P4OUT &=~ BIT4
  //-------------SA---数据端
  #define RomDiOut            P4DIR |=  BIT5
  #define RomDiHig            P4OUT |=  BIT5            
  #define RomDiLow            P4OUT &=~ BIT5


void InitLcdIo(void)
{
    LcdCsOut;
    LcdRtOut;
    LcdRsOut;
    LcdSaOut;
    LcdScOut;
   
    RomCsOut;
    RomScOut;
    RomDuOut;
   
    LcdCsHig;
    LcdRtHig;
    LcdRsHig;
    LcdSaHig;
    LcdScHig;
}
//---写指令到LCD模块
void SenCmdToLcd(unsigned char CmdData)
{
   unsigned char i;
   WDT();
   LcdRsLow;
   for(i=0;i<8;i++)
   {
      LcdScLow;
      if(CmdData&0x80)
      {
          LcdSaHig;
      }
      else
      {
          LcdSaLow;
      }
      LcdScHig;
      CmdData<<=1;
   }
}

//---写数据到LCD模块
void SenDataToLcd(unsigned char SenData)
{
   unsigned char i;
   WDT();
   LcdRsHig;
   for(i=0;i<8;i++)
   {
      LcdScLow;
      if(SenData&0x80)
      {
        LcdSaHig;
      }
      else
      {
        LcdSaLow;
      }
      LcdScHig;
      SenData<<=1;
   }
}
void SetLcdAdd(unsigned int Page,unsigned int Column)
{
    Column=Column-0x01;
    SenCmdToLcd(0xb0+Page-1);//--------------------------------------设置页地址
    SenCmdToLcd(0x10+(Column>>4&0x0f));//---------------------设置列地址的高4位
    SenCmdToLcd(Column&0x0f);//-------------------------------设置列地址的低4位
}

/*显示128x64点阵图像*/
void DisplayBmp(unsigned char *BmpDptr)
{
    unsigned char i,j;
    LcdCsLow;
    for(j=0;j<8;j++)
    {
        SetLcdAdd(j+1,1);
        for (i=0;i<128;i++)
        {       
            SenDataToLcd(*BmpDptr);//--写数据到LCD,每写完一个8位的地址自动加1
            BmpDptr++;
        }
    }
    LcdCsHig;
}
//---LCD模块初始化
void LcdShowInit(void)
{
    LcdCsLow;
    RomCsHig;
    LcdRtLow;//------------------------------------------------------低电平复位
    Delay(20);
    LcdRtHig;//--------------------------------------------------------复位完毕
    Delay(20);        
    SenCmdToLcd(0xe2);         /*软复位*/
    Delay(5);
    SenCmdToLcd(0x2c);  /*升压步聚1*/
    Delay(5);       
    SenCmdToLcd(0x2e);  /*升压步聚2*/
    Delay(5);
    SenCmdToLcd(0x2f);  /*升压步聚3*/
    Delay(5);
    SenCmdToLcd(0x23);  /*粗调对比度,可设置范围0x20~0x27*/
    SenCmdToLcd(0x81);  /*微调对比度*/
    SenCmdToLcd(0x29);  /*0x28,微调对比度的值,可设置范围0x00~0x3f*/
    SenCmdToLcd(0xa2);  /*1/9偏压比(bias)*/
    SenCmdToLcd(0xc8);  /*行扫描顺序:从上到下*/
    SenCmdToLcd(0xa0);  /*列扫描顺序:从左到右*/
    SenCmdToLcd(0x40);  /*起始行:第一行开始*/
    SenCmdToLcd(0xaf);  /*开显示*/
    LcdCsHig;
}
//---全屏清屏
void ClearScreen(void)
{
    unsigned char i,j;
    LcdCsLow;
    RomCsHig;
    for(i=0;i<9;i++)
    {
        SenCmdToLcd(0xb0+i);
        SenCmdToLcd(0x10);
        SenCmdToLcd(0x00);
        for(j=0;j<132;j++)
        {
            SenDataToLcd(0x00);
        }
    }
    LcdCsHig;
}
void LcdParse(void)
{
    if(LcdParseEn)
    {
        if(SecondsConn&0x0001)
        {
            if(LcdRunData>1)
            {
              LcdRunData=0;
              LcdShowNum++;
            }
            else
            {
              LcdRunData++;
            }
            switch(LcdShowNum)
            {                                          
                  case 0x00 ://第03种显示方式数据提取到显示缓冲区---
                            DisplayBmp((unsigned char *)WatchBmpOne);
                  break;
                  case 0x01 ://第01种显示方式数据提取到显示缓冲区---      
                            DisplayBmp((unsigned char *)WatchBmpThr);
                  break;
                  case 0x02 ://第02种显示方式数据提取到显示缓冲区---        
                            DisplayBmp((unsigned char *)WatchBmpTwo);
                  break;
                  case 0x03 ://第01种显示方式数据提取到显示缓冲区---  
                            DisplayBmp((unsigned char *)BmpDataFiv);                           
                  break;  
                  case 0x04 ://第01种显示方式数据提取到显示缓冲区---车
                            DisplayBmp((unsigned char *)WatchBmpFor);                           
                  break;
                  case 0x05 ://第01种显示方式数据提取到显示缓冲区---版本号120822-001  
                            DisplayBmp((unsigned char *)BmpDataSix);     
                  break;
                  case 0x06 ://第01种显示方式数据提取到显示缓冲区---版本号120822-001  
                            DisplayBmp((unsigned char *)BmpDataSen);     
                  break;
                  case 0x07 ://第01种显示方式数据提取到显示缓冲区---版本号120822-001  
                            LcdShowNum=0;
                            LcdRunData=0;   
                  break;
            }
            SecondsConn&=0xfffe;
        }   
    }
}

使用特权

评论回复
板凳
walkmanlove|  楼主 | 2013-2-23 22:09 | 只看该作者
太感谢了...我去研究下.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝