智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2271|回复: 2
打印 上一主题 下一主题

急求mc9s08jm60单片机的12864驱动程序

[复制链接]

1

主题

2

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
威望
179
贡献
30
兑换币
4
注册时间
2011-7-15
在线时间
1 小时
跳转到指定楼层
1#
发表于 2011-7-25 19:50:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,如有请发给我,非常感谢

1

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
威望
241
贡献
28
兑换币
4
注册时间
2010-10-22
在线时间
10 小时
2#
发表于 2011-7-26 15:37:55 | 只看该作者
本帖最后由 牧羊人1990 于 2011-7-26 15:42 编辑

我用DZ32写的,12864是不带字库的,ks0107b控制器,程序我可以正常使用,希望能帮助你const UINT8 zimo[][]={{...},                     //存放16x16字模   
                                   {...},
                                      }


UINT8 string_num[][7]={{...},      //     存放要显示的字的编号            
                                     {...},
                                         .......}

/*---------------LCD初始化-------------------*/
void LCD_Init(void)
{
   //LCD_RST=0;       //LCD复位
   //delay(10);
   LCD_RST=1;     //正常工作              
   Read_status();   
   PTBDD=0xff;
   LCD_L=1;
   LCD_R=1;       //选择全屏
   LCD_RS=0;
   LCD_RW=0;
   LCD_E=1;
   LCD_Dx=0x3f;//开LCD
   delay(5);
   LCD_E=0;
   LCD_Clear0();                //清屏
   Init_Show();
}
/*-----------------读取状态----------------*/
void Read_status(void)
{
   
    unsigned char status;
    PTBDD=0x00;
    LCD_RS=0;
    LCD_RW=1;
    LCD_E=1;
    delay(2);
    status=LCD_Dx;
    delay(5);
    LCD_E=0;
   
    while(status&0x90);//busy 时等待
     
}
/*-------------------写指令函数------------------------*/
void Write_command(unsigned char adress_x ,unsigned char adress_y )
{
   
    unsigned char page,row;
    Read_status(); //检测是否忙碌
    PTBDD=0xff;
    if(adress_x<64)
    {
        LCD_L=1;//选择左半屏
        LCD_R=0;
        row=adress_x;
    }
    else
    {
        LCD_R=1;//选择右半屏
        LCD_L=0;
        row=adress_x-64;
    }
    page=adress_y;
   
    LCD_RS=0;
    LCD_RW=0;
    LCD_E=1;
    LCD_Dx=0xc0; //起始行设置    c0H+line(0~63)
                     
    delay(2);
    LCD_E=0;
    delay(2);      
    LCD_E=1;
    LCD_Dx=0xb8+page; //页面地址设置  b8H+page(0~7)  
           
    delay(2);
    LCD_E=0;
    delay(2);
   
    LCD_E=1;
    LCD_Dx=0x40+row;//列地址设置    40H+row
              
    delay(2);
    LCD_E=0;
   
}
/*------------------写数据函数-------------------*/
void Write_data(UINT8 row,UINT8 page, UINT8 data)
{
   
   Write_command(row,page);
   Read_status();//检测是否忙碌
   PTBDD=0xff;
   LCD_RS=1;
   LCD_RW=0;
   LCD_E=1;
   LCD_Dx=data;//写数据
   delay(10);
   LCD_E=0;
}

/*--------------指定位置写字符-------------*/
void Write_Character(UINT8 row,UINT8 page, UINT8 word_num)
{
    UINT8 m,n,*character;
    character=zimo[word_num];
    for(n=0;n<2;n++)
    {
        for(m=0;m<16;m++)
        {
            Write_data(row,page,*character);
            row++;
            character++;
               
        }
            row=row-16;
            page++;   
    }   
   
   
   
}

/*------------------写字符串------------*/
void Write_String(UINT8 row,UINT8 page,UINT8 *string,UINT8 word_num)
{
    UINT8 i;
    for(i=0;i<word_num;i++)
    {
        Write_Character(row+(i<<4),page,*(string+i));
    }
        
}
/*------------------LCD清全屏-----------------*/
void LCD_Clear0(void)
{
    UINT8 m,n;
    for(n=0;n<8;n++)
    {
        for(m=0;m<128;m++)
        {
            Write_data(m,n,0x00);   
        }   
    }


}


/*------------------清除指定矩形区域---------------*/
//(x0,y0),(x1,y1)指定矩形位置

void Clear_Area(UINT8 x0,UINT8 y0,UINT8 x1,UINT8 y1)
{
    UINT8 page,row,n,num_page;
    num_page=y1-y0;
    num_page=num_page>>3;           //区域共占有的页数
    for(n=0;n<=num_page;n++)
    {
        row=x0;
        page=(y0>>3)+n;
        for(;row<x1;row++)
        {

            Write_data(row,page,0x00);   
        }   
    }                 

}
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-28 10:15 , Processed in 0.052725 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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