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

📄 lcd.c

📁 实现1602液晶的初始化与显示
💻 C
字号:

#include <iom128v.h>


#define LCD_DATA PORTB     //8位数据联接在PORTB上
#define CLR_RS PORTD&=~1//RS清0
#define SET_RS PORTD|=1 //RS置1
#define CLR_E PORTD&=~(1<<2)  //E清0
#define SET_E PORTD|=1<<2 //E置1
#define uchar unsigned char
#define uint unsigned int
//配置端口
void port_init(void)
 {
//DDRE=0X0;
 
 DDRB  = 0xFF;
 PORTB = 0xFF;
 
 DDRD  = 0xFF;
 PORTD = 0x00;
 
    //DDRE = 0xFF;      //定义C口为输出
	//PORTE = 0x00;           //开背光:接在PC7
 }
//延时函数:入口i,单位mS,最大65536mS
void delay_ms(uint i)
    {
    uint a;
    for(;i;i--)
  {
  for(a=150;a!=0;a--)      //针对时钟频率为1M
   {;}
  }
    }
//写数据到LCD的函数
void lcd_da(uchar data)
 {
 SET_RS;       //RS置高,写数据
 delay_ms(1);
 SET_E;
 LCD_DATA = data;
 delay_ms(1);
 CLR_E;
 delay_ms(1);    //延时5MS
 } 
//写指令到LCD的函数
void lcd_comm(uchar data)
 {
 CLR_RS;       //RS清0,写指令
 delay_ms(1);    //延时5MS
 SET_E;
 LCD_DATA = data;
 delay_ms(1);
 CLR_E;
 delay_ms(1);    //延时5MS
 } 
//显示字符串函数:入口:待显示的字符串
void lcd(char *s)
    {
 while(*s)
     {
  lcd_da(*s);
  s++;
  }
 }
 
//清屏指令函数
void cls(void)
    {
 lcd_comm(0x01);
 delay_ms(5);
 }
//定位指令函数
void locate(uchar a,uchar b)
    {
 uchar x;
 if(a==1)
     x=0x80+b-1;
 if(a==2)
     x=0xC0+b-1;
 lcd_comm(x);
 delay_ms(1);
 }
//LCD初始化函数
void lcd_init(void)
 {
 lcd_comm(0x38);    //写指令:8位数据、2行显示、5*8点阵
 delay_ms(5);
 lcd_comm(0x06);    //写指令:自左向右显示
 delay_ms(5);
 lcd_comm(0x0C);    //写指令:显示开
 delay_ms(5);
 //lcd_comm(0x80);    //写指令:第1行地址
 //delay_ms(5);  
 lcd_comm(0x01);    //写指令:CLS
 }
 
 
void main()
 {
 uint i,j;
port_init();
lcd_init();

  for(i=1;i<16;i++)
  {
locate(1,i);
delay_ms(15);
lcd("dzflovelyl");
delay_ms(95);
cls();
}

 for(j=1;j<16;j++)
  {
locate(2,j);
delay_ms(15);
lcd("dzflovelyl");
delay_ms(95);
cls();
}
locate(2,1);

lcd("dzflovelyl");



 }

⌨️ 快捷键说明

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