找回密码
 立即注册

QQ登录

只需一步,快速开始

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

N76E003单片机控制LCD1602的问题 求大佬帮忙看下

[复制链接]
跳转到指定楼层
楼主
ID:267502 发表于 2018-12-13 09:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的N76E003的  P0口接LCD1602模块的DB0~DB7,P1.2接RS,P1.4接RW ,P1.3接EN;程序抄的大佬的改了下 不知道为什么LCD没有一点显示 求大佬们帮看下   程序如下

#include "N76E003.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include "Common.h"
#include "Delay.h"
#define uint unsigned int  //预定义一下
#define uchar unsigned char
sbit rs=P1^2;    //1602的数据/指令选择控制线
sbit rw=P1^4;        //1602的读写控制线
sbit en=P1^3;        //1602的使能控制线
/*P2口接1602的D0~D7,注意不要接错了顺序,我以前可在这上面吃过亏~*/
uchar code table[]="LCD1602 check ok"; //要显示的内容1放入数组tablel
uchar code table1[]="study up";             //要显示的内容2放入数组table1

void GPIO_INIT(void)
{
    P00_PushPull_Mode;
          P01_PushPull_Mode;
          P02_PushPull_Mode;
          P03_PushPull_Mode;
    P04_PushPull_Mode;
          P05_PushPull_Mode;
          P06_PushPull_Mode;
          P07_PushPull_Mode;
          P12_PushPull_Mode;
          P13_PushPull_Mode;
          P14_PushPull_Mode;

}
void delay(uint n)       //延时函数                       
{
    uint x,y;  
    for(x=n;x>0;x--)
        for(y=110;y>0;y--);
}
void lcd_wcom(uchar com)  //1602写命令函数                 
{
    rs=0;            //选择指令寄存器
    rw=0;            //选择写
    P0=com;            //把命令字送入P2
    delay(10);            //延时一小会儿,让1602准备接收数据
    en=1;           //使能线电平变化,命令送入1602的8位数据口
    en=0;
}
void lcd_wdat(uchar dat)        //1602写数据函数      
{
    rs=1;        //选择数据寄存器
    rw=0;        //选择写
    P0=dat;        //把要显示的数据送入P2
    delay(10);        //延时一小会儿,让1602准备接收数据
    en=1;        //使能线电平变化,数据送入1602的8位数据口
    en=0;
}
void lcd_init()              //1602初始化函数      
{
    lcd_wcom(0x38);       //8位数据,双列,5*7字形      
    lcd_wcom(0x0E);      //开启显示屏,关光标,光标不闪烁
    lcd_wcom(0x06);    //显示地址递增,即写一个数据后,显示位置右移一位
    lcd_wcom(0x01);    //清屏
}
void main()            //主函数
{     
    uchar n,m=0;
          GPIO_INIT();
    lcd_init();                 //液晶初始化
    lcd_wcom(0x80);   //显示地址设为80H(即00H,)上排第一位      
    for(m=0;m<16;m++)     //将table[]中的数据依次写入1602显示
    {
            lcd_wdat(table[m]);           
            delay(400);
    }
    lcd_wcom(0x80+0x44); //重新设定显示地址为0xc4,即下排第5位
    for(n=0;n<8;n++)   //将table1[]中的数据依次写入1602显示
    {     
            lcd_wdat(table1[n]);
           delay(400);
    }
    while(1);        //动态停机
}

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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