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

📄 lcd5.c

📁 2407A对LCD的现实控制
💻 C
字号:
#include "register.h"
#include "HZ.h"
void SysInit(void);
void LCDinit(void);
void LCDdelay(int delx);
void Writezimu(void);
void CmdWrite(unsigned char lcd_cmd);
void DataWrite(unsigned char lcd_data);
void SetCursor(int ox,int oy);
void WriteHZ(int ox,int oy,int k);

main()
{
   SysInit();
   LCDinit();
   CmdWrite(0xFF5B);                 	// 显示区合成方式
   DataWrite(0xFF0C);
   WriteHZ(0xFF17,0xFF11,0);
   WriteHZ(0xFF1c,0xFF11,1);
   WriteHZ(0xFF21,0xFF11,2);
   WriteHZ(0xFF26,0xFF11,3);
   WriteHZ(0xFF2b,0xFF11,4);
   WriteHZ(0xFF30,0xFF11,5);
}

void LCDinit(void)
{
   int i;
   CmdWrite(0xFF40);              		// LCD系统设置指令,8参数
   DataWrite(0xFF30);
   DataWrite(0xFF87);
   DataWrite(0xFF07);
   DataWrite(0xFF28);
   DataWrite(0xFF2F);					
   DataWrite(0xFFF0);		
   DataWrite(0xFF30);					
   DataWrite(0xFF00);

   CmdWrite(0xFF44);             		// 显示区设置指令,10参数
   DataWrite(0xFF00);
   DataWrite(0xFF00);
   DataWrite(0xFFF0);
   DataWrite(0xFF00);
   DataWrite(0xFF40);
   DataWrite(0xFFF0);
   DataWrite(0xFF00);
   DataWrite(0xFF80);
   DataWrite(0xFF00);
   DataWrite(0xFF00);

   CmdWrite(0xFF5A);             		// 水平卷动,必须清零
   DataWrite(0xFF00);

   CmdWrite(0xFF5B);                 	// 显示区合成方式
   DataWrite(0xFF00);

   CmdWrite(0xFF59);             		// 开启LCD
   DataWrite(0xFF54);

   CmdWrite(0xFF4C);            		// 设定光标增量为1

   CmdWrite(0xFF46);             		// 设定光标起始地址
   DataWrite(0xFF00);
   DataWrite(0xFF00);
   
   CmdWrite(0xFF42);             		// 向显存写入数据
   for(i=0;i<32767;i++)
  {
  
   DataWrite(0xFF00);                   // 将32K显存全部清零
              							// 即LCD不显示任何东西
  }
}

void SetCursor(int x,int y)         	//设定光标,二区显示
{     

   	CmdWrite(0xFF46);                 	//设定光标起始位置
    DataWrite(x);   					//地址低8位		
   	DataWrite(y);						//地址高8位
}

void WriteHZ(int x,int y,int k)
{
    int i,j;
	SetCursor(x,y);
	CmdWrite(0xFF46);             		// 设定光标起始地址
    DataWrite(x);
    DataWrite(y);
	CmdWrite(0xFF4F);            		// 设定光标增量为1 
	CmdWrite(0xFF42);  
	for(i=0;i<=15;i++)
	DataWrite(HZ[k][i]);
	
	CmdWrite(0xFF46);             		// 设定光标起始地址
    DataWrite(x+1);
    DataWrite(y);	
    CmdWrite(0xFF42);
    for(j=16;j<=31;j++)
	DataWrite(HZ[k][j]);
}

void CmdWrite(unsigned char lcd_cmd) 		/*写指令*/
{
  *PADATDIR=*PADATDIR&0x0F0B;				/*设置IOPE2=0;CS=0;*/
  LCDdelay(0x3);
  *PADATDIR=*PADATDIR|0x0F08;				/*设置IOPE3=1;A0=1;*/
  LCDdelay(0x3);
  *PADATDIR=*PADATDIR&0x0F0E;				/*设置IOPE0=0;WR=0;*/
  LCDdelay(0x3);
  *PBDATDIR=(*PBDATDIR&0xFF00)|lcd_cmd; 	/*送命令lcd-cmd;*/
  LCDdelay(0x3);
  *PADATDIR=*PADATDIR|0x0F01; 				/*设置IOPE0=1;WR=1;*/
  LCDdelay(0x3);
  *PADATDIR=*PADATDIR|0x0F04;				/*设置IOPE2=1;CS=1;*/
  LCDdelay(0x3);
}

void DataWrite(unsigned char lcd_data) 		/*写数据*/
{
  *PADATDIR=*PADATDIR&0x0F0B; 				/*设置IOPE2=0;CS=0;*/
  LCDdelay(0x3);	
  *PADATDIR=*PADATDIR&0x0F07; 				/*设置IOPE3=0;A0=0;*/
  LCDdelay(0x3);
  *PADATDIR=*PADATDIR&0x0F0E; 				/*设置IOPE0=0;WR=0;*/
  LCDdelay(0x3);
  *PBDATDIR=(*PBDATDIR&0xFF00)|lcd_data;	/*送数据lcd-data;*/
  LCDdelay(0x3);
  *PADATDIR=*PADATDIR|0x0F01; 				/*设置IOPE0=1;WR=1;*/
  LCDdelay(0x3);	
  *PADATDIR=*PADATDIR|0x0F04; 				/*设置IOPE2=1;CS=1;*/
  LCDdelay(0x3);
}

void LCDdelay(int delx)         			//延时子程序
{
   int m=0;
   while(m<delx)
  {
   m++;
  }
}

void SysInit(void) 				 		//DSP初始化子程序
{
    asm(" setc	SXM");		    		// 抑制符号位扩展
	asm(" clrc	OVM");	    	 	 	// 累加器中结果正常溢出
	asm(" clrc	CNF");	    		 	// B0被配置为数据存储空间
	asm(" setc	INTM");	    		 	// 禁止所有中断
	*SCSR1=0x81FE;				 		// CLKIN=6M,CLKOUT=4*CLKIN=24M
	*WDCR=0x0E8;			    	 	// 不使能看门狗,因为SCSR2中的WDOVERRIDE
						 				// 即WD保护位复位后的缺省值为1,故可以用
		      			     	 		// 软件禁止看门狗
	*IMR=0x0000;			 	 		// 禁止所有中断
	*IFR=0x0FFFF;			     		// 清除全部中断标志,"写1清0"

	*MCRA=*MCRA|0x00F0;		    	 	// 把IOPB端口配置为一般的I/O
										// 把IOPA0-3端口配置为一般的I/O
	*PBDATDIR=*PBDATDIR|0xFF00;	 		// 把IOPB端口设置为输出方式
    *PBDATDIR=*PBDATDIR&0xFF00;			// 把IOPB输出设置为0
    *PADATDIR=*PADATDIR|0x0F0F;	 		// 把IOPA0-3端口设置为输出方式
    *PADATDIR=*PADATDIR&0x0F0F;			// 把IOPA0-3输出设置为1
}

⌨️ 快捷键说明

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