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

📄 megalcd.c

📁 avr128单片机液晶显示程序
💻 C
字号:
/*****************************************************
             http://www.sl.com.cn
      双龙电子公司----中文LCD演示程序(ICCAVR)
	             作者:詹卫前 
		  1、应包含头文件slavr.h
          2、在工程选项中的Additional Lib中填入slavr
		     使编译器使用附加库文件libslavr.a
		  3、数据线D0~D7接PORTA
		     ASK=PORTE.6
			 ANSWER=PORTE.7
			 RESET=PORTC.3	 
*****************************************************/
#include <avr/io.h>
#include <avr/slavr.h>
#include <avr/delay.h>
#define uchar      unsigned char 
#define uint       unsigned int 
/*   定义OCMJ4X8端口   */
//DATA_PORT=PORTA
#define data_port PORTA
//ASK=PORTE.6
#define ask (PINE&0x40)
//ANSWER=PORTE.7
#define set_answer asm("sbi 0x03,7")
#define clr_answer asm("cbi 0x03,7")
//RESTE=PORTC.3
#define set_reset asm("sbi 0x15,3")
#define clr_reset asm("cbi 0x15,3") 
#define wait  asm("nop\n nop")
void send (uchar dat); 

uchar  tab2[]={ 
0x19,0x43,0x16,0x0b,0x19,0x04,0x32,0x15,0x14,0x53,0x31,0x07,0x1d,0x0f,0x32,0x42, 0x2b,0x29,
0x19,0x43,0x16,0x0b,0x19,0x04,0x32,0x15,0x14,0x53,0x31,0x07,0x1d,0x0f,0x32,0x42, 0x2b,0x29,
0x19,0x43,0x16,0x0b,0x19,0x04,0x32,0x15,0x14,0x53,0x31,0x07,0x1d,0x0f,0x32,0x42, 0x2b,0x29,
0x19,0x43,0x16,0x0b,0x19,0x04,0x32,0x15,0x14,0x53,0x31,0x07,0x1d,0x0f,0x32,0x42, 0x2b,0x29}; 
uchar  tab4[]={ 
"Guangdong University of technology yi-song jiang make this work " 

};

/*---------------延时子程序----------------*/ 
void delay (uint us) 
{ 
  while(us--); 
} 
void delay1 (uint ms) 
{ 
  uint i,j; 
  for(i=0;i<ms;i++) 
  for(j=0;j<1000;j++) 
  ; 
} 
/*------------写命令或数据到LCD--------------*/ 
void wr_zb (uchar comm,uchar addr_x,uchar addr_y) 
{ 
  send(comm); 
  send(addr_x); 
  send(addr_y); 
} 
void send (uchar dat)               //写命令或数据 
{ 
 // while(busy); 
  while(ask); 
  data_port=dat; 
  set_answer; 
 // while(busy==0); 
  while((ask)==0); 
     
  clr_answer; 
} 
/*--------------显示中文------------------*/ 
void disp_chn (uchar  *chn) 
{ 
       uchar i,j; 
  for(j=0;j<4;j++) 
  { 
    for(i=2;i<10;i++) 
    { 
      wr_zb(0xf0,i,j); 
      send(chn[j*16+(i-2)*2]);//chn[0],chn[1]是一个汉字的区位码 。chn[2],chn[3]是一个汉字的区位码  
      send(chn[j*16+(i-2)*2+1]); 
    } 
  } 
} 
/*--------------显示字符------------------*/ 
void disp_eng (uchar  *eng)  //英文字符可以从任意点阵行开始。汉字只能在以16个点阵对齐的边界开始。 
{ 
  uchar i,j; 
  for(j=0;j<4;j++) 
  { 
    for(i=4;i<20;i++) 
    { 
      wr_zb(0xf9,i,j*16); 
      send(eng[j*16+i-4]); 
    } 
  } 
  
} 
/*     OCMJ4X8LCD初始化     */
void ocmj_init(void)
    {
	 MCUCR=0;
	 DDRA=0xff;
	 PORTA=0xff;
	 DDRE=0b10000000;
	 PORTE=0xff;
	 clr_reset;//LCD复位
	 _delay_ms(10);
	 set_reset;
	 clr_answer;
	 _delay_ms(10);
	 }
/*------------------主程序--------------------*/ 
int main () 
{ 
  ocmj_init();//初始化
 // PORTC|=0X10 ; //PC4输入上拉 
  while(1){
    //send(0xf4); //清屏 
   // disp_lat(0xff,0xff); 
   // delay1(800); 
    send(0xf4); 
    disp_chn(tab2); //用命令F0输出国标汉字 
    _delay_ms(1000);
	//delay1(800); 
   // send(0xf4); 
    //disp_lat(0xff,0x00); 
    //delay1(800); 
    send(0xf4); 
   disp_eng(tab4);//?? 
    _delay_ms(1000); 
   // send(0xf4); 
   // disp_lat(0xcc,0xcc); 
   // delay1(800); 
    //send(0xf4); 
    //disp_img(tab6);// 
   // delay1(800); 
     };    
  
  return 0; 
}

⌨️ 快捷键说明

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