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

📄 rt12864j.c

📁 用ARM 开发板写的程序 12864的显示程序 请声明版权 不负责后果
💻 C
📖 第 1 页 / 共 2 页
字号:
/************************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 + -