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

📄 12232.c

📁 12232液晶模块的应用
💻 C
字号:



#include"avr/io.h"
void write_command(unsigned char command);
void write_data(unsigned int data);
void delayMs( int x);
void delayUs(int x);
void Initi();
void read_busy();
void write_data_b(unsigned char data);
#define RS_H  PORTD=PORTD|0X4//RS=PD4
#define RS_L  PORTD=PORTD&0XFB
#define RW_H  PORTD=PORTD|0X8//RW=PD3
#define RW_L  PORTD=PORTD&0XF7
#define E_H  PORTD=PORTD|0X10//E=PD2
#define E_L  PORTD=PORTD&0XEF
#define OUT_DATA DDRC=0XFF,DDRD=DDRD|0XC0
#define IN_DATA DDRC=0,DDRD=DDRD&0X3F

unsigned char display_bit[3][9]={	
									{0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,},
									{0,0X80,0X81,0X82,0X83,0X84,0X85,0X86,0X87,},
								    {0,0X90,0X91,0X92,0X93,0X94,0X95,0X96,0X97,}
									
																				};
unsigned int display[16]; //={
						  //0XCFC3,0XC3C5,0XD3EE,0XC1FA,0X2020,0X2020,0X2020,0X2020,
						  //0X2020,0X2020,0X2020,0X2020,0X2020,0XC0EE,0XBBAA,0X0120,};



int main()
	{	
		unsigned char s,S1=1,S2=1,S3=0;
		DDRD=DDRD|0X1C;
		DDRB=1;
		PORTB=0xfe;	
		Initi();



		while(1)
		{

		display[0]=0XCFC3;
		display[1]=0XC3C5;
		display[2]=0XD3EE;
		display[3]=0XC1FA;
		display[4]=0XBBFA;
		display[5]=0XD0B5;	
		display[6]=0X2020;
		display[7]=0X2020;
		display[8]=0X2020;
		display[9]=0X2020;
		display[10]=0X2020;
		display[11]=0X2020;	
		display[12]=0X2020;
		display[13]=0XC0EE;
		display[14]=0XBBAA;
		display[15]=0X0200;
		for(s=16;s>0;--s)
						{
							read_busy();
							write_command(display_bit[S1][S2]);	//写地址
							read_busy();
							write_data(display[S3]);//写数据
							++S2;
							++S3;
							if(S2==9){
										S2=1;
										++S1;
										if(S1==3)S1=1;
								  	 };
							if(S3==16)S3=0;

						};//for(s=8;s>0;--s)
	
		}//while(1)

	}//main()





void write_command(unsigned char command)
	{
 				 
  		OUT_DATA;			
  		RS_L;RW_L;E_H ;			
   		PORTC=command;	
  		PORTD=command&0XC0;
   		E_L	;	
					
 	}//write_command(unsigned char command)


void write_data(unsigned int data)
	{
 	       
		unsigned char d=0;	  
 		 OUT_DATA;				
 		 RS_H;RW_L;	E_H;
		 d=data>>8;					 					
 		 PORTC=d;				
 		 PORTD=d&0XC0;										 									 
 		 E_L;		
 		 read_busy();
		 OUT_DATA;
		 RS_H;RW_L;	E_H;
		 d=data;					 					
 		 PORTC=d;				
 		 PORTD=d&0XC0;										 									 
  		 E_L;
									 									   								
	}//write_data(unsigned char data)

void write_data_b(unsigned char data)
	{

		OUT_DATA;
		RS_H;RW_L;	E_H;
						 					
 		PORTC=data;				
 		PORTD=data&0XC0;										 									 
  		E_L;
									 									   								
	}//write_data(unsigned char data)

void read_busy()
	{ 
	
		unsigned char bsy;
 	 	IN_DATA;
 	 do
		{
		    RW_H;
 			RS_L;
 			E_H;
			busy=PIND&0X50;
	
  		 }
  while(busy==0x80);
 }//void read_busy()


void delayMs(int x)
	{
		unsigned int i;
		while(x--)
			{
				for(i=0;i<1000;i++);
			}
	}   //delayMs(unsigned int a)

void delayUs(int x)
	{
		
		while(x--);
			
	}   //delayMs(unsigned int a)


⌨️ 快捷键说明

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