本代码为51单片机控制LCD1602显示屏和一些外设的驱动代码。主要功能包括:初始化LCD1602、写命令和写数据、在指定坐标显示指定字符、延时函数等。其中,还定义了一些宏定义和一些常量数组,用于方便地调用和显示内容。具体解释如下:

  1. 头文件

#include <reg52.h>

引入51单片机的头文件

  1. 宏定义

#define uc unsigned char #define ui unsigned int

定义uc为unsigned char类型,ui为unsigned int类型

  1. 引脚定义

sbit RS=P1^4; //LCD1602数据命令选择引脚 sbit RW=P1^5; //LCD1602读写选择引脚 sbit E=P1^6; //LCD1602使能引脚 sbit D0=P1^3; //上升按键 sbit D1=P1^2; //下降按键 sbit D2=P1^1; //模式切换 sbit D3=P1^0; //光敏识别引脚 sbit bg_1602=P2^6; //LCD1602背光引脚 sbit key=P3^3; //应答按键 sbit Beep=P3^4; //蜂鸣器

定义各个引脚的功能,方便后面的调用

  1. 数组定义

uc code tab0[]=" 123456789#"; //显示几号的码表 uc code tab1[]="Calling!!!"; //显示呼叫的码表 uc code tab2[]="I Know!"; //显示相应的码表 uc code tab3[]="Happy Every Day!"; //显示开心快乐每一天的码表 uc num_D0=0,num_D1=0,num_D2=0,num_D3=0; //床号 bit bdata fu_D0=0, fu_D1=0, fu_D2=0, fu_D3=0,flag; //初始床号

定义了一些常量数组和变量,例如显示字符的码表数组,床号变量等。

  1. 延时函数

void delay(ui x) //延时函数 { ui i,j; for(i=0;i<x;i++) for(j=0;j<121;j++); //为1ms的延时函数 }

延时函数,用于控制各个功能的时间,并且根据不同的延时时间可以实现不同的效果。

  1. 初始化函数

void init() //初始化函数 { bg_1602=0; //开启背光 TMOD=0x01; //定时器0工作方式1 TH0=0x4b; TL0=0xff; //赋初值 EA=1; //开总中断 ET0=1; //定时器中断开 TR0=1; //定时器0中断开 D0=0; D1=0; D2=0; D3=0; //清零床号引脚 }

初始化函数,用于初始化各个外设和寄存器,包括LCD1602、定时器和床号等。

  1. LCD1602控制函数

void com_1602(uc com) //写命令 { RS=0; P0=com; delay(1); E=1; delay(1); E=0; RS=1; }

void data_1602(uc date) //写数据 { RS=1; P0=date; delay(1); E=1; delay(1); E=0; RS=0; }

void dis_1602(uc word_num,uc hang,uc lie,uc tab_num,uc num) /word_num:显示字符个数,hang,lie:显示坐标,** tab_num:显示数组号,num:从第几字符开始显示*/ { uc n; for(n=0;n<word_num;n++) { com_1602(0x80+hang*0x40+lie); if(tab_num==0) data_1602(tab0[num+n]); else if(tab_num==1) data_1602(tab1[num+n]); else if(tab_num==2) data_1602(tab2[num+n]); else if(tab_num==3) data_1602(tab3[num+n]); delay(5); lie++; } }

void init_1602() //初始化1602 { RW=0; //写命令 com_1602(0x38);//设置1602 com_1602(0x0c);//设置显示,光标不闪烁 com_1602(0x06);//不移动,指针加1 com_1602(0x01);//清屏 }

LCD1602控制函数,包括写命令、写数据、在指定坐标显示指定字符、初始化1602等函数。其中,dis_1602函数用于根据传入的参数在LCD1602上显示指定的字符,包括显示字符个数、显示坐标、显示数组号和从第几个字符开始显示等。而init_1602函数用于初始化LCD1602。

解释代码#include reg52h		头文件 #define uc unsigned char #define ui unsigned int	 宏定义 sbit RS=P1^4;	 sbit RW=P1^5; sbit E=P1^6;			这3个是1602引脚定义 sbit D0=P1^3;	上升按键 sbit D1=P1^2;	下降按键 sbit D2=P1^1;	模式切换 s

原文地址: https://www.cveoy.top/t/topic/bmnz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录