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

📄 lcd1602.c.100826221236

📁 avr基础程序大全
💻 100826221236
字号:
#include <iom16v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint  unsigned int
//#pragma data:code 
const uchar table[]="I LIKE AVR !";
const uchar table1[]="WWW.TXMCU.COM";

void delay(uint ms)
{
        uint i,j;
	for(i=0;i<ms;i++)
	   {
	   for(j=0;j<1141;j++);
       }
}
void write_com(uchar com)
{
       PORTB&=~BIT(5);
	   PORTB&=~BIT(6);
	   PORTA=com;
	   PORTB|=BIT(7);
	   delay(1);
	   PORTB&=~BIT(7);
}

void write_dat(uchar dat)
{     
       PORTB|=BIT(5);
	   PORTB&=~BIT(6);
	   PORTA=dat;
	   PORTB|=BIT(7);
	   delay(1);
	   PORTB&=~BIT(7);

}
void  main()
{
     uchar i;
	  DDRA=0XFF;
	  DDRB|=BIT(4)|BIT(5)|BIT(6);
	  PORTB&=~BIT(7);
	  
	  write_com(0X38);
	  delay(5);
	  write_com(0X01);
	  delay(5);
	  write_com(0X0C);
	  delay(5);
	  write_com(0X06);
	  delay(5);
	  write_com(0X80+0X10);
	  delay(5);
	  for(i=0;i<12;i++)
	  {
	     write_dat(table[i]);
		 delay(5);
	  }
	  write_com(0X80+0X50);
	  delay(5);
	    for(i=0;i<13;i++)
	  {
	     write_dat(table1[i]);
		 delay(5);
	  }
	  for(i=0;i<16;i++)
	  {
	     write_com(0X18);
		 delay(500);
	  }
	  
}







/************************************************************************************/
/*     程序名:1602液晶动态显示程序				                                    */
/*                                                                                  */
/*     CPU型号:AT89S52/STC89C51RC    晶振:12.0 M                                  */
/*                                                                                  */                                             
/* 																			        */
/*                                                                       			*/
/*     功能描述: 跳线:把数码管上的LCD/LED跳线帽跳至下面,打开液晶显示				*/
/*					    															*/
/*				  现象:从右至左显示团队和技术交流邮箱								*/
/*			   																		*/
/*    技术交流:ccc414@163.com ;qq: 277970561;275722897;181903134                   */
/*                                          									    */
/*   													 					    	*/
/*                                                                                  */
/*                                                		精英团队 版权所有           */                                 
/*                                                            2008-06-20            */
/************************************************************************************/ 
//#include <reg52.h>

/*#define  Lcd_Data  PORTA    //定义数据端口

sbit  RS = PORTB5;  //定义连接端口
sbit  RW =PORTB6;
sbit  E = PORTB7;
sbit  Busy = PORTA7;

unsigned char code welcome[] = {"Elitist Teamwork"};
unsigned char code email[] = {"ccc414@163.com"};

void Delay(uint ms)
{
        uint i,j;
	for(i=0;i<ms;i++)
	   {
	   for(j=0;j<1141;j++);
       }
}
/*void Delay(unsigned int t)//延时子程序,延时 1MS*t S
{
	unsigned char a;
	while(--t != 0)
	{
		for(a = 0; a < 125; a++);
	}
}*/

/*void Read_Busy(void)//读忙信号判断
{
	do{
		Lcd_Data = 0xff;
		RS = 0;
		RW = 1;
		E = 0;
		Delay(2);
		E = 1;
	  }while(Busy);
}

void Write_Comm(unsigned char lcdcomm) //写指令函数
{	

	Lcd_Data &= 0x0f;
	Lcd_Data |= lcdcomm&0xF0;

	RS = 0;
	RW = 0;

	E = 1;
	Read_Busy();
	E = 0;

	lcdcomm = lcdcomm << 4; 
	Lcd_Data &= 0x0f;
	Lcd_Data |= lcdcomm&0xF0;


	RS = 1;
	RW = 0;


	E = 1;
	Read_Busy();
	E = 0;
}

void Write_Data(unsigned char lcddata)//写数据函数
{	Lcd_Data &= 0x0f;
	Lcd_Data |= lcddata&0xF0;
	
	RS = 1;
	RW = 0;

	E = 1;
	Read_Busy();
	E = 0;


	lcddata = lcddata << 4; 
	Lcd_Data &= 0x0f;
	Lcd_Data |= lcddata&0xF0;


	RS = 1;
	RW = 0;


	E = 1;
	Read_Busy();
	E = 0;

}


void Init_LCD(void)//初始化LCD
{	Write_Comm(0x28);//8位2行5*8 
	Write_Comm(0x01);//清显示
	Delay(200);   //稍微延时,等待LCM进入工作状态
	Write_Comm(0x02);//光标归位,此处不设置可能出现错误
	Write_Comm(0x28);//8位2行5*8
	Write_Comm(0x06);//文字不动,光标右移
	Write_Comm(0x0e);//显示开/关,光标开闪烁关;0x0f开
}

void main(void)//主函数
{
	unsigned char i;
	DDRA=0XFF;
	 DDRB|=BIT(4)|BIT(5)|BIT(6);

	Init_LCD(); //初始化 LCM
	

	Write_Comm(0x80+16);//写入"welcome首地址(第一行)

	for(i=0;i<16;i++)
	{
		Write_Data( welcome[i] );//显示welcometo字样
	}

	Write_Comm(0xc0+16);//写入第2行
	for(i=0;i<14;i++)
	{
		Write_Data( email[i] );//显示
	}
	
	
	for(i=0;i<16;i++)
	  {
	     Write_Comm(0X18);
		 Delay(400);
	  }
	  while(1);//等待
}*/
 


⌨️ 快捷键说明

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