找回密码
 立即注册

QQ登录

只需一步,快速开始

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

MSP430单片机12864显示原代码

[复制链接]
跳转到指定楼层
楼主
ID:208712 发表于 2017-6-7 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*
* LCD_12864.c
*
*  Created on: 2016年6月15日
*      Author: Jack zhao
*/
#include<MSP430F249.h>
#include "LCD_12864.h"
#define uchar unsigned char
#define uint unsigned int
uchar DIR_S[]={
                /*--  文字:  顺  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x00,0xFE,0x00,0xFC,0x00,0xFF,0x00,0xF2,0x12,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
                0x40,0x3F,0x00,0x3F,0x00,0xFF,0x80,0x4F,0x20,0x18,0x07,0x10,0x20,0x4F,0x80,0x00,
                /*--  文字:  时  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,
                0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00,
                /*--  文字:  针  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x40,0x20,0x38,0xE7,0x24,0x24,0x44,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x00,
                0x01,0x01,0x01,0x7F,0x21,0x11,0x09,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,
};
uchar DIR_N[]={
                /*--  文字:  逆  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x40,0x42,0xCC,0x00,0x08,0xC8,0x09,0x0E,0x08,0xF8,0x08,0x0C,0x0B,0xC8,0x08,0x00,
                0x40,0x20,0x1F,0x20,0x40,0x63,0x52,0x4A,0x46,0x43,0x42,0x42,0x42,0x47,0x40,0x00,
                /*--  文字:  时  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,
                0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00,
                /*--  文字:  针  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x40,0x20,0x38,0xE7,0x24,0x24,0x44,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x00,
                0x01,0x01,0x01,0x7F,0x21,0x11,0x09,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,
};
uchar  num1[]={
                /*--  文字:  课  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x40,0x42,0xCC,0x00,0x00,0x00,0xFE,0x92,0x92,0xFE,0x92,0x92,0xFE,0x00,0x00,0x00,
                0x00,0x00,0x3F,0x10,0x08,0x22,0x12,0x0A,0x06,0xFF,0x06,0x0A,0x12,0x22,0x20,0x00,
                /*--  文字:  程  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0x3E,0x22,0x22,0x22,0x22,0x22,0x3E,0x00,0x00,
                0x08,0x06,0x01,0xFF,0x01,0x06,0x40,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,
                /*--  文字:  设  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9E,0x82,0x82,0x82,0x9E,0xA0,0x20,0x20,0x00,
                0x00,0x00,0x00,0x3F,0x90,0x88,0x40,0x43,0x2C,0x10,0x28,0x46,0x41,0x80,0x80,0x00,
                /*--  文字:  计  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x40,0x40,0x42,0xCC,0x00,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0x00,
                0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar  num[]={
                /*--  文字:  电  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,
                0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00,
                /*--  文字:  机  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,
                0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,

                /*--  文字:  控  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x10,0x10,0x10,0xFF,0x90,0x20,0x98,0x48,0x28,0x09,0x0E,0x28,0x48,0xA8,0x18,0x00,
                0x02,0x42,0x81,0x7F,0x00,0x40,0x40,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x40,0x00,
                /*--  文字:  制  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x40,0x50,0x4E,0x48,0x48,0xFF,0x48,0x48,0x48,0x40,0xF8,0x00,0x00,0xFF,0x00,0x00,
                0x00,0x00,0x3E,0x02,0x02,0xFF,0x12,0x22,0x1E,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,
                /*--  文字:  调  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x40,0x42,0xCC,0x00,0x00,0xFE,0x82,0x92,0x92,0xFE,0x92,0x92,0x82,0xFE,0x00,0x00,
                0x00,0x00,0x3F,0x10,0x88,0x7F,0x00,0x1E,0x12,0x12,0x12,0x5E,0x80,0x7F,0x00,0x00,

                /*--  文字:  速  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x40,0x40,0x42,0xCC,0x00,0x04,0xF4,0x94,0x94,0xFF,0x94,0x94,0xF4,0x04,0x00,0x00,
                0x00,0x40,0x20,0x1F,0x20,0x48,0x44,0x42,0x41,0x5F,0x41,0x42,0x44,0x48,0x40,0x00,
                /*--  文字:  系  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x00,0x00,0x22,0x32,0x2A,0xA6,0xA2,0x62,0x21,0x11,0x09,0x81,0x01,0x00,0x00,0x00,
                0x00,0x42,0x22,0x13,0x0B,0x42,0x82,0x7E,0x02,0x02,0x0A,0x12,0x23,0x46,0x00,0x00,

                /*--  文字:  统  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x20,0x30,0xAC,0x63,0x30,0x00,0x88,0xC8,0xA8,0x99,0x8E,0x88,0xA8,0xC8,0x88,0x00,
                0x22,0x67,0x22,0x12,0x12,0x80,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x40,0x71,0x00,
};
uchar num2[]={
                /*--  文字:  转  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0xC8,0xB8,0x8F,0xE8,0x88,0x88,0x40,0x48,0x48,0xE8,0x5F,0x48,0x48,0x48,0x40,0x00,
                0x08,0x18,0x08,0xFF,0x04,0x04,0x00,0x02,0x0B,0x12,0x22,0xD2,0x0A,0x06,0x00,0x00,
                /*--  文字:  速  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x40,0x40,0x42,0xCC,0x00,0x04,0xF4,0x94,0x94,0xFF,0x94,0x94,0xF4,0x04,0x00,0x00,
                0x00,0x40,0x20,0x1F,0x20,0x48,0x44,0x42,0x41,0x5F,0x41,0x42,0x44,0x48,0x40,0x00,
                /*--  文字:  :  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar num3[]={
                /*--  文字:  转  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0xC8,0xB8,0x8F,0xE8,0x88,0x88,0x40,0x48,0x48,0xE8,0x5F,0x48,0x48,0x48,0x40,0x00,
                0x08,0x18,0x08,0xFF,0x04,0x04,0x00,0x02,0x0B,0x12,0x22,0xD2,0x0A,0x06,0x00,0x00,
                /*--  文字:  向  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x00,0xF8,0x08,0x08,0x0C,0xCA,0x49,0x48,0x48,0xC8,0x08,0x08,0x08,0xF8,0x00,0x00,
                0x00,0xFF,0x00,0x00,0x00,0x1F,0x08,0x08,0x08,0x1F,0x00,0x40,0x80,0x7F,0x00,0x00,
                /*--  文字:  :  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar shuzi[]={
                /*--  文字:  0  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
                /*--  文字:  1  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,
                /*--  文字:  2  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
                /*--  文字:  3  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00,
                /*--  文字:  4  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24,
                /*--  文字:  5  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00,
                /*--  文字:  6  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,
                /*--  文字:  7  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00,
                /*--  文字:  8  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
                /*--  文字:  9  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x01,0x12,0x22,0x22,0x11,0x0F,0x00,
};
uchar RMP[]={
                /*--  文字:  r  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,
                /*--  文字:  /  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0x00,0x00,0x00,0xC0,0x38,0x04,0x00,0x00,0x60,0x18,0x07,0x00,0x00,0x00,0x00,
                /*--  文字:  m  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,
                /*--  文字:  i  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
                /*--  文字:  n  --*/
                /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
                0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,
};
void left()                 //左半屏
{
        P6OUT&=~BIT0;//cs1=0;
        P6OUT|=BIT1;//cs2=1;
}
void right()                 //右半屏
{
        P6OUT|=BIT0;//cs1=1;
        P6OUT&=~BIT1;//cs2=0;
}
//判忙
void busy_12864()
{
        do{
        P6OUT&=~BIT4;//e=0;
        _NOP();
        P6OUT&=~BIT2;//rs=0;
        P6OUT|=BIT3;//rw=1;
            P5OUT=0x00;
        P6OUT|=BIT4;//e=1;
        P6OUT&=~BIT4;//e=0;
          }while(!(bflag==0X00));
}
//命令写入
void wreg(uchar c)
{
        busy_12864();
        P6OUT&=~BIT2;//rs=0;
        P6OUT&=~BIT3;//rw=0;
        P6OUT&=~BIT4;//E=0
        _NOP();
        _NOP();
        P5OUT=c;
        _NOP();
        _NOP();
        _NOP();
        _NOP();
        P6OUT|=BIT4;//e=1;
        _NOP();
        _NOP();
        _NOP();
        _NOP();
        P6OUT&=~BIT4;//e=0;
}
//数据写入
void wdata(uchar c)
{
        busy_12864();
        P6OUT|=BIT2;//rs=1
        P6OUT&=~BIT3;//rw=0
        P5OUT=c;
        _NOP();
        _NOP();
        _NOP();
        _NOP();
        P6OUT|=BIT4;//e=1
        _NOP();
        _NOP();
        _NOP();
        _NOP();
        P6OUT&=~BIT4;
}
//显示初始页
void pagefirst(uchar c)
{
        uchar i=c;
        c=i|0xb8;
        busy_12864();
        wreg(c);
}
//设置显示初始列
void linefirst(uchar c)
{
        uchar i=c;
        c=i|0x40;
        busy_12864();
        wreg(c);}
