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

📄 maintest.c

📁 用AT91RM9200控制信利的LCD
💻 C
字号:
//*----------------------------------------------------------------------------
//*         ATMEL Microcontroller Software Support  -  ROUSSET  -
//*----------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*----------------------------------------------------------------------------
//* File Name           : main.c
//* Object              : Basic twi example. Write a byte into EEPROM and read it
//* Creation            : NL   25/11/02
//*
//*----------------------------------------------------------------------------
#include "main.h"

#define AT91_SYS                ((AT91PS_SYS) AT91C_BASE_SYS)
#define LcdCom         *(volatile unsigned char *)0x50000001
#define LcdData        *(volatile unsigned char *)0x50000000   

 
 
#define AT91C_SM_RWHOLD   (0 << 28)
#define AT91C_SM_RWSETUP  (0 << 24)
#define AT91C_SM_ACESS    (0 << 16)               /* orig = 0 */
#define AT91C_SM_DRP      (0 << 15)               /* orig = 0 */
#define AT91C_SM_DBW      (2 << 13)               /* orig = 0 */
#define AT91C_SM_BAT      (0 << 12)               /* orig = 0 */
#define AT91C_SM_TDF      (0 << 8)                /* orig = 0 */
#define AT91C_SM_WSEN     (1 << 7)                /* orig = 1 */
#define AT91C_SM_NWS      (15)                    /* orig = 0 */
 
 unsigned int valR5, valR6;
 
 
void delay(int temp)
{	
	int i;
	for(i=0;i<temp;i++)
	{
		;
	}
}

void CD(unsigned int temp)
{
	if(temp)
		AT91_SYS->PIOC_SODR |= AT91C_PIO_PC12;  //set 1
	else
		AT91_SYS->PIOC_CODR |= AT91C_PIO_PC12;  //set 0
	delay(20);
}

void ReadySTA01()     //读状态并判断STA0,STA1状态准备好
{
	unsigned char flag = 1;
	
	while((flag & 0x3) != 3)
	{
		
		CD(1);
		flag = LcdCom;
		//delay();

	}
}

void ReadySTA3()     //读状态并判断STA3状态准备好
{
	unsigned char flag = 1;
	while((flag & (1 << 3)) == 0)
	{	
		
		CD(1);
		flag = LcdCom;
		//delay();
	}	
}

void LcdClr()
{
	unsigned int R6;
	
	ReadySTA01();
	CD(0);
	LcdData = 0x00;
	ReadySTA01();
	CD(0);
	LcdData = 0x00;
	ReadySTA01();
	CD(1);
	LcdCom = 0x24;

	//ReadySTA01();
	//LcdCom = 0xb0;
	
	for(R6=0;R6<0x2000;R6++)
	{	
		//ReadySTA3();
		//LcdData = 0x00;
		ReadySTA01();
		CD(0);
		LcdData = 0x00;
		ReadySTA01();
		CD(1);
		LcdCom = 0xc0;
	}
	//ReadySTA3();
	//LcdCom = 0xb2;
}

unsigned char Val;
int main()
{
	
	
	  // enable direct output enable 
    AT91_SYS->PIOC_PER |= AT91C_PIO_PC12;
    // enable output  DAC0
    AT91_SYS->PIOC_OER |= AT91C_PIO_PC12;
    
	// AT91_SYS->PIOA_SODR |= AT91C_PIO_PA0;
	
	//AT91_SYS->PIOA_CODR |= AT91C_PIO_PA0;   //c/d
     AT91_SYS->EBI_SMC2_CSR[4] = (AT91C_SM_RWHOLD | AT91C_SM_RWSETUP | AT91C_SM_ACESS |
   								AT91C_SM_DRP    | AT91C_SM_DBW     | AT91C_SM_BAT   |
                                AT91C_SM_TDF    | AT91C_SM_WSEN    | AT91C_SM_NWS);
	
/*	
	while(1)
	{
		ReadySTA01();
		LcdData = 0x80;
		delay();
	}
*/	
	//cursor set
	//ReadySTA01();
	//LcdData = 0x00;
	//ReadySTA01();
	//LcdData = 0x00;
//	LcdCom = 0x21;
	
	
	//GRAPHIC HOME ADDRESS SET  
	

	ReadySTA01();
	CD(0);
	LcdData = 0x00;
	ReadySTA01();
	CD(0);
	LcdData = 0x00;
	ReadySTA01();
	CD(1);
	LcdCom  = 0x42;
	
	
	//GRAPHIC AREA SET 
	ReadySTA01();
	CD(0);
	LcdData = 0x1E;
	ReadySTA01();
	CD(0);
	LcdData = 0x00;
	ReadySTA01();
	CD(1);
	LcdCom  = 0x43;
	
	//"OR" mode
	ReadySTA01();
	CD(1);
	LcdCom = 0x80;  //or
	
	
	
	//main test]
	
	//Cursor pattern set 3 lines
	ReadySTA01();
	CD(1);
	LcdCom = 0xa3;
	
	while(1)
	{
	
//	ReadySTA01();
//	LcdCom = 0x90;  //display off
	LcdClr();  //clear display start to test
	ReadySTA01();
	CD(1);
	LcdCom = 0x98;
	
	//display black
	
	ReadySTA01();
	CD(0);
	LcdData =  0x00;
	ReadySTA01();
	CD(0);
	LcdData = 0x00;
	ReadySTA01();
	CD(1);
	LcdCom = 0x24;
	
	ReadySTA01();
	CD(1);
	LcdCom = 0xb0;
	valR6 = 128;
	while(valR6) {
		
			valR5 = 0x1E;
	
		while(valR5) {
		
			ReadySTA3();
			CD(0);
			LcdData = 0x00;

			valR5--;
		}
	
		valR6--;
	}
	ReadySTA3();
	CD(1);
	LcdCom = 0xb2;
	
	
	ReadySTA01();
	CD(0);
	LcdData = 0x10;
	ReadySTA01();
	CD(0);
	LcdData = 0x00;
	ReadySTA01();
	CD(1);
	LcdCom = 0x24;
	
	
	ReadySTA01();
	CD(1);
	LcdCom = 0xf9;
	//LcdCom = 0xf1;
	
	
	ReadySTA01();
	CD(1);
	LcdCom = 0xfb;
	
	ReadySTA01();
	CD(1);
	LcdCom = 0xfd;
	ReadySTA01();
	CD(1);
	LcdCom = 0xff;




	}
	
	
}

⌨️ 快捷键说明

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