|
左邊是我做的,右邊是網上搜的,為什么我做的仿真后右側都是高電平,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);//設置開始顯示,不顯示光標
} |
|