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

📄 ledhex.c

📁 ARM LCD12864带键盘 液晶驱动程序
💻 C
字号:
/****************************************************************************
* 文件名:LEDHEX.C
* 功能:LED数码管显示0-F字符,同时控制LED1、LED2、LED3、LED4显示对应的16进行值。
* 说明:将跳线器JP3、JP4、JP7短接。
****************************************************************************/
#include  "config.h"
#include  "zimu.h"
//#include  "lcd12864.h"
//#include  "show.h"
/*******************************************************************/
/******************************************************************/

#define Disp_On  0x3f      // 显示开指令 //
#define Disp_Off 0x3e      // 显示关指令 //
#define Col_Add  0x40      // 定位到第0列指令 //
#define Page_Add 0xb8      // 定位到第0页指令 //
#define Start_Line 0xc0     // 定位从DDROM中的第0行开始往屏幕上显示 //

#define E   1<<8     // 使能端 //
#define RW  1<<9     // 读写控制端 //
#define RS  1<<10     // 数据或指令寄存器选择端 //
#define CS2 1<<11     // 右屏使能 //
#define CS1 1<<12     // 左屏使能 /
#define RST 1<<13     // 复位端 //
#define PORT 0xff<<0


/****************************************************************************/
void Disp_V_Line(void);
void sz_disp16(uint8 pag,uint8 col, uint8 const *szk);
void hz_disp16(uint8 pag,uint8 col, uint8 const *hzk);
void Disp_Img(uint8 const *img);
void show(void);
void shuzishow(unsigned char arr);
void change(unsigned char dat);
void delay(uint32 t);
void write_command(uint8 cmdcode);
void write_data(uint8 Dispdata);
void Clr_Scr(void);
void init_lcd(void);
void sz_disp8(uint8 pag,uint8 col, uint8 const *szk);
void shuzhishow(unsigned char arr);
void  Keyboard_Initialize(void);
uint8 Keyboard_Scan(void);

/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly		延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<50000; i++);
}

int  main(void)
{  uint8  tmp=0; 		
	
   PINSEL0 = 0x00000000;		// 设置所有管脚连接GPIO
   PINSEL1 = 0x00000000;
   DelayNS(10);					// 延时,防止JTAG调试时,芯片复位后蜂鸣器马上蜂鸣(直到重新设置PINSEL0)
   IO0DIR = PORT|RST|RW|E|CS1|CS2|RS;	// 设置SPI等控制口为输出	
   init_lcd();
   Keyboard_Initialize();
   DelayNS(10);
   Clr_Scr();
   Disp_Img(FirstPage);
   DelayNS(100);
   Clr_Scr();
	show();
	DelayNS(100);
	Clr_Scr();
	shuzishow(tmp);
    while(1)
    {
    	tmp=Keyboard_Scan();
    	if(tmp<=9)
    	shuzishow(tmp);
    }	
   return(0);
}
/************************液晶驱动模块**************************/

void delay( uint32 t)
 {
  uint32 i,j;
  for(i=0;i<t;i++)
  for(j=0;j<10;j++)
   ;
 }

/*-------------------------写命令到LCD------------------------------*/

void write_command(uint8 cmdcode)
 {
  IO0CLR=RS;
  IO0CLR=RW;
  IO0CLR=PORT;
  IO0SET = (cmdcode)<<0;  /******数据 P0*****/

  delay(0);
  IO0SET=E;
  delay(0);
  IO0CLR=E;
 }

/*-------------------------写数据到LCD----------------------------*/

void write_data( uint8 Dispdata)
 {
  IO0SET=RS;
  IO0CLR=RW;
  IO0CLR=PORT;
  IO0SET=(Dispdata)<<0;
  delay(0);
  IO0SET=E;
  delay(0);
  IO0CLR=E;
 }
/***************************清屏函数*******************************/
void Clr_Scr(void)
 {
  uint8 j,k;
  IO0CLR=CS2;IO0SET=CS1;             // 清左半屏 //
   {
    write_command(Page_Add+0);
    write_command(Col_Add+0);
    for(k=0;k<8;k++)               // 清左上半屏 //
     {
	  write_command(Page_Add+k);
      for(j=0;j<64;j++)
	  {
	  write_command(Col_Add+j);
	  write_data(0x00);
	  }
     }
   }
  IO0SET=CS2; IO0CLR=CS1;                     // 清右半屏 //
   {
    write_command(Page_Add+0);
    write_command(Col_Add+0);
    for(k=0;k<8;k++)               // 清右上半屏 //
     {
	  write_command(Page_Add+k);
      for(j=0;j<64;j++)
	  {
	  write_command(Col_Add+j);
	  write_data(0x00);
	  }
     }
   }
 }

/*------------------初始化LCD屏--------------------------*/

void init_lcd(void)
 {
  IO0CLR=RST;
  delay(100);
  IO0SET=RST;
  delay(100);

  IOSET=CS2;
  IOSET=CS1;

  delay(100);
  write_command(Disp_Off);
  write_command(Page_Add+0);
  write_command(Start_Line+0);
  write_command(Col_Add+0);
  write_command(Disp_On);
 }
/*****************************液晶驱动程序完成****************************/
/*****************************液晶显示子函

⌨️ 快捷键说明

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