普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2244|回复: 2

A2开发板lcs1602显示问题

[复制链接]

1

主题

2

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2021-5-26 00:20:02 | 显示全部楼层 |阅读模式
实验23LCD1602液晶显示显示不了
#ifndef __LCD_H_
#define __LCD_H_
/**********************************
μ±ê1óÃμÄêÇ4λêy¾Y′«êäμÄê±oò¶¨ò壬
ê1óÃ8λè¡ÏûÕa¸ö¶¨òå
**********************************/
//#define LCD1602_4PINS

/**********************************
°üo¬í·Îļt
**********************************/
#include<reg52.h>

//---&#214;&#216;&#182;¨ò&#229;1&#216;&#188;ü′ê---//
#ifndef uchar
#define uchar unsigned char
#endif

#ifndef uint
#define uint unsigned int
#endif

/**********************************
PIN&#191;ú&#182;¨ò&#229;
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;

/**********************************
oˉêyéù&#195;÷
**********************************/
/*&#212;ú51μ¥&#198;&#172;&#187;ú12MHZê±&#214;ó&#207;&#194;μ&#196;&#209;óê±oˉêy*/
void Lcd1602_Delay1ms(uint c);   //&#206;ó2&#238; 0us
/*LCD1602D′è&#235;8&#206;&#187;&#195;üá&#238;×óoˉêy*/
void LcdWriteCom(uchar com);
/*LCD1602D′è&#235;8&#206;&#187;êy&#190;Y×óoˉêy*/       
void LcdWriteData(uchar dat)        ;
/*LCD16023&#245;ê&#188;&#187;ˉ×ó3ìDò*/               
void LcdInit();                                                  

#endif




#include "lcd.h"

/*******************************************************************************
* oˉ êy &#195;&#251;         : Lcd1602_Delay1ms
* oˉêy1|&#196;ü                   : &#209;óê±oˉêy£&#172;&#209;óê±1ms
* ê&#228;    è&#235;         : c
* ê&#228;    3&#246;         : &#206;T
* &#203;μ    &#195;&#251;         : &#184;&#195;oˉêyê&#199;&#212;ú12MHZ&#190;§&#213;&#241;&#207;&#194;£&#172;12·&#214;&#198;μμ¥&#198;&#172;&#187;úμ&#196;&#209;óê±&#161;£
*******************************************************************************/

void Lcd1602_Delay1ms(uint c)   //&#206;ó2&#238; 0us
{
    uchar a,b;
        for (; c>0; c--)
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }
           
}

/*******************************************************************************
* oˉ êy &#195;&#251;         : LcdWriteCom
* oˉêy1|&#196;ü                   : &#207;òLCDD′è&#235;ò&#187;&#184;&#246;×&#214;&#189;úμ&#196;&#195;üá&#238;
* ê&#228;    è&#235;         : com
* ê&#228;    3&#246;         : &#206;T
*******************************************************************************/
#ifndef         LCD1602_4PINS         //μ±&#195;&#187;óD&#182;¨ò&#229;&#213;a&#184;&#246;LCD1602_4PINSê±
void LcdWriteCom(uchar com)          //D′è&#235;&#195;üá&#238;
{
        LCD1602_E = 0;     //ê1&#196;ü
        LCD1602_RS = 0;           //&#209;&#161;&#212;&#241;·¢&#203;í&#195;üá&#238;
        LCD1602_RW = 0;           //&#209;&#161;&#212;&#241;D′è&#235;
       
        LCD1602_DATAPINS = com;     //·&#197;è&#235;&#195;üá&#238;
        Lcd1602_Delay1ms(1);                //μè′yêy&#190;Y&#206;è&#182;¨

        LCD1602_E = 1;                  //D′è&#235;ê±Dò
        Lcd1602_Delay1ms(5);          //±£3&#214;ê±&#188;&#228;
        LCD1602_E = 0;
}
#else
void LcdWriteCom(uchar com)          //D′è&#235;&#195;üá&#238;
{
        LCD1602_E = 0;         //ê1&#196;ü&#199;&#229;á&#227;
        LCD1602_RS = 0;         //&#209;&#161;&#212;&#241;D′è&#235;&#195;üá&#238;
        LCD1602_RW = 0;         //&#209;&#161;&#212;&#241;D′è&#235;

        LCD1602_DATAPINS = com;        //óéóú4&#206;&#187;μ&#196;&#189;ó&#207;&#223;ê&#199;&#189;óμ&#1890&#191;úμ&#196;&#184;&#223;&#203;&#196;&#206;&#187;£&#172;&#203;ùò&#212;′&#171;&#203;í&#184;&#223;&#203;&#196;&#206;&#187;2&#187;ó&#195;&#184;&#196;
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;         //D′è&#235;ê±Dò
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;

        LCD1602_DATAPINS = com << 4; //·¢&#203;íμí&#203;&#196;&#206;&#187;
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;         //D′è&#235;ê±Dò
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;
}
#endif
/*******************************************************************************
* oˉ êy &#195;&#251;         : LcdWriteData
* oˉêy1|&#196;ü                   : &#207;òLCDD′è&#235;ò&#187;&#184;&#246;×&#214;&#189;úμ&#196;êy&#190;Y
* ê&#228;    è&#235;         : dat
* ê&#228;    3&#246;         : &#206;T
*******************************************************************************/                  
#ifndef         LCD1602_4PINS                  
void LcdWriteData(uchar dat)                        //D′è&#235;êy&#190;Y
{
        LCD1602_E = 0;        //ê1&#196;ü&#199;&#229;á&#227;
        LCD1602_RS = 1;        //&#209;&#161;&#212;&#241;ê&#228;è&#235;êy&#190;Y
        LCD1602_RW = 0;        //&#209;&#161;&#212;&#241;D′è&#235;

        LCD1602_DATAPINS = dat; //D′è&#235;êy&#190;Y
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;   //D′è&#235;ê±Dò
        Lcd1602_Delay1ms(5);   //±£3&#214;ê±&#188;&#228;
        LCD1602_E = 0;
}
#else
void LcdWriteData(uchar dat)                        //D′è&#235;êy&#190;Y
{
        LCD1602_E = 0;          //ê1&#196;ü&#199;&#229;á&#227;
        LCD1602_RS = 1;          //&#209;&#161;&#212;&#241;D′è&#235;êy&#190;Y
        LCD1602_RW = 0;          //&#209;&#161;&#212;&#241;D′è&#235;

        LCD1602_DATAPINS = dat;        //óéóú4&#206;&#187;μ&#196;&#189;ó&#207;&#223;ê&#199;&#189;óμ&#1890&#191;úμ&#196;&#184;&#223;&#203;&#196;&#206;&#187;£&#172;&#203;ùò&#212;′&#171;&#203;í&#184;&#223;&#203;&#196;&#206;&#187;2&#187;ó&#195;&#184;&#196;
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;          //D′è&#235;ê±Dò
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;

        LCD1602_DATAPINS = dat << 4; //D′è&#235;μí&#203;&#196;&#206;&#187;
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;          //D′è&#235;ê±Dò
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;
}
#endif
/*******************************************************************************
* oˉ êy &#195;&#251;       : LcdInit()
* oˉêy1|&#196;ü                 : 3&#245;ê&#188;&#187;ˉLCD&#198;á
* ê&#228;    è&#235;       : &#206;T
* ê&#228;    3&#246;       : &#206;T
*******************************************************************************/                  
#ifndef                LCD1602_4PINS
void LcdInit()                                                  //LCD3&#245;ê&#188;&#187;ˉ×ó3ìDò
{
        LcdWriteCom(0x38);  //&#191;a&#207;&#212;ê&#190;
        LcdWriteCom(0x0c);  //&#191;a&#207;&#212;ê&#190;2&#187;&#207;&#212;ê&#190;1a±ê
        LcdWriteCom(0x06);  //D′ò&#187;&#184;&#246;&#214;&#184;&#213;&#235;&#188;ó1
        LcdWriteCom(0x01);  //&#199;&#229;&#198;á
        LcdWriteCom(0x80);  //éè&#214;&#195;êy&#190;Y&#214;&#184;&#213;&#235;&#198;eμ&#227;
}
#else
void LcdInit()                                                  //LCD3&#245;ê&#188;&#187;ˉ×ó3ìDò
{
        LcdWriteCom(0x32);         //&#189;&#171;8&#206;&#187;×ü&#207;&#223;×a&#206;a4&#206;&#187;×ü&#207;&#223;
        LcdWriteCom(0x28);         //&#212;ú&#203;&#196;&#206;&#187;&#207;&#223;&#207;&#194;μ&#196;3&#245;ê&#188;&#187;ˉ
        LcdWriteCom(0x0c);  //&#191;a&#207;&#212;ê&#190;2&#187;&#207;&#212;ê&#190;1a±ê
        LcdWriteCom(0x06);  //D′ò&#187;&#184;&#246;&#214;&#184;&#213;&#235;&#188;ó1
        LcdWriteCom(0x01);  //&#199;&#229;&#198;á
        LcdWriteCom(0x80);  //éè&#214;&#195;êy&#190;Y&#214;&#184;&#213;&#235;&#198;eμ&#227;
}
#endif



