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

📄 smc1601.c

📁 SMC1601.C SMC1601或SMC1602液晶用的人很多
💻 C
字号:
//lcd液晶显示器的使用
/*线路图
 89C58RD+             lcd
--------
        |     8
DataPort.0-1.7|=========== D0-7
        |
    P3.0|----------- RS
    P3.1|----------- R/W
    P3.2|----------- E
        |         -- /CS
        |         |
        |        ---
        |  
  RESET	|
--------
*/
#include <reg52.h>
#include<intrins.h>
#define DataPort P1						// 数据端口
sbit lcd_E  = P3^2;						//E	
sbit lcd_RW = P3^1;						//RW
sbit lcd_RS = P3^0;						//RS
#define Busy	0x80						//LCD_RAM Addriess
#define  L 0								//L代表O
#define  H 1								//H代表1
unsigned char x=0;							//x轴显示内容
unsigned char y=0;							//y轴显示位
unsigned char a;
unsigned char lcd_word[]="HelloWangJianBin!";
///////////////函数声名/////////////////////////////////
void lcd_busy();						//忙检测	
void delay5ms();						//5MS延时
void delay400ms();						//400MS延时
void nop();								//空操作延时
void lcd_reset();						//LCD复位1
void lcd_display();//LCD显示,里面包LCD寻址数据
void lcd_data();						//LCD数据
void lcd_address();						//LCD寻址
void WaitForEnable();
////////////////////////////////////////////////
void main(){
	lcd_reset();
	while(1){
//	lcd_reset();
	delay400ms();
	lcd_display();	
	delay400ms();							//主程序就是一个死循环		
	delay400ms();
	}
}



/////////////////////////////////////////////////////
void lcd_reset(){                       //复位
	unsigned char n;
	delay5ms();
	delay5ms();
	delay5ms();
	
	for(n=3;n>0;n--){
		a=0x38;
		lcd_address();
		delay5ms();
		}
	a=0x08;
	lcd_busy();
	lcd_address();
	a=0x01;
	lcd_busy();
	lcd_address();
	a=0x06;
	lcd_busy();
	lcd_address();
	a=0x0c;
	lcd_busy();
	lcd_address();

}




void lcd_busy() {
	DataPort = 0xff;
	lcd_RS =0; 
	lcd_RW = 1;
	 nop();	
	lcd_E = 1;
	 nop();
	 nop();
	while( DataPort & Busy );
	lcd_E = 0;
}	



void lcd_display(){			//显示
//	y=0x47;
	a=y|0x80;
	if(y>=0x9){
		a=0x80|(y+0x37);
	}
	if(y>=0xc7){y=0;};
	y++;
	P0=a;
	lcd_address();			//地址
	delay400ms();
	if (x>=16){
		x=0;}
	a=lcd_word[x];
	lcd_data();				//数据
	x++;
	delay400ms();
}


void lcd_data(){
	lcd_busy();
	lcd_RS=H;
	lcd_RW=L;
	nop();
	DataPort=a;
	nop();
	lcd_E=H;
	nop();
	lcd_E=L;
	
}

void lcd_address(){
	lcd_busy();
	lcd_RS=L;
	lcd_RW=L;
	DataPort=a;
	lcd_E=H;
	nop();
	lcd_E=L;
	
}


void delay5ms() {
unsigned int i = 5552;
    while(i--);
}

void nop(){
	unsigned char i=5;
	while(i--);
	}

void delay400ms(){
 	unsigned int  i = 100;
    int  j;
    while(i--);
		{
			j=7269;
			while(j--);
		}
}

⌨️ 快捷键说明

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