搜索
bottom↓
回复: 2

lpc1768控制lcd12864正常显示一次,之后下载出现乱码。求解释?

[复制链接]

出0入0汤圆

发表于 2013-6-25 14:14:50 | 显示全部楼层 |阅读模式
#include <LPC17xx.H>
#include "LCD12864.h"



unsigned char  IC_DAT[]={
"     HOT-51     "  
"                "
"   欢迎你来到   "
"    东流电子    "
};

unsigned char IC_DAT1[]={
"  GoodGoodStudy "  
"    DayDayUp    "
"    好好学习    "
"    天天向上    "
};

unsigned char IC_DAT2[]={
"Energy and persi"  
"   all things   "
" stence conquer "
"动力坚持战胜一切"
};



unsigned char pic2[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xE6,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x07,0x82,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x1E,0x02,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x78,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x01,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x78,0x00,0x00,0x00,0x07,0x80,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x1E,0x00,0x00,0x00,0x1E,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x07,0x80,0x00,0x00,0x78,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x01,0xE0,0x00,0x01,0xE0,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x06,0x00,0x78,0x1F,0x07,0x80,0x01,0xF1,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0E,0x00,0x1E,0x3F,0x9E,0x00,0x03,0xF9,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0E,0x00,0x07,0xB3,0x78,0x00,0x0F,0xF9,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0x80,0x01,0xFF,0xE0,0x00,0x79,0x98,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xE0,0x00,0x7F,0x80,0x00,0xE0,0xD8,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xF8,0x00,0x0C,0x00,0x07,0xE0,0xF8,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0E,0x7E,0x00,0x0C,0x00,0x1F,0xF0,0xF8,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0E,0x1F,0x80,0x0C,0x00,0x7E,0x70,0xDC,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0x07,0xE0,0x0C,0x01,0xE3,0x70,0x5C,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0x81,0xF8,0x0C,0x07,0x83,0x70,0x5F,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0D,0xE0,0x7E,0x0C,0x1F,0xC1,0xF0,0x5F,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0x78,0x3F,0x8C,0x7F,0xC1,0xB8,0x47,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0x1E,0x0F,0xED,0xEC,0xE1,0xB8,0xC7,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x07,0x83,0xFF,0xC6,0xE1,0xB9,0xC7,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x07,0xE0,0xFF,0xE7,0xE1,0xBF,0x07,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x07,0xF8,0x3F,0xE7,0xE1,0xBF,0x07,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x07,0x9E,0x0C,0xE6,0xE1,0x8F,0x07,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x07,0x87,0x8C,0xE6,0xE3,0x8F,0x83,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x0F,0x81,0xED,0xE6,0xE7,0x0F,0x83,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x07,0x00,0x7F,0xE6,0xFE,0x0F,0x83,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x00,0x00,0x1E,0x76,0xFE,0x0F,0x83,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x72,0x1E,0x0F,0x83,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x7E,0x1A,0x0F,0x83,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x7C,0x1A,0x0F,0x83,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x78,0x1A,0x0F,0x83,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x1A,0x07,0x83,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1E,0x07,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x07,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x07,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x07,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x00,0x00,0x00,0x00,0x08,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x00,0x00,0x00,0x00,0x10,0x00,0x40,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1F,0x00,0x00,0x00,0x00,0xFF,0x08,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1F,0x00,0x00,0x00,0x00,0x28,0x05,0xFC,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x0C,0x00,0x00,0x00,0x00,0x48,0x00,0x40,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x00,0xFF,0x08,0x88,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x00,0x08,0x05,0xFC,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x4A,0x00,0xA8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x89,0x04,0xA8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x01,0x08,0x88,0xA8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x10,0xAA,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x2E,

};


