GPIO 发表于 2023-1-17 09:28:44

C51/STC12系列单片机 LCD1602液晶显示屏的驱动程序源码 实现显示字母与数字与特殊符号


#include "STC12C5A60S2.h"                //根据单片机系列改头文件 晶振频率:12Mhz
#include "intrins.h"
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long

#define Port P2
sbit RS = P0 ^ 7;
sbit RW = P0 ^ 6;
sbit E = P0 ^ 5;

u8 *lcd1602_text = "Hello World!2023 Happy New Year!";                //显示的字符 (固定32字节)


void delay(u16 i){                //延时
        while(i--);
}

bit lcd1602_busy(){                //查忙
        bit ret;
        RS = 0;delay(100);
        RW = 1;delay(100);
        E = 1;delay(100);
        ret = (Port&0x80) ? 1 : 0;delay(100);
        E = 0;delay(100);
        return ret;
}

void lcd1602_com(u8 com){                //地址
        while(lcd1602_busy());
        RS = 0;delay(100);
        E = 0;delay(100);
        RW = 0;delay(100);
        Port = com;delay(100);
        E = 1;delay(100);
        E = 0;delay(100);
}

void lcd1602_dat(u8 dat){                //数据
        while(lcd1602_busy());
        RS = 1;delay(100);
        RW = 0;delay(100);
        E = 0;delay(100);
        Port = dat;delay(100);
        E = 1;delay(100);
        E = 0;delay(100);
}
void lcd1602_init(){                //初始化
        lcd1602_com(0x38);delay(50);
        lcd1602_com(0x38);delay(50);
        lcd1602_com(0x38);delay(50);
        lcd1602_com(0x0C);delay(50);
        lcd1602_com(0x06);delay(50);
        lcd1602_com(0x01);delay(50);
        delay(600);
}
void main(){                //主函数
        u8 i;
        lcd1602_init();
        lcd1602_com(0x80);
        for(i=0;i<32;i++){
                if(i == 16) lcd1602_com(0xC0);
                lcd1602_dat(lcd1602_text);
        }
        while(1);
}
页: [1]
查看完整版本: C51/STC12系列单片机 LCD1602液晶显示屏的驱动程序源码 实现显示字母与数字与特殊符号