51单片机——显示屏

一、


#include <reg51.h>     
#include <intrins.h>   
sbit RS=0xb0; //P3.0
sbit RW=0xb1; //P3.1
sbit E=0xb2; //P3.2

void lcd_w_cmd(unsigned char com);
void lcd_w_dat(unsigned char dat);
unsigned char lcd_r_start(); 
void lcd_int();	
void delay(unsigned int i);
void delay1();	
void main()		
{
   unsigned char lcd[]="SHEN ZHEN";  
   unsigned char i;
   P1=0xff;                          
   lcd_int();	                
   delay(255);
   lcd_w_cmd(0x83);                 
   delay(255);
   for(i=0;lcd[i]!='\0';i++)        	
   {                    
    lcd_w_dat(lcd[i]);
    delay(200);
    }
   while(1);             
}
  

void delay1()       
{  
  _nop_();
  _nop_();
  _nop_();
}

void lcd_int()           
{
  lcd_w_cmd(0x3c);               
  lcd_w_cmd(0x0e);               	
  lcd_w_cmd(0x01);               	
  lcd_w_cmd(0x06);               	
  lcd_w_cmd(0x80);               	
}

unsigned char lcd_r_start()          
{
  unsigned char s;
  RW=1;				
  delay1();
  RS=0;
  delay1();
  E=1;					
  delay1();
  s=P1;				
  delay1();
  E=0;
  delay1();
  RW=0;
  delay1(); 
  return(s);			
}

void lcd_w_cmd(unsigned char com)   
{
  unsigned char i;
  do{                           	
    i=lcd_r_start();		
    i=i&0x80;                   	
    delay(2);
     }while(i!=0);	           
  RW=0;
  delay1();
  RS=0;				
  delay1();
  E=1;						
  delay1();
  P1=com;				
  delay1();
  E=0;
  delay1();
  RW=1;
  delay(255);
}

void lcd_w_dat(unsigned char dat)   
{
  unsigned char i;
  do{			             	
    i=lcd_r_start();		
    i=i&0x80; 		     
    delay(2);            
      }while(i!=0);            	
  RW=0;
  delay1();
  RS=1;				
  delay1();
  E=1;						
  delay1();
  P1=dat;				
  delay1();
  E=0;
  delay1();
  RW=1;
  delay(255);
}

void     delay(unsigned int i) 	  
{
  unsigned int k;
	for(k=0;k<i;k++);
}

二、显示屏——显示“工人”


#include <reg51.h>    
#include <intrins.h>   

sbit RS=0xb0;                       	
sbit RW=0xb1;                       	
sbit E=0xb2;                       	

void lcd_w_cmd(unsigned char com);	
void lcd_w_dat(unsigned char dat);	
unsigned char lcd_r_start();       
void lcd_int();		           
void delay(unsigned int i);		
void delay1();				
//功能:显示"工人"

void GONG_ZI()
{
lcd_w_cmd(0x40);                  	//写入第1行CGRAM地址
lcd_w_dat(0x1f);                 	//写入第1行CGRAM数据
lcd_w_cmd(0x41);                 	//写入第2行CGRAM地址
lcd_w_dat(0x1f); 				//写入第2行CGRAM数据
lcd_w_cmd(0x42);                 	//写入第3行CGRAM地址
lcd_w_dat(0x04); 				//写入第3行CGRAM数据
lcd_w_cmd(0x43);                 	//写入第4行CGRAM地址
lcd_w_dat(0x04); 				//写入第4行CGRAM数据
lcd_w_cmd(0x44);                 	//写入第5行CGRAM地址
lcd_w_dat(0x04); 				//写入第5行CGRAM数据
lcd_w_cmd(0x45);                 	//写入第6行CGRAM地址
lcd_w_dat(0x1f); 				//写入第6行CGRAM数据
lcd_w_cmd(0x46);                 	//写入第7行CGRAM地址
lcd_w_dat(0x1f); 				//写入第7行CGRAM数据
lcd_w_cmd(0x47);				//写入第8行CGRAM地址
lcd_w_dat(0x00);				//写入第8行CGRAM数据
}

