首页
基础教程 | 单片机设计实例 | 常用芯片 | 电子基础
当前位置:单片机教程 >> 单片机设计实例 >> 浏览文章 今天是:
单片机设计实例

HD44780读写C51程序

作者:    来源:本站原创    点击数:   更新时间:2007年08月25日   
 

下面我给大家介绍一个HD44780读写单片机c51程序

#include
#include

sbit GND_LCD=P1^7;
sbit rs=P1^0;
sbit rw=P1^1;
sbit e=P1^2;

unsigned char busy(void);
void ctrl(unsigned char);
void wd_h(unsigned char);
void wd_l(unsigned char);
unsigned char rd(void);
void write(unsigned char);
void init(void);
void NOP(void);

void disp(unsigned char);


unsigned int time;

void int_t0 (void) interrupt 1 {
TL0=TL0+30;TH0=0xfb;
time++;
}

void wait(unsigned int w){
time=0;
while (time}


void init(void) {
unsigned char i;
P1=0;
for (i=0;i<2;i++) {
wd_l(0x30);
wait(5);
}
wd_h(0x20);
ctrl(0x28);
ctrl(0x8);
ctrl(3);
ctrl(6);
disp(0);
ctrl(1);
ctrl(8);
ctrl(0xe);
ctrl(0x80);
}


unsigned char busy(void){
P1=0;
return(rd());
}

unsigned char rd(void) {
unsigned char dat0,dat1;
rw=1;
rs=0;
P1=P1|0x78;
e=1;
dat0=P1;
e=0;
e=1;
dat1=P1;
P1=0;
return(((dat0<<1)&0xf0) | ((dat1>>3)&0xf) );
}

void ctrl(unsigned char dat){
while (busy()>0x7f) {};
rw=rs=0;
wd_h(dat);
wd_l(dat);
}
void wd_h(unsigned char dat){
e=1;
P1=P1|((dat&0xf0)>>1);
e=0;
P1=P1&0x87;
}
void wd_l(unsigned char dat){
e=1;
P1=P1|((dat&0xf)<<3);
e=0;
P1=0;
}
void write(unsigned char dat) {
while (busy()>0x7f) {};
rw=0;
rs=1;
wd_h(dat);
wd_l(dat);
}

//===============HD44780读写程序====================================
void disp(unsigned char i) {
unsigned char j;
ctrl(1);
ctrl(0x80);
for (j=0;j<6;j++) write(d[i][j]);
write(' ');




 
发表评论】【告诉好友】【打印此文】【收藏此文】【关闭窗口
网友评论(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
 >> 推荐文章
单片机USB-ISP下载线制作
自制单片机实验板
单片机一键多功能按键识别设
 >> 阅读排行
keil教程
单片机电子时钟设计
单片机DS18B20水温控制系统
单片机交通灯设计
单片机课程设计
单片机时钟设计
单片机数字钟设计
单片机键盘程序(4×4矩阵式
单片机串口通讯
单片机秒表设计
 >> 相关文章
  • 暂无相关链接
  • 站长:刘兴国 站长信箱:372xcom1@21cn.com
    单片机教程 @ www.51hei.com 2007-2008