📄 rt12864j.c
字号:
/************************Copyright(c)***********************************
**
** 广西大学计算机与电子信息学院
** 电子协会
**
**---------------------------------------文件信息----------------------------------------------------
**文 件 名:
**创 建 人:
**最后修改日期:
**描 述:
**
**-----------------------------------历史版本信息--------------------------------------------------
** 创建人:
** 版 本:
** 日 期:
** 描 述: 原始版本
**
**-----------------------------------当前版本修订---------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
** 功 能:
**
**------------------------------------------------------------------------------------------------------
***********************************************************************/
#include "config.h"
#define LCD_DI 0x00000001 /* 指令选择线 P0.0 0000 0000 0000 0000 */
#define LCD_RW 0x00000002 /* 读写选择线 P0.1 */
#define LCD_E 0x00000004 /* 使能选择线 P0.2 */
#define LCD_CS1 0x00000800 /* 左屏选择 P0.11 */
#define LCD_CS2 0x00001000 /* 有屏选择 P0.12*/
#define LCD_RET 0x00002000 /* 屏幕复位 P0.13*/
#define LCD_DATA 0x000007F8 /* 数据线 P0.3---P0.10 */
#define Beep 0x00000080 /* 震铃 */
uint8 a[12][8]={
{0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F},/*"未命名文件",0*/
{0,66,127,64,0,0,0,0}, //1
{0,98,81,73,70,0,0,0},
{0,34,73,73,54,0,0,0},
{0,56,38,127,32,0,0,0},
{0,79,73,73,49,0,0,0},
{0,62,73,73,50,0,0,0},
{0,3,113,9,7,0,0,0},
{0,54,73,73,54,0,0,0},
{0,38,73,73,62,0,0,0}, //9
{0,0,0,204,204,0,0,0}, //:
{0,0,0,0,0,0,0,0} //最后全0,是为了对某个位置的数字清0
};
uint8 b[6][16]={
{0x20,0x20,0x22,0x22,0xFE,0x21,0x21,0x20,0x20,0xFF,0x20,0x22,0xAC,0x20,0x20,0x00},
{0x04,0x04,0x42,0x82,0x7F,0x01,0x01,0x10,0x10,0x08,0x07,0x1A,0x21,0x40,0xF0,0x00},/*"我",0*/
{0x00,0x40,0xB2,0x96,0x9A,0x92,0xF6,0x9A,0x93,0x91,0x99,0x97,0x91,0x90,0x30,0x00},
{0x40,0x20,0xA0,0x90,0x4C,0x47,0x2A,0x2A,0x12,0x1A,0x26,0x22,0x40,0xC0,0x40,0x00},/*"爱",0*/
{0x80,0x40,0xF0,0x2C,0x43,0x20,0x98,0x0F,0x0A,0xE8,0x08,0x88,0x28,0x1C,0x08,0x00},
{0x00,0x00,0x7F,0x00,0x10,0x0C,0x03,0x21,0x40,0x3F,0x00,0x00,0x03,0x1C,0x08,0x00},/*"你",0*/
};
/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly 延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
}
/****************************************************************************
* 名称:System_Int()
* 功能:系统初始化
* 入口参数:无
* 出口参数:无
****************************************************************************/
void System_Int(void)
{
PINSEL0 = 0x00000000; //设置引脚连接到GPIO
PINSEL1 = 0x00000000;
IODIR = 0x00003807; //P0.0,P0.1,P0.2, P0.11,P0.12,P0.13设置为输出
}
/****************************************************************************
* 名称:BEEP()
* 功能:开机响铃
* 入口参数:无
* 出口参数:无
****************************************************************************/
/* void BEEP(void)
{
IODIR |= Beep;
IOCLR = Beep;
DelayNS(100);
IOSET = Beep;
}*/
/****************************************************************************
* 名称:SendData()
* 功能:向数据口发送数据,实现32位数据到8位数据的转换
* 入口参数:code
* 出口参数:无
****************************************************************************/
void SendData(uint32 code )
{
uint32 c1,c2;
IODIR = 0x000007f8;
c1=code & 0x000000ff;//只要最低位
c1<<=3; //左移位8位
c2 =~c1;
c2 &= 0x000007f8;
IOSET = c1; //cmd中的1
IOCLR = c2;
}
/****************************************************************************
* 名称:LCD_Check()
* 功能:每次送数据前检测LCD的当前状态
* 入口参数:无
* 出口参数:无
****************************************************************************/
void LCD_Check(void)
{
uint32 sta;
IODIR = 0x00003807;
IOCLR = LCD_DI;
IOSET = LCD_RW;
IOSET = LCD_E;
SendData(0xff);
while(1)
{
IODIR = 0x00003807;
IOSET = LCD_E;
sta = IOPIN & 0x00000400;
if(sta < 0x0000400)break;
IOCLR = LCD_E; //判断忙
}
IOCLR = LCD_E;
}
/****************************************************************************
* 名称:Write_command()
* 功能:向LCD中写命令
* 入口参数:code
* 出口参数:无
****************************************************************************/
void Write_command(uint32 code)
{
uint32 Busy;
Busy = IOPIN & 0x00000400;
do LCD_Check();
while(Busy != 0x00000400);
IODIR = 0x00003807;
IOCLR = LCD_DI;
IOCLR = LCD_RW;
SendData(code); //写指令时是先赋值再使能
IODIR = 0x00003807;
IOSET = LCD_E;
IOCLR = LCD_E;
IOSET = LCD_RW;
}
/****************************************************************************
* 名称:Write_data()
* 功能:向LCD中写数据
* 入口参数:data
* 出口参数:无
****************************************************************************/
void Write_data(uint32 data)
{
uint32 Busy;
Busy = IOPIN & 0x00000400;
do LCD_Check();
while(Busy != 0x00000400);
IODIR = 0x00003807;
IOSET = LCD_DI;
IOCLR = LCD_RW;
SendData(data);
IODIR = 0x00003807;
IOSET = LCD_E;
IOCLR = LCD_E;
IOSET = LCD_RW;
}
/****************************************************************************
* 名称:Write_command_CS1()
* 功能:向LCD 的CS1中写命令
* 入口参数:code
* 出口参数:无
****************************************************************************/
/* void Write_command_CS1(uint32 code)
{
uint32 Busy;
Busy = IOPIN & 0x00000400;
do LCD_Check();
while(Busy != 0x00000400);
IOSET = LCD_CS1;
IOCLR = LCD_CS2;
IOCLR = LCD_DI;
IOCLR = LCD_RW;
SendData(code); //依次将指令代码传到数据线上
IOSET = LCD_E;
IOCLR = LCD_E;
IOSET = LCD_RW;
}*/
/****************************************************************************
* 名称:Write_data_CS1()
* 功能:向LCD 的CS1中写数据
* 入口参数:code
* 出口参数:无
****************************************************************************/
/* void Write_data_CS1(uint32 code)
{
uint32 Busy;
Busy = IOPIN & 0x00000400;
do LCD_Check();
while(Busy != 0x00000400);
IOSET = LCD_CS1;
IOCLR = LCD_CS2;
IOSET = LCD_DI;
IOCLR = LCD_RW; //写选择
SendData(code);//
IOSET = LCD_E;
IOCLR = LCD_E;
IOSET = LCD_RW;
}*/
/****************************************************************************
* 名称:Write_command_CS2()
* 功能:长软件延时
* 入口参数:dly 延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
/* void Write_command_CS2(uint32 code)
{
uint32 Busy;
Busy = IOPIN & 0x00000400;
do LCD_Check();
while(Busy != 0x00000400);
IOSET = LCD_CS2;
IOCLR = LCD_CS1;
IOCLR = LCD_DI;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -