基于51单片机设计字符型LCD1602软件程序源码

/*

程序描述:M1602的控制芯片为HD44780
PORT 2.0,2.1,2.2则连接到LCD显示器的控制线,
P0口程序执行时将显示河南科技学院相关信息*/
/*******************************************************/
#include <REG51.H>//头文件
#define uchar unsigned char//宏定义char

sbit RS = P2^2;//命令数据选择脚
sbit RW = P2^1;//读写操作脚
sbit E  = P2^0;//使能脚 低电平有效
 
char code num[]="0123456789";//定义数组

void delay(unsigned int n)//延时函数
{

   unsigned int j=0;
   for(;n>0;n--)
   { 
      for(j=0;j<125;j++); 
   }
}

void write_command(uchar command)//写指令函数
{
    RW = 0;//写
    RS = 0;//指令
    E = 1;//拉高电平
    P0 = command;//送指令
    delay(20);//延时
    E = 0;//拉低电平 输出有效
    RW = 1;//拉高电平
}
void write_data(uchar date)//
{
    RW = 0;//写
    RS = 1;//数据
    E = 1;//拉高电平
    P0 = date;//送数据
    delay(20);//延时
    E = 0;//使能脚 低电平写入有效
    RW = 1;//拉高电平
}

void display_string(uchar *p)//显示地址函数
{
    while(*p)//循环这个p
    {
        write_data(*p);//送数据  为p
        p++;//每次p自加一
    }
}
void gotoxy(unsigned y,unsigned x)//地址位置定义
{
    if(y == 1) // 如果y等于1
        write_command(0x80+x);//地址就是0x80加上x
    else if(y == 2) //如果y等于1
        write_command(0x80+0x40+x);//地址就是0x80+0x40(第二行)加上x
}
 void F1602_init(void)//初始化函数
{
    write_command(0x38);//两行,每行16字符,每个字符5*7点阵    
    write_command(0x0C);//开光标及进入光标设置
    write_command(0x06C);//设置光标和地址自动加一
}
void F1602_clear()//清屏
{
    write_command(0x01);//写指令 0x01 清屏    
    write_command(0x02);//写指令 0x02 光标回归原点 但内容不变    
}    
void main (void)//主函数 
{
      F1602_init();//初始化1602
      F1602_clear();//清屏
      while(1)//大循环
      {     
        F1602_clear();//清屏(清屏函数带有回归原点函数 所以不用设置地址)
          display_string("HeNan Institute");//执行显示地址函数     
          gotoxy(2,0);//设定地址
          display_string("of Sicence and");
          delay(3000);
          F1602_clear();//清屏
          display_string("Techonology");
          delay(3000);
        F1602_clear();//清屏
          display_string("www.hist.edu.cn");
        gotoxy(2,0);//设定地址
        display_string("13849360082");
        delay(3000);
      }          
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GJZGRB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值