代码翻译#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; 模式切换 sbit
#include <reg52.h> //头文件 #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; //模式切换 sbit D3=P1^0; //光敏识别引脚 sbit bg_1602=P2^6; //1602背光 sbit key=P3^3; //应答按键 sbit Beep=P3^4; //蜂鸣器
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;//初始床号
void delay(ui x) //延时函数 { ui i,j; for(i=0;i<x;i++) for(j=0;j<121;j++); //为1ms的延时函数 }
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/ 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);//清屏 }
原文地址: http://www.cveoy.top/t/topic/bmg2 著作权归作者所有。请勿转载和采集!