×
单片机 > 单片机程序设计 > 详情

LCD1602显示C语言

发布时间:2020-06-04 发布时间:
|

//**********定义与声明******************* 
#include

IC.h> 
#define uchar unsigned char 
#define uint unsigned int 
#define E RE2 
#define RS RB4

uchar i,num,byte,ys; 

uchar const table[]="  Shan qing gong  ";          //为什么2009前面要空开两个才能显示后空开1个儿呢?这个定义要小心!一定要用uchar const,不要丢了uchar,也不要用code 
uchar const table1[]=" tong xin 06-2 ";    //4第二数组定义初值 
void LCD_init(void); 
void writecom(char); 
void writEDAta(char); 

void delay(uint z)   //5延迟函数常用 

        uint x,y; 
        for(x=z;x>0;x--) 
                for(y=110;y>0;y--); 


//***************主函数***************** 
void main() 

lcd_init(); 

   while(1) 
    { 
      ; 
    
    } 

//*******lcd initial***************关于LCD的初始化 
void lcd_init() 

TRISB=0x00; 
TRISE=0x00; 
PORTB=0X00; 
writecom(0x28);     //将LCD设置成4为数据方式,两行显示,5*7点阵 
writecom(0x0C);     //显示控制:打开显示, 
writecom(0x06);     //设置输入模式 
writecom(0x01);     //清LCD 
     writecom(0x80); 
       for(num=0;num<16;num++)  //循环 
                { 
                        writedata(table[num]); 
             
                        delay(1); 
                } 
        writecom(0x80+0x40);  //11液晶显示第二行时分秒 
        for(num=0;num<15;num++) 
                { 
                        writedata(table1[num]); 
          
                        delay(1); 
                } 

//********写命令控制***************** 
void writecom(char i) 

byte=i; 
i=i>>4; 
PORTB=i; 
RS=0; 
E=1; 
for(ys=10;ys>0;ys--); 
E=0; 

PORTB=byte; 
RS=0; 
E=1; 
for(ys=10;ys>0;ys--); 
E=0; 

//********写数据控制***************** 
void writedata(char i) 

byte=i; 
i=i>>4; 
PORTB=i; 
RS=1; 
E=1; 
for(ys=10;ys>0;ys--); 
E=0; 

PORTB=byte; 
RS=1; 
E=1; 
for(ys=10;ys>0;ys--); 
E=0; 
}


四条数据线输入:DB4—RB0,DB5—RB1,DB6—RB2,DB7—RB3 
寄存器选择RS接RB4,为"L"指令寄存器,为"H"数据寄存器 
读写使能控制线E,接RE2,每当E线向LCD模块发送一个正脉冲,LCD模块与 单片机 之间将进行一次数据交换; 




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法