1 使用HD44780读写单片机的C51程序详细概述-德赢Vwin官网 网

使用HD44780读写单片机的C51程序详细概述

电子说

1.3w人已加入

描述

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

  #include 《reg51.h》

  #include 《intrins.h》

  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《w) {}

  }

  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(‘ ’);
责任编辑 LK

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分