📄 yejing.c
字号:
#include "C8051F340.h"
#include "spi.h"
sbit sec = P2^0; //片选
sbit rst = P2^3; //复位,0复位
sbit oc = P2^2; //1写数据,0写指令
sbit sdin = P1^2; //数据
sbit sclk = P1^0; //时钟
xdata unsigned char code shuzi[]={
/*-- 文字: 2 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=6x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
0x18,0x84,0x44,0x24,0x18,0x00,0x03,0x02,0x02,0x02,0x02,0x00,
/*-- 文字: 0 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=6x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
0xF8,0x04,0x04,0x04,0xF8,0x00,0x01,0x02,0x02,0x02,0x01,0x00,
/*-- 文字: 0 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=6x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
0xF8,0x04,0x04,0x04,0xF8,0x00,0x01,0x02,0x02,0x02,0x01,0x00,
/*-- 文字: 9 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=6x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
0x38,0x44,0x44,0x44,0xF8,0x00,0x00,0x03,0x02,0x02,0x01,0x00,
};
xdata unsigned char code hanzi[]=
{
/*-- 文字: 全 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x10,0x10,0x88,0x94,0x92,0xF1,0x92,0x94,0x88,0x10,0x10,0x00,0x04,0x04,0x04,0x04,
0x04,0x07,0x04,0x04,0x04,0x04,0x04,0x00,
/*-- 文字: 国 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x00,0xFF,0x01,0x15,0x15,0xFD,0x15,0x55,0x95,0x01,0xFF,0x00,0x00,0x07,0x05,0x05,
0x05,0x05,0x05,0x05,0x05,0x05,0x07,0x00,
/*-- 文字: 大 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x08,0x08,0x08,0x08,0xC8,0x3F,0xC8,0x08,0x08,0x0C,0x08,0x00,0x04,0x04,0x02,0x01,
0x00,0x00,0x00,0x01,0x02,0x04,0x04,0x00,
/*-- 文字: 学 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x9C,0x84,0x95,0x96,0x95,0xD6,0xB4,0x94,0x87,0x94,0x8C,0x00,0x00,0x00,0x00,0x04,
0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 生 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x20,0x18,0x4E,0x48,0x48,0xFF,0x48,0x48,0x48,0x4C,0x08,0x00,0x04,0x04,0x04,0x04,
0x04,0x07,0x04,0x04,0x04,0x04,0x04,0x00,
/*-- 文字: 电 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x00,0xFC,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xFE,0x04,0x00,0x00,0x01,0x00,0x00,
0x00,0x03,0x04,0x04,0x04,0x04,0x06,0x00,
/*-- 文字: 子 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x20,0x21,0x21,0x21,0x21,0xF9,0x29,0x25,0x23,0x31,0x20,0x00,0x00,0x00,0x00,0x04,
0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 设 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x10,0x11,0xF2,0x20,0x10,0x6F,0xA1,0x21,0xAF,0x68,0x08,0x00,0x00,0x00,0x03,0x05,
0x04,0x04,0x02,0x01,0x02,0x04,0x04,0x00,
/*-- 文字: 计 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x10,0xF1,0x02,0x00,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,0x00,0x07,0x02,0x01,
0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,
/*-- 文字: 大 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x08,0x08,0x08,0x08,0xC8,0x3F,0xC8,0x08,0x08,0x0C,0x08,0x00,0x04,0x04,0x02,0x01,
0x00,0x00,0x00,0x01,0x02,0x04,0x04,0x00,
/*-- 文字: 赛 --*/
/*-- Trebuchet MS9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
0x84,0xA6,0x6A,0xEA,0x3E,0xAB,0x2A,0xFE,0x6A,0xAA,0xA6,0x00,0x00,0x04,0x04,0x05,
0x02,0x01,0x02,0x03,0x04,0x04,0x00,0x00,
};
/*--------------延时函数-----------*/
void delay(unsigned int ii)
{
unsigned int i,x;
for (x=0;x<ii;x++)
for (i=0;i<500;i++)
;
}
/*--------------------------------------------
LCD_write_byte: 使用SPI接口写数据到LCD
输入参数:dt:写入的数据;
command :写数据/命令选择;
----------------------------------------------*/
void LCD_write_byte(unsigned char dt, unsigned char command)
{
sec=0;
oc=command;
SPI0CN &=0x01;
SPI0DAT=dt;
while(!(SPI0CN&0x80));
oc=1;
sec=1;
sdin=1;
}
/*---------------------------------------
LCD_init: LCD初始化
----------------------------------------- */
void LCD_init(void)
{
rst=0;
delay(10);
rst=1;
LCD_write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
LCD_write_byte(0xd0,0);//设定液晶偏置电压
LCD_write_byte(0x20,0);//使用基本指令
LCD_write_byte(0x0C,0);//设定显示模式,正常显示
}
/*-------------------------------------------
LCD_set_XY: 设置LCD坐标函数
输入参数:X:0-83 Y:0-5
---------------------------------------------*/
void LCD_set_XY(unsigned char X, unsigned char Y)
{
LCD_write_byte(0x40 | Y, 0);// Y轴
LCD_write_byte(0x80 | X, 0);// X轴 右下角为(0,0)点
}
/*------------------------------------------
LCD_clear: LCD清屏函数
--------------------------------------------*/
void LCD_clear(void)
{
unsigned char t,k;
LCD_set_XY(0,0);
for(t=0;t<6;t++)
for(k=0;k<84;k++)
LCD_write_byte(0x00,1);
}
/*---------------------------------------------
LCD_write_shu: 显示6(宽)*16(高)点阵列数字字母符号等半角类
输入参数:row:列;
page:页;
c:显示的字符;
-----------------------------------------------*/
void LCD_write_shu(unsigned char row, unsigned char page,unsigned char c)
{
unsigned char i;
LCD_set_XY(row*6, page);// 列,页
for(i=0; i<6;i++)
{
LCD_write_byte(shuzi[c*12+i],1);
}
LCD_set_XY(row*6, page+1);// 列,页
for(i=6; i<12;i++)
{
LCD_write_byte(shuzi[c*12+i],1);
}
}
/*---------------------------------------------
LCD_write_hanzi: 显示12(宽)*16(高)点阵列汉字等半角类
输入参数:row:列;
page:页;
c:显示的字符;
-----------------------------------------------*/
void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char c)
{
unsigned char i;
LCD_set_XY(row*6, page);// 列,页
for(i=0; i<12;i++)
{
LCD_write_byte(hanzi[c*24+i],1);
}
LCD_set_XY(row*6, page+1);// 列,页
for(i=12; i<24;i++)
{
LCD_write_byte(hanzi[c*24+i],1);
}
}
main()
{
PCA0MD = 0x00 ; //关闭看门狗
XBR1 = 0x40 ; //交叉开关使能
P1MDOUT = 0xFF ;
P2MDOUT = 0xFF ;
Init_Device();
rst=0;
delay(10);
rst=1;
LCD_init(); //初始化LCD模块
LCD_clear(); //清屏幕
LCD_write_shu(0,0,0);
LCD_write_shu(1,0,0);
LCD_write_shu(2,0,0);
LCD_write_shu(3,0,0);
/* LCD_write_hanzi(0,0,0); //单
LCD_write_hanzi(2,0,1); //片
LCD_write_hanzi(4,0,2); //机
LCD_write_hanzi(6,0,3); //开
LCD_write_hanzi(8,0,4); //发
LCD_write_hanzi(10,0,5); //工
LCD_write_hanzi(12,0,6); //作
LCD_write_hanzi(0,2,7); //室
LCD_write_hanzi(1,4,8); //雨
LCD_write_hanzi(2,4,9); //亭
LCD_write_hanzi(3,4,10); //电
LCD_write_hanzi(4,4,11); //子
LCD_write_shu(10,4,0); //>
LCD_write_shu(11,4,1); //W
LCD_write_shu(12,4,2); //Y
LCD_write_shu(13,4,3); //G */
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -