⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yejing.c

📁 单片机液晶显示12864.rar
💻 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 + -