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

📄 test.c

📁 学习的例程!和通用的LCD1602的有区别
💻 C
字号:
//#include <at91sam7s64.h>
#include <sam7s.h>			 //自定义的S64寄存器名函数
#include <delay.h>		     //自定义的DELAY函数


#define LCD_RS    8
#define LCD_RW    9
#define LCD_EN    10
//#define LCD_BACK_LIGHT    PORTC.2


void LCD_init         (void);
void LCD_en_write     (void);
void LCD_write_char   (uchar command,uchar data);


void io_set(uchar pin)	   //单个IO口置位函数
{
ulong io_data=1;
io_data=io_data<<pin;
PIO_SODR=io_data;         //PIO_ODSR为IO线上置位寄存器,1有效,0无
}


void io_clear(uchar pin)	   //单个IO口清零函数
{
ulong io_data=1;
io_data=io_data<<pin;
PIO_CODR=io_data;         //PIO_CODR为IO线上清零寄存器,1有效,0无
}


void LCD_init(void)       //液晶初始化
{
unsigned char i=0;
delay_nms(1000);
for(i=0;i<5;i++)
{
LCD_write_char(1,0x38);  //8位显示,5*7点阵字符
delay_nms(40);
}

LCD_write_char(1,0x06);  //8位显示,5*7点阵字符
delay_nms(40); 


 LCD_write_char(1,0x01);  //清屏
 delay_nms(40);

// delay_nms(100);
 LCD_write_char(1,0x0f);  //显示开,光标开,闪烁开
 delay_nms(40);

}

void LCD_write_char(uchar command,uchar data) // 写数据
{
 uchar i=0,temp=0;
 delay_nus(50);
 
 if(command==0) io_set(LCD_RS);  //RS=1
 else io_clear(LCD_RS); 
 
 for(i=0;i<8;i++) 
  {
  
   if(data&1) {io_set(i+24);}	 //把相应的IO口置位或者清零
   else {io_clear(i+24);}
   data=data>>1;
   } 				      //写入8位控制字
 // LCD_DATA_PORT=data;  //写8位控制字
  delay_nus(20);
 // LCD_en_write();
  io_clear(LCD_EN);
  delay_nus(200);
  io_set(LCD_EN);
  delay_nus(200);
 
}

void LCD_set_xy( unsigned char x, unsigned char y )  //写地址函数
  {
    unsigned char address;
    if (y == 0) address = 0x80 + x;
    else 
       address = 0xc0 + x;
    LCD_write_char(1,address);
  }



void main(void)
{
uint a=0;
PMC_PCER=0x0F;		//PMC外设时钟使能
PIO_PER=0xffffffff;	  	       //PIOA0-31作为I/O使用
PIO_OER=0xffffffff;            //I/O输出使能
delay_nus(10);
LCD_init();          //1602初始化

while(1)
  {
         LCD_set_xy(0,0);
	     LCD_write_char(0,'m');
	     LCD_write_char(0,'y');
	     LCD_write_char(0,'h');
	     LCD_write_char(0,'k');
	     LCD_write_char(0,'0');
	     LCD_write_char(0,'0');
		 LCD_write_char(0,'7');
	         
	     
		 delay_nms(1000);  
         LCD_set_xy(4,1);
	     LCD_write_char(0,'m');
	     LCD_write_char(0,'c');
	     LCD_write_char(0,'u');
	     LCD_write_char(0,'z');
	     LCD_write_char(0,'o');
	     LCD_write_char(0,'n');
	     LCD_write_char(0,'e');
		 LCD_write_char(0,'.');
		 LCD_write_char(0,'c');
		 LCD_write_char(0,'o');
		 LCD_write_char(0,'m');
	     
		 delay_nms(1000);
   }
	  
	     
	
}

⌨️ 快捷键说明

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