⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cry12864.c

📁 Total_Program(太阳能追踪程序)
💻 C
字号:
#include "msp430x54xA.h"
typedef unsigned char uchar;
typedef unsigned int  uint;

extern const unsigned char shuzi_table[];

#define LCD_DataIn    P8DIR=0x00    //数据口方向设置为输入
#define LCD_DataOut   P8DIR=0xff    //数据口方向设置为输出
#define LCD2MCU_Data  P8IN
#define MCU2LCD_Data  P8OUT
#define LCD_CMDOut    P3DIR|=(BIT0+BIT4+BIT5)     //P3口的低三位设置为输出
#define LCD_RS_L            P3OUT&=~BIT0                                       //RS = P3.0
#define LCD_RS_H            P3OUT|=BIT0
#define LCD_RW_L            P3OUT&=~BIT5                                       //RW = P3.5
#define LCD_RW_H            P3OUT|=BIT5
#define LCD_EN_L            P3OUT&=~BIT4	                                    //EN = P3.4
#define LCD_EN_H            P3OUT|=BIT4


/*******************************************
函数名称:Delay_1ms
功    能:延时约1ms的时间
参    数:无
返回值  :无
********************************************/
void Delay_1ms(void)
{
	__delay_cycles(1000);
}
/*******************************************
函数名称:Delay_Nms
功    能:延时N个1ms的时间
参    数:n--延时长度
返回值  :无
********************************************/
void Delay_Nms(uint n)
{
    uint i;

    for(i = n;i > 0;i--)    Delay_1ms();
}
/*******************************************
函数名称:Write_Cmd
功    能:向液晶中写控制命令
参    数:cmd--控制命令
返回值  :无
********************************************/
void Write_Cmd(uchar cmd)
{
    uchar lcdtemp = 0;

    LCD_RS_L;
    LCD_RW_H;
    LCD_DataIn;
    do                       //判忙
    {
        LCD_EN_H;
       	_NOP();
       	lcdtemp = LCD2MCU_Data;
       	LCD_EN_L;

    }
    while(lcdtemp & 0x80);

    LCD_DataOut;
    LCD_RW_L;
    MCU2LCD_Data = cmd;
    LCD_EN_H;
    _NOP();
    LCD_EN_L;
}
/*******************************************
函数名称:Write_Data
功    能:向液晶中写显示数据
参    数:dat--显示数据
返回值  :无
********************************************/
void  Write_Data(uchar dat)
{
    uchar lcdtemp = 0;

    LCD_RS_L;
    LCD_RW_H;
    LCD_DataIn;
    do                       //判忙
    {
        LCD_EN_H;
        _NOP();
        lcdtemp = LCD2MCU_Data;
        LCD_EN_L;
    }
    while(lcdtemp & 0x80);

    LCD_DataOut;
    LCD_RS_H;
    LCD_RW_L;

    MCU2LCD_Data = dat;
    LCD_EN_H;
    _NOP();
    LCD_EN_L;
}
/*******************************************
函数名称:Init_Lcd
功    能:初始化液晶模块
参    数:无
返回值  :无
********************************************/
void Init_Lcd(void)
{
    LCD_CMDOut;    //液晶控制端口设置为输出

   // Delay_Nms(500);
    Write_Cmd(0x30);   //基本指令集
    Delay_1ms();
    Write_Cmd(0x02);   // 地址归位
    Delay_1ms();
    Write_Cmd(0x0c);   //整体显示打开,游标关闭
    Delay_1ms();
    Write_Cmd(0x01);   //清除显示
    Delay_1ms();
    Write_Cmd(0x06);   //游标右移
    Delay_1ms();
    Write_Cmd(0x80);   //设定显示的起始地址
}
/*******************************************
函数名称:Clear_GDRAM
功    能:清除液晶GDRAM中的随机数据
参    数:无
返回值  :无
********************************************/
void Clear_GDRAM(void)
{
    uchar i,j,k;

	Write_Cmd(0x34);        //打开扩展指令集
	i = 0x80;
	for(j = 0;j < 32;j++)
	{
        Write_Cmd(i++);
        Write_Cmd(0x80);
  		for(k = 0;k < 16;k++)
  		{
  		    Write_Data(0x00);
  		}
	}
	i = 0x80;
 	for(j = 0;j < 32;j++)
	{
 	    Write_Cmd(i++);
        Write_Cmd(0x88);
  		for(k = 0;k < 16;k++)
  		{
   		    Write_Data(0x00);
   		}
	}
	Write_Cmd(0x30);        //回到基本指令集
}
/*******************************************
函数名称:Draw_TX
功    能:显示一个16*16大小的图形
参    数:Yaddr--Y地址
          Xaddr--X地址
          dp--指向图形数据存放地址的指针
返回值  :无
********************************************/
void Draw_TX(uchar Yaddr,uchar Xaddr,const uchar * dp)
{
    uchar j;
    uchar k=0;

   // Write_Cmd(0x01);  //清屏,只能清除DDRAM
    Write_Cmd(0x34);  //使用扩展指令集,关闭绘图显示
    for(j=0;j<16;j++)
    {
        Write_Cmd(Yaddr++);       //Y地址
        Write_Cmd(Xaddr);    //X地址
  	Write_Data(dp[k++]);
  	Write_Data(dp[k++]);
    }
    Write_Cmd(0x36);  //打开绘图显示
  //  Write_Cmd(0x30);  //回到基本指令集模式
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -