找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1714|回复: 3
打印 上一主题 下一主题
收起左侧

用89C51单片机写了一个LCD显示两个字符串的程序

[复制链接]
跳转到指定楼层
楼主
初学单片机,勿喷,请大侠指正,

程序如下 ,有需要的直接复制拷备
main.c 如下:
#include <reg52.h>
#include "1602.h"
typedef unsigned char u8;
u8 code word1[]={"1234567890ABCDEF"};
u8 code word2[]={"www.51hei.com"};
void main()
{
         LCD_init();
        w_string(0x80,word1);
        w_string(0xc0,word2);
        
        while(1);
}

/****************************************************************/
//1602.h 文件如下:
#ifndef _1602_H_
#define _1602_H_
/*
1602液晶屏的操作
读数据,写数据,写命令
定义引脚:P0口是数据,P2口是控制 
*/
sbit RS=P2^0;          //定义屏的模式管脚位
sbit RW=P2^1;          //定义屏的读写管脚位
sbit EN=P2^2;          //屏的使能位
sbit BUSY=P0^7;         

void wait()                //实际是判断LCD是否忙,是否可进入读写状态
{
         P0=0xff;
        do
        {
                RS=0;        //命令(状态)模式
                RW=1;        //读操作
                EN=0;        //使能关
                EN=1;        //使能开
        }while(BUSY==1);
        EN=0;
}
void w_dat(unsigned char dat)        //写数据
{
         wait();
        EN=0;
        P0=dat;
        RS=1;           //数据模式
        RW=0;                //写操作
        EN=1;           //使能开,数据进去了
        EN=0;           //使能关
}
void w_cmd(unsigned char cmd)  //写命令函数
{
         wait();
        EN=0;
        P0=cmd;               
        RS=0;                //命令(状态)模式
        RW=0;                //写操作
        EN=1;                //使能开,命令进去了
        EN=0;                //使能关
}
void w_string(unsigned char addr,unsigned char  *p)         //写入字符串函数
{
         w_cmd(addr);        //写入命令,让屏从那里开始显示
        while(*p !='\0')        //循环字符串中的每个字符,直到结尾
        {
                 w_dat(*p++);        
        }
}
void LCD_init()         //LCD初始化函数
{
   w_cmd(0x38);           //16*2显示,5*7点阵,8位数据接口
   w_cmd(0x0c);           //显示器开、光标开、光标允许闪烁
   w_cmd(0x06);           //文字不动、光标自动右移
   w_cmd(0x01);           //清屏
}
#endif

评分

参与人数 1黑币 +20 收起 理由
admin + 20 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1012735 发表于 2022-5-10 16:52 | 只看该作者
E口跳变少了延时,仿真可以,上机不行
回复

使用道具 举报

板凳
ID:1017814 发表于 2022-5-13 20:50 | 只看该作者
谢谢楼上,今天发现这个问题了。

我把程序下载到实物中(刚买的1602屏,以前没有),结果还是不显示,不知如何是好,就从某一个宝找到测试程序,从程序中分析,看到语句中有 两行一样的,所以我把程序改了一下:

所有EN=1;前面加两行EN=0;  这样下载后OK。

希望看到此帖的所有人能学有所成!!!!!

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:1024243 发表于 2022-5-18 11:38 | 只看该作者
楼主,在此程序上。若想实现,按键切换屏幕。要怎么做呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表