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

📄 lcd_128.c

📁 本程序包是我一年 来开发AVR单片机用过的成熟子程序
💻 C
字号:
主程序:

/************************************************************ 
   LCD采用HD61202,128x64
   控制单片机ATMage8L 8MHz
   2003.12.5 huxiangming.
************************************************************/

#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#include "hz.h"


/*LCD引脚定义 PB0-7对应LCD DB0-DB7*/
#define CS1 PORTC.2
#define CS2 PORTC.3
#define RS PORTC.4
#define RW PORTC.5
#define E PORTD.4


void LCD_NOP(void)
{
unsigned char i;
for(i=0;i<50;i++); 
}
void Delay(int x)
{
int i,j;
for(j=0;j<x;j++){
  for(i=0;i<250;i++);
}
}


//LCD左半屏写命令字
void LCD_Write_ComL(unsigned char x)
{ 
  CS1=0;CS2=1;LCD_NOP();
  RS=0;
  E=1;LCD_NOP();
  RW=0;
  PORTB=x;
  E=1;
  E=0;
  CS1=1;CS2=1;
}

//LCD左半屏写数据
void LCD_Write_DatL(unsigned char x)
{ 
  CS1=0;CS2=1;LCD_NOP();
  RS=0;
  E=1;LCD_NOP();
  RS=1;
  RW=0;
  PORTB=x;
  E=1;
  E=0;
  CS1=1;CS2=1;
}

//LCD右半屏写命令字
void LCD_Write_ComR(unsigned char x)
{ 
  CS1=1;CS2=0;LCD_NOP();
  RS=0;
  E=1;LCD_NOP();
  RW=0;
  PORTB=x;
  E=1;
  E=0;
  CS1=1;CS2=1;
  
}      

//LCD右半屏写数据
void LCD_Write_DatR(unsigned char x)
{ 
  CS1=1;CS2=0;LCD_NOP();
  RS=0;
  E=1;LCD_NOP();
  RS=1;
  RW=0;
  PORTB=x;
  E=1;
  E=0;
  CS1=1;CS2=1;
  
}

//LCD初始化
void LCD_Init(void)
{  
  LCD_Write_ComL(0x3e);LCD_Write_ComR(0x3e);
  LCD_Write_ComL(0x3f);LCD_Write_ComR(0x3f);
  LCD_Write_ComL(0xc0);LCD_Write_ComR(0xc0);
}


//LCD清屏
void LCD_Clr(void)
{
unsigned char i,j;

for(j=0;j<8;j++){
  LCD_Write_ComL(0xb8|j);  
  LCD_Write_ComL(0x40);
  LCD_Write_ComR(0xb8|j);  
  LCD_Write_ComR(0x40);
  for(i=0;i<64;i++){
    LCD_Write_DatL(0x00);  
    LCD_Write_DatR(0x00); 
  }
}
}

//显示8x16字符,位置按8x8一个点来定  x:列坐标  y:行坐标  chrx:显示字符
LCD_WrCHr8x16(unsigned char x,unsigned char y,unsigned char chrx){
unsigned char i;
unsigned int chr_m;
chr_m=chrx;
chr_m=chr_m*16;
if(y>=8){
        y=y-8;
        LCD_Write_ComR(0xb8|x);  
  LCD_Write_ComR(0x40|y<<3); 
  for(i=0;i<8;i++){
    LCD_Write_DatR(Ezk[chr_m+i]);  
  }
  LCD_Write_ComR(0xb9|x);  
  LCD_Write_ComR(0x40|y<<3);
  for(i=8;i<16;i++){
    LCD_Write_DatR(Ezk[chr_m+i]); 
  }
}else{
LCD_Write_ComL(0xb8|x);  
  LCD_Write_ComL(0x40|y<<3); 
  for(i=0;i<8;i++){
    LCD_Write_DatL(Ezk[chr_m+i]);  
  }
  LCD_Write_ComL(0xb9|x);  
  LCD_Write_ComL(0x40|y<<3);
  for(i=8;i<16;i++){
    LCD_Write_DatL(Ezk[chr_m+i]); 
  }
  }

}

//显示16x16字符,位置按8x8一个点来定  x:列坐标  y:行坐标  chrx:显示字符*/    
LCD_WrCHr16x16(unsigned char x,unsigned char y,unsigned char chrx){
unsigned char i;
unsigned int chr_m;
chr_m=chrx;
chr_m=chr_m*32;
if(y>=8){
        y=y-4;
LCD_Write_ComR(0xb8|x);  
  LCD_Write_ComR(0x40|y<<3); 
  for(i=0;i<8;i++){
    LCD_Write_DatR(Hzk[chr_m+i]);  
  }

LCD_Write_ComR(0xb8|x);  
  LCD_Write_ComR(0x48|y<<3); 
  for(i=8;i<16;i++){
    LCD_Write_DatR(Hzk[chr_m+i]);  
  }

  LCD_Write_ComR(0xb9|x);  
  LCD_Write_ComR(0x40|y<<3);
  for(i=16;i<24;i++){
    LCD_Write_DatR(Hzk[chr_m+i]); 
  }
  LCD_Write_ComR(0xb9|x);  
  LCD_Write_ComR(0x48|y<<3);
  for(i=24;i<32;i++){
    LCD_Write_DatR(Hzk[chr_m+i]); 
  }
       
}else{
LCD_Write_ComL(0xb8|x);  
  LCD_Write_ComL(0x40|y<<3); 
  for(i=0;i<8;i++){
    LCD_Write_DatL(Hzk[chr_m+i]);  
  }

LCD_Write_ComL(0xb8|x);  
  LCD_Write_ComL(0x48|y<<3); 
  for(i=8;i<16;i++){
    LCD_Write_DatL(Hzk[chr_m+i]);  
  }

  LCD_Write_ComL(0xb9|x);  
  LCD_Write_ComL(0x40|y<<3);
  for(i=16;i<24;i++){
    LCD_Write_DatL(Hzk[chr_m+i]); 
  }
  LCD_Write_ComL(0xb9|x);  
  LCD_Write_ComL(0x48|y<<3);
  for(i=24;i<32;i++){
    LCD_Write_DatL(Hzk[chr_m+i]); 
  }

  }

}



//主程序
void main(void)
{
unsigned int i;
DDRB=0xff;PORTB=0x00;
DDRC=0xff;PORTC=0x00;
DDRD=0x18;
//#asm("wdr");
  
//#asm("SEI");    //开总中断
Delay(200);

LCD_Init(); //LCD初始化
LCD_Clr();     //LCD清屏

Delay(200);Delay(200); 

for(i=0;i<8;i++) LCD_WrCHr8x16(0,i,i); //第一行显示8x16西文字
for(i=0;i<8;i++) LCD_WrCHr16x16(2,i*2,i);      //第二行显示16x16中文字符   
 
for(i=0;i<8;i++) LCD_WrCHr16x16(4,i*2,i+16); //第三行显示16x16中文字
for(i=0;i<8;i++) LCD_WrCHr16x16(6,i*2,i+24); //第四行显示16x16中文字



while(1){
}   



}



⌨️ 快捷键说明

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