微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 给初学者/我写的1602程序

给初学者/我写的1602程序

时间:10-02 整理:3721RD 点击:
经过我逐条的验证。把每个语句的功能和作用注释到程序后面了。 给新手参考。
# include <reg52.h>
# include "51hei.h"//

sbit e=P3^4;
sbit rs= P3^5;
sbit rw= P2^7;
code uchar temp []= {"   hello!  "};
code uchar temp1[]={" panjiayinihao "};
//*==========================*//
//---------函断定义-----------//
//*==========================*//
void delay5ms()                //5秒延时
{
  uint i,k;
  for (i=0;i<18;i++)
  for (k=0;k<66;k++ );         
}
void delay2ms()                //5秒延时
{
  uint i,k;
  for (i=0;i<18;i++)
  for (k=0;k<30;k++ );         
}
void delay400ms()         //400秒延时
{
  uint j,l;
  for (j=0;j<120;j++)
  for (l=0;l<1316;l++);       
}
void com(uint com)  //写命令
{
  rs=0;
  rw=0;       
  P0=com;
  delay5ms();         //**先进数据后使能所以要延时一下,不写不显示.**毕选  
  e=1;                               
// delay5ms();           //可有可无。
  e=0;
//delay5ms();           //可有可无。
}
void date(uint date)  //写数据 
{
  rs=1;
  rw=0;       
  P0=date;
  delay5ms();
  e=1;
  e=0;
}
void init()     //初使化
{
  e=0;                               
  com(0x38);                 //不检测忙信号  //不写出现重影
// delay2ms();
// com(0x38);
//  delay2ms();
// com(0x38);                  
//  com (0x08);   //关屏
  //  com(0x01);        //清屏,非必选
// com(0x06);           // 显示光标移动设置,非必选
    com(0x0f);          // 00001DCB (D=开关屏/C=开关光标/B=光标闪烁)/此处为开屏/开光标/光标闪烁.
}

//*==========================*//
//---------主程序-------------//
//*==========================*//
main()
{
  uchar i;
// delay400ms();
  init();
  com(0x80);
  for(i=0;i<11;i++)
   {
    date(temp[i]);
   }
   com(0xc0);
  for(i=0;i<15;i++)
   {
    date(temp1[i]);
   }
  while(1);
}

大哥,,建议你写一个传参的延时函数。就不用这样写那么多延时函数了

不好意思。这块试的时候忘改了。呵呵。大家自己写一个吧。

不错的文档,顶一下

你好,那个51hei.h
能发一下吗

嗯,还不错,可以看一下我发的stc常用外设函数库,里面有拿来即用的1602函数库

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top