找回密码
 立即注册

QQ登录

只需一步,快速开始

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

12864乱码问题求解答

[复制链接]
跳转到指定楼层
楼主
ID:74815 发表于 2016-4-28 19:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
把51的显示移植到飞思卡尔MC9S08DZ60上,可以显示,但是是乱码,乱的一塌糊涂,第几行都对不上,程序代码如下,求高手解答和指点,谢谢。


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include <math.h>



#define  LCD_data  PTED                                           // 引脚定义
#define  LCD_RS PTBD_PTBD0
#define  LCD_RW PTBD_PTBD1
#define  LCD_EN PTBD_PTBD2
#define  LCD_PSB PTBD_PTBD3


byte DIS1[]={"行李分拣系统状态"};          
byte DIS2[]={"空位量00000000件"};
byte DIS3[]={"补货量00000000件"};
byte DIS4[]={"运行状态:fast  "};
byte DIS5[]={"运行状态:slow  "};



byte table[]={'0','1','2','3','4','5','6','7','8','9'};

byte i,numbuf,numbuf1,a,b,c,d,e;

/******************************12864*****************************************************/
void delay_ms(unsigned int ms)                                 //延时函数     1ms
{
        unsigned int i,j;
        for(j=0;j<=ms;j++)
        {
                for(i=0;i<=120;i++)
                {}
        }
}
void delay(uint z)
{
        uint x;
        for(x=z;x>0;x--)
        ;
}
                                                          

void LCD_wcmd(uchar cmd)        //写指令函数
{                          

    LCD_RS = 0;                 //RS至低,指令操作
    LCD_RW = 0;                 //RW至低,写操作
    LCD_EN = 0;
     delay(5);
    PTED = cmd;                        //指令数据
          delay(5);                                
    LCD_EN = 1;                        //给使能端一个上升沿保存数据
     delay(5);
    LCD_EN = 0;
    delay(5);   
}



void LCD_wdat(uchar dat)        //写数据函数
{

    LCD_RS = 1;                        //RS至高,数据操作
    LCD_RW = 0;
    LCD_EN = 0;
    PTED= dat;                        //给LCD要显示的数据
     delay(5);
    LCD_EN = 1;                        //给使能端一个上升沿保存数据
     delay(5);
    LCD_EN = 0;
    delay(5);  
}

void LCDinit()                 //初始化12864LCD
{     
    LCD_PSB=1;
    LCD_wcmd(0x30);      //初级指令集
    delay_ms(5);

    LCD_wcmd(0x0C);      //开显示
    delay_ms(5);
    LCD_wcmd(0x01);      //清屏
    delay_ms(5);
}
void  showLCD_12864()
{     
           LCD_wcmd(0x80);  //第一行首地址

        for(i=0;i<16;i++)
        {   
                LCD_wdat(DIS1[i]);
                delay(100);
       
        }

        LCD_wcmd(0x90); //第二行首地址
        for(i=0;i<16;i++)
        {      
                LCD_wdat(DIS2[i]);
                delay(100);
        }


        LCD_wcmd(0x88);  //第三行首地址
        for(i=0;i<16;i++)
        {      
                LCD_wdat(DIS3[i]);
                delay(100);
        }

           LCD_wcmd(0x98);  //第4行首地址
        for(i=0;i<16;i++)
           delay(100);   
        {        if(numbuf==55)
            {
                LCD_wdat(DIS4[i]);
                    }
                        else
                        {
                   LCD_wdat(DIS5[i]);
                        }
        }





}
/******************************按键****************************************************/

void  main()
{   
  PTEDD=0xff;                                          // 引脚定义
  PTBDD=0x0f;
     numbuf=55;
   numbuf1=66;
   LCDinit();
for(;;)
{




         showLCD_12864();
          delay_ms(500);
    __RESET_WATCHDOG();      
}
     /* feeds the dog */
  /* loop forever */
  /* please make sure that you never leave main */
}


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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