int main(void)
{
        SystemInit();
        LPC_PINCON->PINSEL0 |= 0x0;//P0.25,P0.24,P0.23 Set GPIO
    LPC_PINCON->PINSEL3 |= 0x0;//P1.18--P1.25 Set GPIO
        LPC_GPIO0->FIODIR |= 0X03;
        LPC_GPIO1->FIODIR |= 0x7FF<<18;

        //while(1)
        //{
                LCD12864_init();
                delay(10000);
                TransferData('a');
                delay(10000);
//                TransferData('b');
//                delay(10000);
//                TransferData('c');
//                delay(10000);
//                TransferData('d');
//                delay(10000);
//                lcd_mesg(IC_DAT);       
//            delayms(24000);


//
//
//                LCD12864_init2();
//                delay(1000);
//                DisplayGraphic(pic2);
//                delay(1000);
//        }
        while(1);

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2013-6-25 14:15:06 | 显示全部楼层
#include <LPC17xx.H>
#include "LCD12864.h"







void    delay(uint32_t m)            //延时程序
                   {
                      uint32_t i,j;
                      for(i=0;i<m;i++)
                         for(j=0;j<10;j++);
                   }

void    delayms(unsigned int n)            //延时10×n毫秒程序
                   {
                      unsigned int i,j;
                      for(i=0;i<n;i++)
                         for(j=0;j<2000;j++);
                   }



void    Transfercmd(char cmd)
{
        LPC_GPIO1->FIOCLR |= RW;
        LPC_GPIO1->FIOCLR |= RS;
        delay(100000);
        LPC_GPIO1->FIOCLR |= (0XFF<<21);
        LPC_GPIO1->FIOSET |= cmd<<21;
        LPC_GPIO1->FIOSET |= EN;
        delay(100000);
        LPC_GPIO1->FIOCLR |= EN;
}

void    TransferData(char data)
{
        LPC_GPIO1->FIOCLR |= RW;
        LPC_GPIO1->FIOSET |= RS;
        delay(100000);
        LPC_GPIO1->FIOCLR |= (0XFF<<21);
        LPC_GPIO1->FIOSET |= data<<21;
        LPC_GPIO1->FIOSET |= EN;
        delay(100000);
        LPC_GPIO1->FIOCLR |= EN;
}

void LCD12864_init(void)
{
        delay(40000);
        LPC_GPIO0->FIOSET |= PSB;
        delay(10000);
        LPC_GPIO0->FIOCLR |= RES;
        delay(10000);
        LPC_GPIO0->FIOSET |= RES;
        delayms(1000);

        Transfercmd(0x38);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
    delay(100000);            //大于100uS的延时程序
    Transfercmd(0x38);  //Function Set
    delay(100000);             ////大于37uS的延时程序
        Transfercmd(0x0f);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
    delay(100000);
        Transfercmd(0x01);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
    delay(100000);
        Transfercmd(0x06);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
    delay(100000);
        Transfercmd(0x84);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
    delay(100000);
}


void   lcd_mesg(unsigned char (*adder1))
{
        uint8_t i;
        delay(100000);
        Transfercmd(0x80);
        delay(100000);

        for(i=0;i<32;i++)
        {
                delay(100000);
                TransferData(*adder1);
                   adder1++;
                delay(100000);
               
        }

                Transfercmd(0x90);  //Set Graphic Display RAM Address
                delay(100000);

                for(i=32;i<64;i++)
                {
                        delay(100000);
                          TransferData(*adder1);
                           adder1++;
                        delay(100000);
                }
}

void LCD12864_init2(void)
{
        delay(400000);
        LPC_GPIO0->FIOSET |= PSB;
        delay(100000);
        LPC_GPIO0->FIOCLR |= RES;
        delay(100000);
        LPC_GPIO0->FIOSET |= RES;
        delay(100000);

        Transfercmd(0x36);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
    delay(100000);            //大于100uS的延时程序
    Transfercmd(0x36);  //Function Set
    delay(100000);             ////大于37uS的延时程序
        Transfercmd(0x3e);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
    delay(100000);
        Transfercmd(0x01);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
    delay(100000);
        Transfercmd(0x81);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
    delay(100000);
}

void DisplayGraphic(uint8_t *adder)
{
        uint8_t i,j;
        for(i=0;i<32;i++)
        {
                Transfercmd(0x80+i);
                delay(10000);
                Transfercmd(0x80);
                delay(10000);
                for(j=0;j<16;j++)
                {
                        TransferData(*adder);
                        adder++;
                        delay(1000);
                }
        }
        for(i=0;i<32;i++)
        {
                Transfercmd(0x80+i);
                delay(10000);
                Transfercmd(0x88);
                delay(10000);
                for(j=0;j<16;j++)
                {
                        TransferData(*adder);
                        adder++;
                        delay(1000);
                }
        }
}

出0入0汤圆

 楼主| 发表于 2013-6-25 14:15:41 | 显示全部楼层
//lcd 12864.h
#ifndef LCD_1602_H
#define LCD_1602_H

#define RS     0x00040000   //P1.18 Connect RS
#define RW     0x00080000   //P1.19 Connect RW
#define EN     0x00100000   //P1.20 Connect E  
#define PSB           0x00000001
#define RES           0x00000002




void    delay(uint32_t m);
void    delayms(unsigned int n);
void    Transfercmd(char cmd);
void    TransferData(char data);
void    LCD12864_init(void);
void    lcd_mesg(unsigned char (*adder1));
void    LCD12864_init2(void);
void    DisplayGraphic(uint8_t *adder);

#endif
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-12 12:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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