📄 og.c
字号:
#include "og.h"
#include "msp430x16x.h"
#include "at45db041.h"
extern unsigned char zh[][32]=
{//0
/*-- 文字: 纪 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x70,0x2C,0xA3,0x60,0x18,0x00,0xC2,0x42,0x42,0x42,0x42,0x42,0x7E,0x00,0x00,
0x10,0x32,0x13,0x12,0x0A,0x0A,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x78,0x20,0x00,
//1
/*-- 文字: 家 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x18,0x04,0x14,0x94,0x94,0xD5,0xB6,0x14,0x14,0x94,0x04,0x14,0x0C,0x04,0x00,
0x00,0x29,0x29,0x15,0x14,0x4A,0x89,0x44,0x3F,0x06,0x09,0x09,0x10,0x30,0x10,0x00,
//2
/*-- 文字: 刚 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xFE,0x0A,0x32,0xC2,0x32,0x0A,0xFE,0x00,0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,
0x00,0x7F,0x04,0x03,0x00,0x23,0x64,0x3F,0x00,0x00,0x0F,0x20,0x40,0x3F,0x00,0x00,
//3
/*-- 文字: 正 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,
0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
//4
/*-- 文字: 反 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xFE,0x12,0x72,0x92,0x12,0x12,0x12,0x11,0x91,0x71,0x01,0x00,0x00,0x00,
0x40,0x30,0x4F,0x40,0x20,0x21,0x12,0x0C,0x0C,0x12,0x11,0x20,0x60,0x20,0x00,0x00,
//5
/*-- 文字: 向 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xFC,0x04,0x04,0xE6,0x25,0x24,0x24,0x24,0xE4,0x04,0x04,0xFC,0x00,0x00,
0x00,0x00,0x7F,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x0F,0x20,0x40,0x3F,0x00,0x00,
//6
/*-- 文字: 特 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x1C,0x10,0xFF,0x90,0xB0,0x24,0x24,0x24,0x3F,0x24,0xE4,0x24,0x24,0x20,0x00,
0x02,0x02,0x01,0xFF,0x00,0x00,0x01,0x05,0x19,0x41,0x81,0x7F,0x01,0x01,0x01,0x00,
//7
/*-- 文字: 性 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x70,0x00,0xFF,0x08,0x30,0x40,0x30,0x1E,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x00,
0x00,0x00,0x7F,0x00,0x00,0x20,0x20,0x21,0x21,0x21,0x3F,0x21,0x21,0x21,0x20,0x00,
//8
/*-- 文字: 击 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x88,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0x88,0xC0,0x80,0x00,
0x00,0x00,0x00,0x7E,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x7E,0x00,0x00,0x00,
//9
/*-- 文字: 穿 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x0C,0x24,0x14,0xAC,0x24,0x25,0x26,0x24,0xE4,0x2C,0x14,0x24,0x0C,0x04,0x00,
0x40,0x40,0x20,0x22,0x13,0x12,0x0A,0x46,0x82,0x7F,0x02,0x02,0x02,0x02,0x00,0x00,
//10
/*-- 文字: iD --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0xFF,0x81,0x81,0x42,0x3C,0x00,0x00,0x00,
//11
/*-- 文字: uD --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,0x00,0xFE,0x82,0x82,0x44,0x38,0x00,0x00,
};
extern unsigned char xu[]=
{
/*-- 文字: 电 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,
/*-- 文字: 子 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,
0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
/*-- 文字: 科 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x12,0x92,0x72,0xFE,0x51,0x91,0x00,0x22,0xCC,0x00,0x00,0xFF,0x00,0x00,0x00,
0x04,0x02,0x01,0x00,0xFF,0x00,0x04,0x04,0x04,0x02,0x02,0x02,0xFF,0x01,0x01,0x00,
/*-- 文字: 技 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x08,0x88,0xFF,0x48,0x28,0x00,0xC8,0x48,0x48,0x7F,0x48,0xC8,0x48,0x08,0x00,
0x01,0x41,0x80,0x7F,0x00,0x40,0x40,0x20,0x13,0x0C,0x0C,0x12,0x21,0x60,0x20,0x00,
/*-- 文字: 大 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00,
/*-- 文字: 学 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
};
unsigned char OG_Digit[][16]=
{
/*-- 文字: 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,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*-- 文字: 2 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
/*-- 文字: 3 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 4 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
/*-- 文字: 5 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 6 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 7 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,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,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
//10
/*-- 文字: + --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,
//11
/*-- 文字: - --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
//12
/*-- 文字: = --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
//13
/*-- 文字: < --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,
//14
/*-- 文字: > --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,
//15
/*-- 文字: ( --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,
//16
/*-- 文字: ) --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,
//17
/*-- 文字: / --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,
//18
/*-- 文字: I --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
//19
/*-- 文字: U --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,
//20
/*-- 文字: V --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,
//21
/*-- 文字: B --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,
//22
/*-- 文字: R --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,
//23
/*-- 文字: S --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,
//24
/*-- 文字: t --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,
//25
/*-- 文字: h --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,
//26
/*-- 文字: u --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,
//27
/*-- 文字: m --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,
//28
/*-- 文字: A --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,
};
/*
********************************************************************************
**函数名称: void OG_Init(void)
**函数功能: 示波器显示初始化
**入口参数: 无
**出口参数: 无
********************************************************************************
*/
void OG_Init(void)
{
ADC12CTL0 = REFON + REF2_5V;
DAC12_0CTL = DAC12IR + DAC12AMP_7 + DAC12ENC;
DAC12_1CTL = DAC12IR + DAC12AMP_7 + DAC12ENC;
DAC12_0DAT = 0x0000;
DAC12_1DAT = 0x0000;
}
/*
********************************************************************************
函数名称:DA_Disp()
函数功能:设置DA输出
入口参数:unsigned a:DA0的输出; unsigned b:DA1的输出
出口参数:无
********************************************************************************
*/
void DA_Disp(unsigned int a,unsigned int b)
{
DAC12_0DAT = a;
DAC12_1DAT = b;
}
/*
********************************************************************************
函数名称:OG_Disp() "oscillograph display"
函数功能:在模拟示波器上显示图形或字符
取模方式:纵向,倒序
OG_X:起始X
OG_Y:起始Y
*GP:图象地址
P_X:象素
P_Y:象素
M:每点之间间距
********************************************************************************
*/
void OG_Disp(unsigned int OG_X,unsigned int OG_Y,unsigned char *GP,
unsigned int P_X,unsigned int P_Y,unsigned char M_X,unsigned char M_Y)
{
unsigned char i;
unsigned char tmp;
unsigned int OG_I; //高度计数
unsigned int OG_J; //宽度计数
//unsigned int GP_Len = P_X*P_Y/8; //GP长度
unsigned char GP_High = P_Y/8; //GP的高度,有几层
for(OG_I=0;OG_I<GP_High;OG_I++)
{
for(OG_J=0;OG_J<P_X;OG_J++)
{
tmp = GP[OG_I*P_X+OG_J];
for(i=0;i<8;i++)
{
if(tmp&0x80)
{
DA_Disp(OG_X+OG_J*M_X,OG_Y+(GP_High-1-OG_I)*8*M_Y+i*M_Y);
}
tmp<<=1;
}
}
}
}
/*
********************************************************************************
**函数名称: void OG_Disp_Char()
**函数功能: 在示波器上显示16X16的汉字.,每两点之间间隔15,4096/15=272
** 取模方式:横向取模,字节顺序
** 显示17X17个中文汉字
** 将示波器分辨率看成272X272的点阵
**入口参数: unsigned int OG_X--显示位置X
** unsigned int OG_Y--显示位置Y
** unsigned char *GP--待显示的字模数组
**出口参数: 无
********************************************************************************
*/
void OG_Disp_Char(unsigned int OG_X,unsigned int OG_Y,unsigned char *GP)
{
unsigned char P_X = 16;
unsigned char P_Y = 16;
unsigned char i;
unsigned char tmp;
unsigned int OG_I; //高度计数
unsigned int OG_J; //宽度计数
//unsigned int GP_Len = P_X*P_Y/8; //GP长度
unsigned char GP_Len = P_X/8; //GP的长度,有几层
for(OG_I=0;OG_I<P_Y;OG_I++)
{
for(OG_J=0;OG_J<GP_Len;OG_J++)
{
tmp = GP[OG_I*GP_Len+OG_J];
for(i=0;i<8;i++)
{
if(tmp&0x80)
{
DA_Disp((OG_X*16+OG_J*8+i)*15,(OG_Y*16+P_Y-OG_I)*15);
}
tmp<<=1;
}
}
}
}
/*
********************************************************************************
**函数名称: void OG_Display_Array()
**函数功能: 在示波器上显示汉字
** 使用范例:OG_Display_Array("我爱北京天安门",14,0,16);
**入口参数: unsigned char *data--待显示的汉字
** unsigned char data_L--待显示的汉字的长度
** unsigned char dirX--显示位置X
** unsigned char dirY--显示位置Y
**出口参数: 无
********************************************************************************
*/
void OG_Display_Array(unsigned char *data,unsigned char data_L,unsigned char dirX,unsigned char dirY)
{
unsigned char chNum = data_L/2;
unsigned int P_Addr; //页地址
unsigned char B_Addr; //页内字节地址
unsigned char chI;
unsigned char chJ;
unsigned int rowNum; //行号
unsigned char tmpzimo[32];
for(chI=0;chI<chNum;chI++)
{
rowNum=((data[chI*2]-0xA1)*94 + (data[chI*2+1]-0xA1))*2;
P_Addr = rowNum/16;
B_Addr = (rowNum/2 - P_Addr*16)*32;
DF_Read_Main(P_Addr,B_Addr,32);
for(chJ=0;chJ<32;chJ++)
{
tmpzimo[chJ] = DF_R[chJ];
}
OG_Disp_Char(dirX+chI,dirY,tmpzimo);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -