找回密码
 立即注册

QQ登录

只需一步,快速开始

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

12864为什么反色显示

[复制链接]
跳转到指定楼层
楼主
ID:102931 发表于 2016-1-25 21:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学51,参照郭天祥的例程,一字未改,照着接线,烧好程序后,字显示了,但是是反色的,亮的地方不亮,不亮的地方是亮的,为什么?
附:郭天祥例子
#include <reg52.h>
#include <intrins.h>
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_data P0
sbit LCD_EN=P3^4;
sbit LCD_RS=P3^5;
sbit LCD_RW=P3^6;
sbit LCD_PSB=P3^7;
sbit LCD_RST=P3^3;  //因为不显示,看他程序不带复位,后来加上的还是不显示
uchar code dis1[]={"www.txmcu.com"};
uchar code dis2[]={"www.txmcu.com"};
uchar code dis3[]={"天祥电子"};
uchar code dis4[]={"--------"};
void delay_1ms(uint x)
{
        uint i,j;
        for(j=0;j<x;j++)
                for(i=0;i<110;i++)
                        ;
}
//写指令数据到LCD
//RS=L,RW=L;E=高脉冲,P0-P7=指令码
void write_cmd(uchar cmd)
{
        LCD_RS=0;
        LCD_RW=0;
        LCD_EN=0;
        P0=cmd;
        delay_1ms(5);
        LCD_EN=1;
        delay_1ms(5);
        LCD_EN=0;
}
//写显示数据到LCD
//RS=H,RW=L,E=高脉冲,D0-D7=数据
void write_dat(uchar dat)
{
        LCD_RS=1;
        LCD_RW=0;
        LCD_EN=0;
        P0=dat;
        delay_1ms(5);
        LCD_EN=1;
        delay_1ms(5);
        LCD_EN=0;
}
//设置显示位置
void lcd_pos(uchar X,uchar Y)
{
        uchar pos;
        if(X==0)
                X=0x80;
        else if(X==1)
                X=0x90;
        else if(X==2)
                X=0x88;
        else if(X==3)
                X=0x98;
        pos=X+Y;
        write_cmd(pos);
}

//LCD初始化设定
void lcd_init()
{
        LCD_PSB=1;
        LCD_RST=1;  //原程序没有这句,加上后依然反色显示
        write_cmd(0x30);
        delay_1ms(50000);
        write_cmd(0x01);
        delay_1ms(50000);
        write_cmd(0x06);
        delay_1ms(50000);
    write_cmd(0x0c);
        delay_1ms(50000);

}
//主程序
main()
{
        uchar i;
        delay_1ms(100000);
        lcd_init();
        lcd_pos(1,0);
        i=0;
        while(dis2[i]!='\0')
        {
                write_dat(dis2[i]);
                i++;
        }
        lcd_pos(2,0);
        i=0;
        while(dis3[i]!='\0')
        {
                write_dat(dis3[i]);
                i++;
        }
        lcd_pos(3,0);
        i=0;
        while(dis4[i]!='\0')
        {
                write_dat(dis4[i]);
                i++;
        }
        while(1)
        {
                lcd_pos(0,0);
                for(i=0;i<10;i++)
                        write_dat(dis1[i]);
        }
}
               




       


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

使用道具 举报

沙发
ID:96682 发表于 2016-1-26 09:51 | 只看该作者
盲目修改不起作用的,还是没看到关键节点,还需努力。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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