void REN_ZI()
{
lcd_w_cmd(0x48);                  	//写入第1行CGRAM地址
lcd_w_dat(0x00);               	       //写入第1行CGRAM数据
lcd_w_cmd(0x49);                 	//写入第2行CGRAM地址
lcd_w_dat(0x04); 				//写入第2行CGRAM数据
lcd_w_cmd(0x4A);                 	//写入第3行CGRAM地址
lcd_w_dat(0x04); 				//写入第3行CGRAM数据
lcd_w_cmd(0x4B);                 	//写入第4行CGRAM地址
lcd_w_dat(0x0A); 				//写入第4行CGRAM数据
lcd_w_cmd(0x4C);                 	//写入第5行CGRAM地址
lcd_w_dat(0x0A); 				//写入第5行CGRAM数据
lcd_w_cmd(0x4D);                 	//写入第6行CGRAM地址
lcd_w_dat(0x11); 				//写入第6行CGRAM数据
lcd_w_cmd(0x4E);                 	//写入第7行CGRAM地址
lcd_w_dat(0x11); 				//写入第7行CGRAM数据
lcd_w_cmd(0x4F);				//写入第8行CGRAM地址
lcd_w_dat(0x00);				//写入第8行CGRAM数据
}
void main()					
{
   P1=0xff;                           
   lcd_int();	                   	
   delay(255);
   GONG_ZI();                         	
   REN_ZI();                          	
 lcd_w_cmd(0x81);                   	
   lcd_w_dat(0x00);                   
lcd_w_dat(0x01);                   
   while(1);                          	
}

  

void delay1()       
{  
  _nop_();
  _nop_();
  _nop_();
}

void lcd_int()           
{
  lcd_w_cmd(0x3c);               	
  lcd_w_cmd(0x0e);               	
  lcd_w_cmd(0x01);               	
  lcd_w_cmd(0x06);               	
  lcd_w_cmd(0x80);               	
}

unsigned char lcd_r_start()          
{
  unsigned char s;
  RW=1;				
  delay1();
  RS=0;
  delay1();
  E=1;					
  delay1();
  s=P1;			
  delay1();
  E=0;
  delay1();
  RW=0;
  delay1(); 
  return(s);				
}

void lcd_w_cmd(unsigned char com)   
{
  unsigned char i;
  do{                           	
    i=lcd_r_start();		
    i=i&0x80;                   	
    delay(2);
     }while(i!=0);	           
  RW=0;
  delay1();
  RS=0;				
  delay1();
  E=1;						
  delay1();
  P1=com;				
  delay1();
  E=0;
  delay1();
  RW=1;
  delay(255);
}

void lcd_w_dat(unsigned char dat)   
{
  unsigned char i;
  do{			             
    i=lcd_r_start();		
    i=i&0x80; 		      	
    delay(2);            
      }while(i!=0);           
  RW=0;
  delay1();
  RS=1;			
  delay1();
  E=1;							
  delay1();
  P1=dat;				
  delay1();
  E=0;
  delay1();
  RW=1;
  delay(255);
}

void     delay(unsigned int i) 	   
{
  unsigned int k;
	for(k=0;k<i;k++);
}

三、显示屏:显示英文

#include <reg52.h>                     
#define uint unsigned int
#define uchar unsigned char
sbit	RS=P3^1;
sbit	E=P3^2;
uchar code table[]="I LOVE YOU ZZY";
void delay(ms){
uint i,j;
	for(i=0;i<ms;i++){
	for(j=0;j<123;j++){
	}
 
	}
}
void write_com(uchar com){
	E=0;
	RS=0;
	P0=com;
	delay(5);
	E=1;
	delay(5);
	E=0;
}

void write_data(uchar dat){
	E=0;
	RS=1;
	P0=dat;
	delay(5);
	E=1;
	delay(5);
	E=0;
}

void init(){
    write_com(0x38);
	write_com(0x0c);
	write_com(0x06);
	write_com(0x01);
}

void main(){
	uint i;
	init();
	write_com(0x80+0x40);
	for(i=0;i<16;i++){
	write_data(table[i]);
		delay(5);		
	}while(1);

}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值