|
左边是我做的,右边是网上搜的,为什么我做的仿真后右侧都是高电平,1602白板,以下是1602程序
#ifndef __LCD1602_H__
#define __LCD1602_H__
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char sbit rs=P2^0; sbit rw=P2^1; sbit e=P2^2;
void lcdxcom(uchar com);
void lcdinit();
void lcdxshuju(uchar dat);
void lcdx_time(uchar add,uchar date);
void lcdx_day(uchar add,uchar date);
#endif
#include<reg52.h>
#include"lcd1602.h"
#include"delay.h"
#include"ds1302.h"
void lcdxcom(uchar com) { e=0; rs=0; rw=0; P0=com; lcddelay(10);//500us e=1; lcddelay(20); e=0; }
void lcdinit() { lcddelay(300); lcdxcom(0x38); lcddelay(100); lcdxcom(0x38); lcddelay(100); lcdxcom(0x38); lcdxcom(0x38); lcdxcom(0x08); lcdxcom(0x01);lcdxcom(0x06); lcdxcom(0x0c); }
void lcdxshuju(uchar dat)
{ e=0; rs=0; rs=1; rw=0; P0=dat; lcddelay(10); e=1; lcddelay(20); e=0; }
void lcdx_time(uchar add,uchar date)//写时分 秒函数
{ uchar shi,ge; shi=date/10; ge=date%10;
lcdxcom(0x80+0x40+add);//设置显示位置
lcdxshuju(0x30+shi);//送去液晶显示十位
lcdxshuju(0x30+ge);//显示各位
lcdxcom(0x0c);//设置开始显示,不显示光标}
void lcdx_day(uchar add,uchar date)//写时分 秒函数
{ uchar shi,ge;
shi=date/10;
ge=date%10;
lcdxcom(0x80+add);//设置显示位置
lcdxshuju(0x30+shi);//送去液晶显示十位
lcdxshuju(0x30+ge);//显示各位
lcdxcom(0x0c);//设置开始显示,不显示光标
} |
|