📄 lcd240.c
字号:
#include "p18f452.h"
#include <math.h>
#define LcdDataPort LATD //P1
//-------Lcd的D0-D7对应PORTB口0-7 数据总线
//#define pLcdWr RD7 //写信号 低电平有效
//#define pLcdRd RD3 //RD2 //读信号 低电平有效
//#define pLcdCd RD2 //RD3 //数据\指令选择 1=指令 0=数据
//#define pBackLight RC5 //背光控制
#define pBackLight LATCbits.LATC1 //LCD的背光控制
#define pBuzOut LATCbits.LATC2 //蜂鸣器输出控制
//#define pLcdCe RC4 //片选信号 低电平有效
#define pLcdCd LATCbits.LATC3 //数据\指令选择 1=指令 0=数据
#define pLcdWr LATCbits.LATC4 //写信号 低电平有效
#define pLcdRd LATCbits.LATC5 //读信号 低电平有效
#define nop() asm("nop")
void sDelay(unsigned char rTemp);
void sInitPort(void);
#define uint unsigned int
#define uchar unsigned char
#define Graphic 1
#define TXT 0
#define LcmLengthDots 240
#define LcmWidthDots 128 //64
#define LineChar 30 // 240/8=30
uchar rCount1;
const rom char CharTable[][16]=
{
/*-- 文字: 0 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
/*-- 文字: 1 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
/*-- 文字: 2 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,
/*-- 文字: 3 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,
/*-- 文字: 4 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,
/*-- 文字: 5 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,
/*-- 文字: 6 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
/*-- 文字: 7 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,
/*-- 文字: 8 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,
/*-- 文字: 9 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,
/*-- 文字: : Index=10--*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,
/*-- 文字: / --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x00,
/*-- 文字: % Index=12--*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x44,0xA4,0xA8,0xA8,0xA8,0x54,0x1A,0x2A,0x2A,0x2A,0x44,0x00,0x00,
/*-- 文字: N Index=13--*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0xC7,0x62,0x62,0x52,0x52,0x4A,0x4A,0x4A,0x46,0x46,0xE2,0x00,0x00,
/*-- 文字: o Index=14--*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,
/*-- 文字: . Index=15--*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,
/*-- 文字: # --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x24,0x24,0x24,0xFE,0x48,0x48,0x48,0xFE,0x48,0x48,0x48,0x00,0x00,
};
const rom char HZTable[][32]=
{
//--------------------------------------------------------------------------------------------
//--试验频率次分钟占空比 类 型 常 开 闭 路 数 检 测 正 粘 连 断 温 度 触 点 继 续 停 止 状 态 转 换 ℃ ------
//---0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
/*-- 文字: 试 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x20,0x40,0x28,0x20,0x24,0x30,0x24,0x27,0xFE,0x00,0x20,0xE0,0x20,0x27,0xE0,
0x21,0x20,0x21,0x10,0x21,0x10,0x21,0x0A,0x29,0xCA,0x36,0x06,0x20,0x02,0x00,0x00,
/*-- 文字: 验 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF8,0x40,0x08,0x40,0x48,0xA0,0x48,0x90,0x49,0x0E,0x4B,0xF0,0x7C,0x00,
0x04,0x84,0x06,0x44,0x35,0x48,0xC5,0x48,0x04,0x10,0x17,0xFE,0x08,0x00,0x00,0x00,
/*-- 文字: 频 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x00,0x08,0xFE,0x4E,0x20,0x48,0x40,0x48,0xFC,0xFE,0x84,0x00,0xA4,0x08,0xA4,
0x4A,0xA4,0x4A,0xA4,0x84,0xA4,0x08,0x50,0x10,0x48,0x20,0x86,0xC3,0x02,0x00,0x00,
/*-- 文字: 率 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x00,0x01,0x00,0x7F,0xFE,0x41,0x00,0x22,0x28,0x17,0xD0,0x04,0x80,0x11,0x10,
0x22,0x48,0x47,0xC4,0x01,0x20,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
/*
/*-- 文字: 次 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x01,0x00,0x41,0x00,0x25,0x00,0x25,0xFE,0x2A,0x44,0x0A,0x48,0x14,0x40,0x10,0x40,
0x20,0xC0,0xE0,0xA0,0x41,0x20,0x42,0x10,0x44,0x08,0x18,0x0E,0x60,0x04,0x00,0x00,
/*-- 文字: 分 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x80,0x0C,0x80,0x08,0x40,0x10,0x20,0x10,0x30,0x20,0x18,0x40,0x0E,0x9F,0xE4,
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x10,0xA0,0x20,0x40,0x40,0x00,
/*-- 文字: 钟 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x20,0x10,0x20,0x20,0x20,0x3D,0xFC,0x41,0x24,0x7D,0x24,0x91,0x24,0x11,0x24,
0xFD,0xFC,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x14,0x20,0x18,0x20,0x10,0x20,
/*-- 文字: 占 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xFC,0x02,0x00,0x02,0x00,0x02,0x00,0x3F,0xF0,
0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x3F,0xF0,0x20,0x10,0x00,0x00,
/*-- 文字: 空 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x84,0x44,0x08,0x20,0x10,0x10,0x20,0x08,
0x1F,0xF0,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFC,0x00,0x00,
/*-- 文字: 比 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x3E,0x8E,0x20,0xF0,0x20,0x80,
0x20,0x80,0x20,0x80,0x20,0x80,0x24,0x82,0x28,0x82,0x30,0x82,0x20,0x7E,0x00,0x00,
/*-- 文字: 类 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x21,0x08,0x11,0x10,0x09,0x20,0x7F,0xFE,0x03,0x80,0x0D,0x60,0x31,0x18,0xC1,0x04,
0x01,0x00,0xFF,0xFE,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x30,0x30,0x0E,0xC0,0x04,
/*-- 文字: 型 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x04,0x7F,0x84,0x12,0x24,0x12,0x24,0xFF,0xE4,0x12,0x24,0x12,0x24,0x22,0x24,
0x22,0x04,0x41,0x14,0x01,0x08,0x3F,0xFC,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,
/*-- 文字: 常 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x11,0x10,0x0D,0x18,0x09,0x20,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x08,0x20,0x0F,0xE0,
0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x28,0x21,0x10,0x01,0x00,0x01,0x00,
/*-- 文字: 开 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x7F,0xFE,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0xFF,0xFE,0x04,0x20,
0x04,0x20,0x04,0x20,0x08,0x20,0x08,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x00,0x00,
/*-- 文字: 闭 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x00,0x1B,0xFC,0x08,0x04,0x20,0x84,0x20,0x84,0x20,0x84,0x2F,0xF4,0x20,0x84,
0x21,0x84,0x22,0x84,0x2C,0x84,0x20,0x84,0x22,0x84,0x21,0x04,0x20,0x14,0x20,0x08,
/*-- 文字: 路 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x78,0x80,0x48,0xFC,0x49,0x88,0x4A,0x48,0x7C,0x50,0x50,0x20,0x10,0x58,
0x5D,0x86,0x53,0xFC,0x51,0x08,0x51,0x08,0x5D,0x08,0xE1,0xF8,0x01,0x08,0x00,0x00,
/*-- 文字: 数 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x20,0x49,0x30,0x2A,0x20,0x1C,0x20,0xFF,0x7E,0x1C,0x44,0x2B,0x44,0x48,0xC4,
0x08,0x28,0xFF,0x28,0x12,0x10,0x34,0x10,0x0C,0x28,0x32,0x4E,0xC0,0x84,0x00,0x00,
/*-- 文字: 检 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x40,0x10,0x40,0x10,0xA0,0xFD,0x10,0x12,0x0E,0x38,0x00,0x35,0xF8,0x50,0x00,
0x50,0x88,0x92,0x4C,0x11,0x48,0x11,0x50,0x10,0x20,0x17,0xFE,0x10,0x00,0x00,0x00,
/*-- 文字: 测 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x02,0x27,0xC2,0x24,0x42,0x84,0x52,0x45,0x52,0x55,0x52,0x15,0x52,0x25,0x52,
0x25,0x52,0x25,0x52,0xC5,0x52,0x41,0x02,0x42,0x82,0x42,0x42,0x44,0x4A,0x48,0x04,
/*-- 文字: 正 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x7F,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x10,0x80,0x10,0xFC,
0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0xFF,0xFE,0x00,0x00,0x00,0x00,
/*-- 文字: 粘 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x40,0x10,0x40,0x10,0x40,0x94,0x40,0x54,0x7E,0x58,0x40,0xFE,0x40,0x30,0x40,
0x39,0xFC,0x55,0x04,0x55,0x04,0x51,0x04,0x91,0x04,0x11,0x04,0x11,0xFC,0x11,0x04,
/*-- 文字: 连 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x80,0x20,0x80,0x37,0xFC,0x21,0x00,0x01,0x40,0x02,0x40,0xF7,0xF8,0x12,0x40,
0x10,0x40,0x1F,0xFE,0x10,0x40,0x10,0x40,0x10,0x40,0x28,0x00,0x47,0xFE,0x00,0x00,
/*-- 文字: 断 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0x00,0x44,0x0E,0x65,0x70,0x55,0x40,0x56,0x40,0x44,0x40,0x7F,0x7E,0x4C,0x48,
0x56,0x48,0x55,0x48,0x64,0x48,0x44,0x88,0x44,0x88,0x7F,0x08,0x02,0x08,0x00,0x08,
/*-- 文字: 温 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x00,0x27,0xF0,0x24,0x10,0x07,0xF0,0x94,0x10,0x54,0x10,0x17,0xF0,0x20,0x00,
0x2F,0xFC,0xC9,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x5F,0xFE,0x40,0x00,
/*-- 文字: 度 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x2F,0xFC,0x22,0x20,0x23,0xE0,
0x20,0x00,0x27,0xF8,0x22,0x10,0x21,0x20,0x20,0xC0,0x41,0x30,0x46,0x0E,0x98,0x04,
/*-- 文字: 触 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x10,0x3F,0x10,0x21,0x10,0x42,0x10,0x7F,0x7C,0xC9,0x54,0x7F,0x54,0x49,0x54,
0x49,0x54,0x7F,0x7C,0x49,0x10,0x49,0x14,0x49,0x12,0x49,0x1E,0x85,0xF2,0x02,0x00,
/*-- 文字: 点 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x01,0x00,0x01,0x00,0x01,0xF8,0x01,0x00,0x01,0x10,0x1F,0xF8,0x10,0x10,0x10,0x10,
0x10,0x10,0x1F,0xF0,0x10,0x10,0x01,0x10,0x28,0x88,0x24,0x44,0x44,0x44,0x00,0x00,
/*-- 文字: 继 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x20,0x32,0x20,0x22,0x24,0x43,0x24,0x4A,0xA8,0xFA,0x20,0x13,0xFE,0x22,0x70,
0x42,0x68,0xFA,0xA4,0x02,0xA4,0x03,0x20,0x1A,0x20,0xE2,0x00,0x03,0xFE,0x00,0x00,
/*-- 文字: 续 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x40,0x18,0x40,0x11,0xFC,0x20,0x40,0x4B,0xFE,0xF1,0x24,0x10,0xA8,0x22,0xA0,
0x41,0x20,0xF7,0xFE,0x00,0x20,0x00,0x50,0x18,0x48,0xE0,0x84,0x01,0x04,0x00,0x00,
/*-- 文字: 停 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x40,0x0C,0x20,0x0B,0xFE,0x10,0x00,0x11,0xF8,0x31,0x08,0x51,0xF8,0x90,0x00,
0x17,0xFE,0x14,0x02,0x11,0xFC,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0xA0,0x10,0x40,
/*-- 文字: 止 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x08,0x80,0x08,0x80,0x08,0xFC,0x08,0x80,
0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0xFF,0xFE,0x00,0x00,
/*-- 文字: 状 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0xA0,0x10,0x90,0x10,0x98,0x90,0x88,0x50,0x80,0x5F,0xFE,0x10,0xA0,0x10,0xA0,
0x31,0x20,0x51,0x20,0x91,0x10,0x12,0x10,0x12,0x08,0x14,0x0E,0x18,0x04,0x10,0x00,
/*-- 文字: 态 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x01,0x00,0x01,0x00,0x7F,0xFC,0x01,0x00,0x02,0x80,0x02,0x40,0x05,0x20,0x08,0x98,
0x30,0x06,0x01,0x00,0x04,0x88,0x24,0x84,0x24,0x12,0x64,0x12,0x43,0xF0,0x00,0x00,
/*-- 文字: 转 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x20,0x10,0x20,0x20,0x20,0xFE,0xFC,0x20,0x40,0x50,0x40,0x91,0xFE,0xFE,0x40,
0x10,0x80,0x11,0xFC,0x3C,0x08,0xD0,0x88,0x10,0x50,0x10,0x20,0x10,0x10,0x10,0x10,
/*-- 文字: 换 --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x80,0x10,0x80,0x11,0xF8,0xFD,0x10,0x12,0x20,0x17,0xF8,0x12,0x48,0x1A,0x48,
0x32,0x48,0xDF,0xFE,0x10,0x40,0x10,0xA0,0x10,0x90,0x11,0x0E,0x56,0x04,0x20,0x00,
/*-- 文字: ℃ --*/
/*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x00,0x53,0xF4,0x24,0x0C,0x08,0x04,0x08,0x04,0x10,0x00,0x10,0x00,0x10,0x00,
0x10,0x00,0x10,0x00,0x10,0x00,0x08,0x04,0x08,0x04,0x04,0x08,0x03,0xF0,0x00,0x00,
};
//---------------------------------------------
void sDelay(unsigned char rTemp)
{
while(--rTemp);
}
//---------------------------------------------
void sReadFlag(void) //读标志寄存器
{
LATC|=0x38; //控制口初始化,CD=1
TRISD=0xFF;
pLcdRd=0;
sDelay(5);
rCount1=PORTD;
sDelay(5);
pLcdRd=1;
}
//指令&数据读写状态
void CheckRWCD(void)
{
while(1)
{
sReadFlag();
if((rCount1&0x03)==0x03)break;
}
}
//数据自动写状态
void CheckAutoWrite(void)
{
while(1)
{
sReadFlag();
if(rCount1&0x08)break;
}
}
//屏读/屏考贝出错状态
void CheckScreen(void)
{
while(1)
{
sReadFlag();
if((rCount1&0x40)==0)break;
}
}
//---------------------------------------------
/*
//一个数据子写入函数
void LcmWriteData(uchar uData)
{
LcmDataPort = uData;
}
*/
//--------------------------------------
//写数据函数
//--------------------------------------
void LcmWriteData(uchar Data)
{
CheckRWCD(); //检测指令读写状态
TRISD=0x00;
pLcdCd=0;
sDelay(5);
pLcdWr=0;
sDelay(5);
LcdDataPort=Data;
sDelay(5);
pLcdWr=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -