xiaoyigechaos 发表于 2014-4-21 19:19:15

四线驱动1602,2显示b的问题,这是在暗示什么吗

本帖最后由 xiaoyigechaos 于 2014-4-21 19:28 编辑

程序代码如下
#include "reg52.h"
#include "INTRINS.H"
#define uchar unsigned char
#define uint unsigned int
#define data0 P2
//1602 ½Ó¿Ú
sbit RS=P2^0;//RS??? ??? ??????
sbit RW=P2^1;//RW???? ????
sbit EN=P2^2;//??? ????
uchar code arr[]="23RSrsBCbc";
void delay(uint k)
{
        uint i,j;
        for(i=0;i<k;i++){
                for(j=0;j<255;j++);
}
}
/*************************************************************
LCD³ÌÐò
*************************************************************/
void check_busy()
{
        RS=0;
        RW=1;
        EN=1;
        while(data0&0x80);
        _nop_();
        EN=0;
}
void LCD_Write_Com(uchar com)
{
        uchar i;
        for(i=0;i<2;i++){
        data0|=0xf0;
        check_busy();       
        RS=0;
        RW=0;
        data0=data0&0x0f;
        data0=data0|com;
                EN=1;
                _nop_();
                EN=0;
                com=com<<4;
        }
}

void LCD_Write_Data(uchar data1)
{
        uchar i;
        for(i=0;i<2;i++){
        data0|=0xf0;
        check_busy();               
        RS=1;
        RW=0;
                data0=data0&0x0f;
        data0=data0|data1;
        EN=1;
        nop_();
        EN=0;
                data1=data1<<4;
}
}


//LCD1602???
void LCD_Init()
{
        LCD_Write_Com(0x2c);
        LCD_Write_Com(0x01);
        LCD_Write_Com(0x08);
        LCD_Write_Com(0x06);
        LCD_Write_Com(0x0c);
}


main()
{
                uchar i;
                LCD_Init();
                delay(10);
                LCD_Write_Com(0x80);
                for(i=0;i<8;i++){
                LCD_Write_Data(arr);
                delay(100);
                }
        while(1);
}

单片机是STC89C52RC,一开始以为是硬件问题,各种尝试都不行。有一部分字符显示的不对,比如
23RSrsBCbc这个字符串会显示为 “bcbcbcbc”

不知道哪里出了问题,各种改都没解决,求指点

renpeng009 发表于 2014-4-21 19:50:22

传说中的2B

xiaoyigechaos 发表于 2014-4-21 20:04:44

renpeng009 发表于 2014-4-21 19:50
传说中的2B

为啥后面的汉字变成斜体了??我没设置的呀

eva015401 发表于 2014-4-21 20:14:44



http://www.amobbs.com/thread-5569626-1-1.html
ctrl+F搜索:LCD1602模块化(四线).rar

gzhuli 发表于 2014-4-21 20:15:30

因为[ i ]表示斜体,你应该把代码放在[ code ]块中。

xiaoyigechaos 发表于 2014-4-21 20:34:05

eva015401 发表于 2014-4-21 20:14
http://www.amobbs.com/thread-5569626-1-1.html
ctrl+F搜索:LCD1602模块化(四线).rar

看来确实是前后数据影响了,考虑过这个问题,也想到了这种方法,但是代码还是有地方给忽略了,影响了{:lol:}   技艺不佳啊,1602 都玩不好

renpeng009 发表于 2014-4-21 20:45:32

xiaoyigechaos 发表于 2014-4-21 20:04
为啥后面的汉字变成斜体了??我没设置的呀

再凑一个莫元

xuanfong1 发表于 2014-4-22 11:34:14

我只是看看的
页: [1]
查看完整版本: 四线驱动1602,2显示b的问题,这是在暗示什么吗