//清屏
void ready_12864()
{
        uint i,j;
        left();
        wreg(0x3f);
        right();
        wreg(0x3f);
        left();
        for(i=0;i<8;i++)
    {
                pagefirst(i);
            linefirst(0x00);
                   for(j=0;j<64;j++)
                {
                        wdata(0x00);
                }
        }
        right();
        for(i=0;i<8;i++)
        {
                pagefirst(i);
                linefirst(0x00);
                for(j=0;j<64;j++)
                {
                        wdata(0x00);
                }
        }
}
//16*16汉字显示,纵向取模,字节倒序
void display(uchar *s,uchar page,uchar line)
{
        uchar i,j;
        pagefirst(page);
        linefirst(line);
        for(i=0;i<16;i++)
        {
                wdata(*s);s++;
        }
        pagefirst(page+1);
        linefirst(line);
        for(j=0;j<16;j++)
        {
                wdata(*s);s++;
        }
}
//8*16汉字显示,纵向取模,字节倒序
void display_sz(uchar *s,uchar page,uchar line)
{
        uchar i,j;
        pagefirst(page);
        linefirst(line);
        for(i=0;i<8;i++)
        {
                wdata(*s);s++;
        }
        pagefirst(page+1);
        linefirst(line);
        for(j=0;j<8;j++)
        {
                wdata(*s);s++;
        }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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