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

📄 rt12232_avr.c

📁 RT12232F在MEGA16上的驱动程序
💻 C
字号:
/*******************************************/
/*   RT12232液晶在AVR单片机的驱动程序       */
/*  作者:匡炎    华南理工大学电信学院   */
/********************************************/
#include"iom16v.h"
#include"macros.h"

#define LCD_DATA   PORTC
#define DATA_ATTR  DDRC
#define LCD_CTRL   PORTB
#define CTRL_ATTR  DDRB
#define DATA_PIN   PINC

#define   RS  1  
#define   RW  2
#define   E  3
  
 void delayXms(int x)
{
unsigned char i;
while(x--)
{
for(i=0;i<250;i++);
}
} 
  
  
void read_busy(void)
{ unsigned char busy;
  DATA_ATTR=0X00;
  do
{LCD_CTRL|=(1<<RW);//RW置1
  LCD_CTRL&=~(1<<RS);//RS=0,写数据
  LCD_CTRL|=(1<<E);
  busy=DATA_PIN;
  _NOP();
  _NOP();
  }
  while(busy&0x80);
 }
  
void write_data(unsigned char data)
{
  read_busy();
  DATA_ATTR=0xFF;
  LCD_CTRL|=(1<<RS);//RS置1
  LCD_CTRL&=~(1<<RW);//RW=0,写数据
  LCD_DATA=data;
  LCD_CTRL|=(1<<E);
  _NOP();
  _NOP();
  _NOP();
  _NOP();
  LCD_CTRL&=~(1<<E);
}

void write_command(unsigned command)
{
  read_busy();
  DATA_ATTR=0xFF;
  LCD_CTRL&=~(1<<RS);//RS置0
  LCD_CTRL&=~(1<<RW);//RW=0,写命令
  LCD_DATA=command;
  LCD_CTRL|=(1<<E);
  LCD_CTRL&=~(1<<E);
 }
 
char read_data(void)
{
  char data;
  LCD_CTRL|=(1<<RS);//RS置1
  LCD_CTRL|=(1<<RW);//RW=1,读数据
   LCD_CTRL|=(1<<E);
  data=LCD_DATA; 
   return data;
 }

 
void display_HZ(unsigned char address,unsigned char data1,unsigned char data2)
//x_data--RAM地址,data1--汉字编码高8位,data2--汉字编码低8位
{
        write_command(address);//指定显示地址
        write_data(data1);//汉字编码高8位
        write_data(data2);//汉字编码低8位
}
////发送一串字符数据////// 
///set one string///
void write_string(unsigned char *temp)
{ 
while((*temp)!='\0' )
  {
  write_data(*temp);
    temp++;
  }
 }
 
 void clear(void)
 { write_command(0x01);
 }  
 
void disp_on(void)
{write_data(0x0d);
}
  
void lcd_initial()
{       DATA_ATTR=0xFF;
        CTRL_ATTR=0XFF;
        write_command(0x30);//功能设定:8位数据,基本指令30
		//write_command(0x34);//扩充指令
		//write_command(0x03);//允许卷动
        write_command(0x06);//点设定:画面右移
        write_command(0x0d);//lcd开,光标关
        write_command(0x01);//清屏
        write_command(0x02);//地址归位
		write_string("欢迎使用");
		delayXms(5000);
		write_data('.');
		delayXms(5000);
		write_data('.');
		delayXms(5000);
		write_data('.');
		delayXms(5000);
		write_data('.');
		delayXms(5000);
		write_data('.');
		delayXms(5000);
		write_data('.');
		clear();
}


void  main()
{     unsigned char i;
       CTRL_ATTR=0XFF;
	   DDRD=0XFF;
       delayXms(5000);//延时
        lcd_initial();
      //write_command(0x80);//设定DDRAM起始地址
         while(1) ;
}

⌨️ 快捷键说明

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