找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2516|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

用89C51單片機(jī)寫了一個(gè)LCD顯示兩個(gè)字符串的程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
初學(xué)單片機(jī),勿噴,請(qǐng)大俠指正,

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

/****************************************************************/
//1602.h 文件如下:
#ifndef _1602_H_
#define _1602_H_
/*
1602液晶屏的操作
讀數(shù)據(jù),寫數(shù)據(jù),寫命令
定義引腳:P0口是數(shù)據(jù),P2口是控制 
*/
sbit RS=P2^0;          //定義屏的模式管腳位
sbit RW=P2^1;          //定義屏的讀寫管腳位
sbit EN=P2^2;          //屏的使能位
sbit BUSY=P0^7;         

void wait()                //實(shí)際是判斷LCD是否忙,是否可進(jìn)入讀寫狀態(tài)
{
         P0=0xff;
        do
        {
                RS=0;        //命令(狀態(tài))模式
                RW=1;        //讀操作
                EN=0;        //使能關(guān)
                EN=1;        //使能開
        }while(BUSY==1);
        EN=0;
}
void w_dat(unsigned char dat)        //寫數(shù)據(jù)
{
         wait();
        EN=0;
        P0=dat;
        RS=1;           //數(shù)據(jù)模式
        RW=0;                //寫操作
        EN=1;           //使能開,數(shù)據(jù)進(jìn)去了
        EN=0;           //使能關(guān)
}
void w_cmd(unsigned char cmd)  //寫命令函數(shù)
{
         wait();
        EN=0;
        P0=cmd;               
        RS=0;                //命令(狀態(tài))模式
        RW=0;                //寫操作
        EN=1;                //使能開,命令進(jìn)去了
        EN=0;                //使能關(guān)
}
void w_string(unsigned char addr,unsigned char  *p)         //寫入字符串函數(shù)
{
         w_cmd(addr);        //寫入命令,讓屏從那里開始顯示
        while(*p !='\0')        //循環(huán)字符串中的每個(gè)字符,直到結(jié)尾
        {
                 w_dat(*p++);        
        }
}
void LCD_init()         //LCD初始化函數(shù)
{
   w_cmd(0x38);           //16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
   w_cmd(0x0c);           //顯示器開、光標(biāo)開、光標(biāo)允許閃爍
   w_cmd(0x06);           //文字不動(dòng)、光標(biāo)自動(dòng)右移
   w_cmd(0x01);           //清屏
}
#endif

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1012735 發(fā)表于 2022-5-10 16:52 | 只看該作者
E口跳變少了延時(shí),仿真可以,上機(jī)不行
回復(fù)

使用道具 舉報(bào)

板凳
ID:1017814 發(fā)表于 2022-5-13 20:50 | 只看該作者
謝謝樓上,今天發(fā)現(xiàn)這個(gè)問題了。

我把程序下載到實(shí)物中(剛買的1602屏,以前沒有),結(jié)果還是不顯示,不知如何是好,就從某一個(gè)寶找到測(cè)試程序,從程序中分析,看到語句中有 兩行一樣的,所以我把程序改了一下:

所有EN=1;前面加兩行EN=0;  這樣下載后OK。

希望看到此帖的所有人能學(xué)有所成。。。。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:1024243 發(fā)表于 2022-5-18 11:38 | 只看該作者
樓主,在此程序上。若想實(shí)現(xiàn),按鍵切換屏幕。要怎么做呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表