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

📄 cs22-1.c

📁 《手把手教你学单片机的C程序设计》及实验程序
💻 C
字号:
#include <REG51.H>		
#include<INTRINS.H>
#define uchar unsigned char
#define uint unsigned int	
#define DataPort P0		
sbit LCM_RS=P2^0;		
sbit LCM_RW=P2^1;		
sbit LCM_EN=P2^2;		
uchar code str0[]={"-This is a LCD-!"};
uchar code str1[]={"-Design by ZXH-!"};
uchar code str2[]={"                "};
/*******************************/
void delay(unsigned int k)	
{						
unsigned int i,j;				
for(i=0;i<k;i++){			
for(j=0;j<121;j++)			
{;}}						
}
/*******************************/
void WaitForEnable(void)	
{					
DataPort=0xff;		
LCM_RS=0;LCM_RW=1;_nop_();
LCM_EN=1;_nop_();_nop_();
while(DataPort&0x80);	
LCM_EN=0;				
}					
/*******************************/
void WriteCommandLCM(uchar CMD,uchar Attribc)
{					
if(Attribc)WaitForEnable();	
LCM_RS=0;LCM_RW=0;_nop_();
DataPort=CMD;_nop_();	
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}					
/*******************************/
void WriteDataLCM(uchar dataW)
{					
WaitForEnable();		
LCM_RS=1;LCM_RW=0;_nop_();
DataPort=dataW;_nop_();	
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}		
/***********************************/
void InitLcd()				
{				
WriteCommandLCM(0x38,1);	
WriteCommandLCM(0x08,1);	
WriteCommandLCM(0x01,1);	
WriteCommandLCM(0x06,1);	
WriteCommandLCM(0x0c,1);	
}			
/***********************************/
void DisplayOneChar(uchar X,uchar Y,uchar DData)
{						
Y&=1;						
X&=15;						
if(Y)X|=0x40;					
X|=0x80;			
WriteCommandLCM(X,0);		
WriteDataLCM(DData);		
}						
/***********************************/
void DisplayListChar(uchar X,uchar Y,uchar code *DData)
{
uchar ListLength=0; 
Y&=0x1;                
X&=0xF;                
while(X<=15)             
{                       
DisplayOneChar(X,Y,DData[ListLength]);
ListLength++;           
X++;                 
}                     
}                     
/***********************************/
void main(void)			
{				
char i,m;			
delay(500);			
InitLcd();			
/*******从右移到显示屏*********************/
for(i=15;i>=0;i--)		
{				
WriteCommandLCM(0x01,1);	
DisplayOneChar(i,0,0x20);	
DisplayListChar(i,0,str0);	
DisplayListChar(i,1,str1);	
delay(200);			
}				
delay(2800);			
/************向右退出显示屏*************/
for(i=0;i<16;i++)		
{				
WriteCommandLCM(0x01,1);	
DisplayOneChar(i,0,0x20);	
DisplayListChar(i,0,str0);	
DisplayListChar(i,1,str1);	
delay(200);			
}				
WriteCommandLCM(0x01,1);	
delay(3000);			
/********闪烁5次***********************/
for(i=0;i<10;i++)		
{				
WriteCommandLCM(0x01,1);	
delay(500);			
DisplayListChar(0,0,str0);	
DisplayListChar(0,1,str1);	
delay(500);			
i++;				
}				
delay(3000);			
/***************************************/
while(1)			
{				
/********从右移到显示屏**************************/
for(i=15;i>=0;i--)	
{			
WriteCommandLCM(0x01,1);
DisplayOneChar(i,0,0x20);
DisplayListChar(i,0,str0);
DisplayListChar(i,1,str1);
delay(200);		
}			
/***********向左退出显示屏************************/
for(i=1;i<16;i++)		
{				
m=16-i;				
WriteCommandLCM(0x01,1);	
DisplayOneChar(0,0,0x20);	
DisplayListChar(0,0,&str0[i]);	
DisplayListChar(0,1,&str1[i]);	
DisplayListChar(m,0,str2);	
DisplayListChar(m,1,str2);	
delay(200);			
}				
WriteCommandLCM(0x01,1);	
delay(200);			
}				
}				

⌨️ 快捷键说明

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