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

📄 s51.c

📁 基于51单片机的12232液晶显示源程序
💻 C
字号:
/*******************************************************************
          compiler:	 keil c51
          controller:AT89S51/52    11.0592M晶振
程序功能:122*32点阵式LCD显示 测试实验
版权所有:www.mcudriver.cn
********************************************************************/
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <REG51.H>

/*************************液晶显示地址定义*************************/
sbit LCD_Reset=P1^1;

sbit LCD_RS=P1^3;
sbit LCD_RW=P1^4;
sbit LCD_E1=P1^0;
sbit LCD_E2=P2^2;

unsigned char character[8]={0x00,0x42,0x61,0x51,0x49,0x46,0x00,0x00};//"2"

void pause(void)
{
  unsigned char ptime;
  for(ptime=0;ptime<8;ptime++);
}

void delay(unsigned char tt)
{
  unsigned char tlime;
  unsigned int ptime;
  for(tlime=0;tlime<tt;tlime++)
  {
    for(ptime=0;ptime<1200;ptime++);
  }
}

//左半屏,送命令字函数
void send_dat_left(unsigned char d) 
{
  	LCD_RW=0;//R/W=0
  	LCD_RS=0;//D/I=0

    //LCD_E1=0;
	pause();pause();
  	LCD_E1=1;
  	P3=d;
	pause();pause();pause();pause();
  	LCD_E1=0;pause();
	LCD_E1=1;

}

//左半屏,送数显示函数
void send_dat_disp_left(unsigned char d)
{
  	LCD_RW=0;
  	LCD_RS=1;

  	//LCD_E1=0;
	pause();pause();
  	LCD_E1=1;
    P3=d;
	pause();pause();
	LCD_E1=0; pause();
	LCD_E1=1;
}

//右半屏,送命令字函数
void send_dat_right(unsigned char d)
{
  	LCD_RW=0;//R/W=0
  	LCD_RS=0;//D/I=0

  	LCD_E2=0;
	pause();pause();pause();pause();
  	LCD_E2=1;
  	P3=d;
	pause();pause();pause();pause();
  	LCD_E2=0;pause();pause();pause();LCD_E2=1;

}

//右半屏,送数显示函数
void send_dat_disp_right(unsigned char d)
{
  	LCD_RW=0;
  	LCD_RS=1;

  	LCD_E2=0;
	pause();pause();pause();pause();
  	LCD_E2=1;
    P3=d;
	pause();pause();pause();pause();
	LCD_E2=0;pause();pause();pause();LCD_E2=1;
}


unsigned char CMDCODE,DAT;
void sed1520_init(void)
{
	CMDCODE=0xE2;send_dat_left(CMDCODE);send_dat_right(CMDCODE); //RESET
	// CMDCODE=0xA4;printmcmd();printscmd(); //NORMAL DRIVE
	CMDCODE=0xA9;send_dat_left(CMDCODE);send_dat_right(CMDCODE); // DUTY=1/32
	// CMDCODE=0xA0;printmcmd();printscmd(CMDCODE); //select ADC
	CMDCODE=0xD0;send_dat_left(CMDCODE);send_dat_right(CMDCODE); //START LINE
	CMDCODE=0xAF;send_dat_left(CMDCODE);send_dat_right(CMDCODE); //DISP ON
}


void led_disptl(unsigned char *p)
{ 
    unsigned char i;
  	unsigned char ch;
    for(i=0;i<8;i++) {
       ch=*p; 
       p++;
       send_dat_disp_left(ch);
	   send_dat_disp_right(ch);
	}
}


//122*32液晶屏测试函数:
void lcd122x32test(void)
{
	unsigned int i,j;
	pause();pause();pause();
	
	//满屏幕显示,左半屏显示点,右半屏显示横杠
	for(i=0;i<4;i++)
	{
	  CMDCODE=0xB8|i;send_dat_left(CMDCODE);send_dat_right(CMDCODE);
	  CMDCODE=0x00;send_dat_left(CMDCODE);send_dat_right(CMDCODE);
	  for(j=0;j<122;j++) {CMDCODE=j;send_dat_left(CMDCODE);send_dat_right(CMDCODE);
	  DAT=0x55;  send_dat_disp_left(DAT);send_dat_disp_right(DAT);}
	}
	
	for(i=0;i<4;i++)
	{
	  CMDCODE=0xB8|i;send_dat_left(CMDCODE);send_dat_right(CMDCODE);
	  CMDCODE=0x00;send_dat_left(CMDCODE);send_dat_right(CMDCODE);
	  for(j=0;j<61;j=j+2) {CMDCODE=j;send_dat_left(CMDCODE);send_dat_right(CMDCODE);
	  DAT=0xff;  send_dat_disp_left(DAT);send_dat_disp_right(DAT);
	  DAT=0x00;  send_dat_disp_left(DAT);send_dat_disp_right(DAT);}
	}
		
	for(i=0;i<4;i++)
	{
	  CMDCODE=0xB8|i;send_dat_left(CMDCODE);send_dat_right(CMDCODE);
	  CMDCODE=0x00;send_dat_left(CMDCODE);send_dat_right(CMDCODE);
	  for(j=0;j<61;j=j+2) {CMDCODE=j;send_dat_left(CMDCODE);send_dat_right(CMDCODE);
	  DAT=0x55;  send_dat_disp_left(DAT);send_dat_disp_right(DAT);
	  DAT=0xaa;  send_dat_disp_left(DAT);send_dat_disp_right(DAT);}
	}
		
	//显示4个字符2:
	CMDCODE=0xB8|2;send_dat_left(CMDCODE);
    CMDCODE=0x00;send_dat_left(CMDCODE);  	
    led_disptl(character);  led_disptl(character);
    led_disptl(character);  led_disptl(character);
}

void main(void)
{  
  delay(10); 
  LCD_Reset=0;
  delay(40);    
  LCD_Reset=1;   delay(20); 

  sed1520_init();
  delay(10);
  lcd122x32test();

  while(1)
  {

  }
   

}

⌨️ 快捷键说明

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