/*************************************************************************************

*
êμ&#209;é&#207;&#214;&#207;ó£o&#207;&#194;&#212;&#216;3ìDòoó2&#229;é&#207;LCD1602òo&#190;§&#212;ú&#191;a·¢°&#229;é&#207;£&#172;&#188;′&#191;é&#207;&#212;ê&#190;
                  
&#189;ó&#207;&#223;&#203;μ&#195;÷£o (&#190;&#223;ì&#229;&#189;ó&#207;&#223;í&#188;&#191;é&#188;&#251;&#191;a·¢1¥&#194;&#212;&#182;&#212;ó|êμ&#209;éμ&#196;&#161;°êμ&#209;é&#207;&#214;&#207;ó&#161;±&#213;&#194;&#189;ú)

       
×¢òaê&#194;&#207;&#238;£o&#184;ù&#190;Y×&#212;&#188;oê1ó&#195;μ&#196;LCD1602ê&#199;·&#241;′&#248;óD×a&#189;ó°&#229;£&#172;è&#231;1&#251;′&#248;óD×a&#189;ó°&#229;μ&#196;&#188;′&#206;a4&#206;&#187;£&#172;Dè&#212;úLCD.Hí·&#206;&#196;&#188;t&#214;D
&#189;&#171;oê#define LCD1602_4PINS′ò&#191;a£&#172;&#206;ò&#195;&#199;&#213;aà&#239;ê1ó&#195;μ&#196;LCD1602ê&#199;8&#206;&#187;£&#172;&#203;ùò&#212;&#196;&#172;è&#207;&#189;&#171;&#184;&#195;oê×¢êí                                                                               

                                                                                  
**************************************************************************************

*/

#include "reg52.h"                         //′&#203;&#206;&#196;&#188;t&#214;D&#182;¨ò&#229;á&#203;μ¥&#198;&#172;&#187;úμ&#196;ò&#187;D&#169;ì&#216;êa1|&#196;ü&#188;&#196;′&#230;&#198;÷
#include "lcd.h"

typedef unsigned int u16;          //&#182;&#212;êy&#190;YààDí&#189;&#248;DDéù&#195;÷&#182;¨ò&#229;
typedef unsigned char u8;

u8 Disp[]=" Pechin Science ";

/*******************************************************************************
* oˉ êy &#195;&#251;         : main
* oˉêy1|&#196;ü                   : &#214;÷oˉêy
* ê&#228;    è&#235;         : &#206;T
* ê&#228;    3&#246;         : &#206;T
*******************************************************************************/
void main(void)
{
        u8 i;
        LcdInit();
        for(i=0;i<16;i++)
        {
                LcdWriteData(Disp);       
        }
        while(1);               


程序烧录成功后没有字符显示
回复

使用道具 举报

1

主题

2

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2021-5-26 00:27:57 | 显示全部楼层
只显示下面16个方格是为什么啊?
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-23 20:39 , Processed in 0.088157 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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