part2.5_3.c

来自「新概念51单片机C语言教程.入门、提高、开发」· C语言 代码 · 共 121 行

C
121
字号
#include <REG52.h> 
#define uint unsigned int 
#define uchar unsigned char
sbit CS=P1^2; 
sbit SID=P1^1; 
sbit SCLK=P1^0;
uchar code disps[]={"I LOVE MCU!"};
uchar code dispx[]={"我爱单片机!"};

void delay_1ms(uint x) 
{ 
uint i,j; 
for(j=0;j<x;j++)  
	for(i=0;i<110;i++); 
}
void send_command(uchar command_data) 
{ 
	uchar i; 
	uchar i_data;
	i_data=0xf8; 
	CS=1; 
	SCLK=0; 
	for(i=0;i<8;i++) 
		{ 
			SID=(bit)(i_data&0x80); 
			SCLK=0; 
			SCLK=1; 
			i_data=i_data<<1; 
		} 
	i_data=command_data; 
	i_data&=0xf0;
	for(i=0;i<8;i++) 
		{ 
			SID=(bit)(i_data&0x80); 
			SCLK=0; 
			SCLK=1; 
			i_data=i_data<<1; 
		} 
	i_data=command_data; 
	i_data<<=4;
	for(i=0;i<8;i++) 
		{ 
			SID=(bit)(i_data&0x80); 
			SCLK=0; 
			SCLK=1; 
			i_data=i_data<<1; 
		} 
	CS=0; 
	delay_1ms(10); 
} 
void send_data(uchar command_data) 
{ 
	uchar i; 
	uchar i_data;
	i_data=0xfa;  
	CS=1; 
	for(i=0;i<8;i++) 
		{ 
			SID=(bit)(i_data&0x80); 
			SCLK=0; 
			SCLK=1; 
			i_data=i_data<<1;  
		} 
	i_data=command_data; 
	i_data&=0xf0; 
	for(i=0;i<8;i++) 
		{ 
			SID=(bit)(i_data&0x80); 
			SCLK=0; 
			SCLK=1; 
			i_data=i_data<<1; 
		} 
	i_data=command_data;
	i_data<<=4; 
	for(i=0;i<8;i++) 
		{ 
			SID=(bit)(i_data&0x80); 
			SCLK=0; 
			SCLK=1; 
			i_data=i_data<<1; 
		} 
	CS=0; 
	delay_1ms(10);  
}
void lcd_init() 
{ 
	delay_1ms(100); 
	send_command(0x30); /*设置8位数据接口,基本指令模式。*/ 
	send_command(0x02); /*清DDRAM*/ 
	send_command(0x06); /*游标及显示右移一位*/  
	send_command(0x0c); /*整体显示开,游标关,反白关*/ 
	send_command(0x01); /*写入空格清屏幕*/ 
	send_command(0x80); /*设定首次显示位置*/ 

}
void display_s()
{
	uchar a;
	send_command(0x80);
	for(a=0;a<11;a++)
	{
		send_data(disps[a]);		
	}
}
void display_x() 
{ 
	uchar a;
	send_command(0x92);
	for(a=0;a<11;a++)
	{
		send_data(dispx[a]);		
	} 
}
main() 
{ 
	lcd_init(); 
	display_s();
	display_x(); 
	while(1); 
}

⌨️ 快捷键说明

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