📄 hanzi2.c
字号:
//============================================================================
//2002A LCD显示程序,运行程序LCD显示动画文字
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <c8051f020.h> // SFR declarations
//-----------------------------------------------------------------------------
// Global CONSTANTS
//-----------------------------------------------------------------------------
#define uchar unsigned char
#define uint unsigned int
#define dataport P7
#define highadress P3
#define SYSCLK 25000000
//-----------------------------------------------------------------------------
// 16-bit SFR Definitions for 'F02x
//-----------------------------------------------------------------------------
sfr16 DP = 0x82; // data pointer
sfr16 TMR3RL = 0x92; // Timer3 reload value
sfr16 TMR3 = 0x94; // Timer3 counter
sfr16 ADC0 = 0xbe; // ADC0 data
sfr16 ADC0GT = 0xc4; // ADC0 greater than window
sfr16 ADC0LT = 0xc6; // ADC0 less than window
sfr16 RCAP2 = 0xca; // Timer2 capture/reload
sfr16 T2 = 0xcc; // Timer2
sfr16 RCAP4 = 0xe4; // Timer4 capture/reload
sfr16 T4 = 0xf4; // Timer4
sfr16 DAC0 = 0xd2; // DAC0 data
sfr16 DAC1 = 0xd5; // DAC1 data
//----------------------------------------------------------------------------
void lcd_init(void);
void clearlcd(void);
void writedata(uchar wdata,uchar a0_7,uchar a2_0);
void disword(int wideth,int highth,uchar adress,char ttab[],int displace);
void PORT_Init (void);
void Timer3_Init (int counts);
void Timer3_ISR (void);
void display(void);
void display1(void) ;
void SYSCLK_Init (void);
void delay(int dtime);
sbit ADR2 = P1^3; ///
sbit ADR1 = P1^5; ///
sbit ADR0 = P1^7; ///
sbit BRAD_ = P1^1; ///
sbit DP1 = P0^0; ///
sbit WP1 = P0^1; ///
sbit DP0 = P0^2; ///
sbit WP0 = P0^3; ///
sbit READY_ = P0^6; ///
sbit CLEAR_ = P0^5; ///
sbit DSPE = P0^4; ///
sbit WRITE_ = P0^7; ///
uint msnum;
uint sec;
uint min;
char *p;
xdata char tab[32*11]= {/*-- 文字: 全 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x40,0x60,0x50,0x48,0x44,0xC3,0x44,0x48,0x50,0x70,0x60,0x20,0x00,0x00,
0x00,0x40,0x40,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x46,0x44,0x60,0x40,0x00,
/*-- 文字: 国 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA,0x8A,0x8A,0x8A,0x0A,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x49,0x4E,0x48,0x40,0xFF,0x00,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,
/*-- 文字: 生 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x60,0x1E,0x10,0x10,0x10,0x10,0xFF,0x12,0x10,0x10,0x98,0x10,0x00,0x00,
0x01,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x61,0x40,0x00,
/*-- 文字: 电 --*/
/*-- 宋体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 --*/
0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00,
0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00,
/*-- 文字: 计 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x21,0x2E,0xE4,0x00,0x00,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x00,
0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,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 --*/
0x08,0x86,0xAA,0xAA,0xAA,0xFE,0xAA,0xAB,0xAA,0xFE,0xAA,0xAA,0xA2,0x86,0x02,0x00,
0x04,0x04,0x82,0x82,0x5F,0x42,0x22,0x1E,0x22,0x22,0x5F,0xC1,0x42,0x06,0x02,0x00,
};
//=================================================================================
xdata char tab2[]={
/*-- 文字: 激 --*/
/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x44,0x08,0x00,0x70,0xA8,0xAE,0x68,0x98,0x40,0x38,0xE6,0x20,0x20,0x00,0x00,
0x10,0x1C,0x23,0x12,0x0A,0x26,0x25,0x1D,0x10,0x0A,0x04,0x0B,0x10,0x20,0x20,0x00,
/*-- 文字: 情 --*/
/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xE0,0x00,0xFE,0x10,0x00,0x20,0x2A,0xAA,0xBF,0xAA,0xAA,0x20,0x20,0x00,0x00,
0x01,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x0A,0x0A,0x20,0x7F,0x00,0x00,0x00,0x00,
/*-- 文字: 创 --*/
/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x40,0xA0,0x58,0x46,0xC8,0x10,0x20,0x00,0xF0,0x00,0xFE,0x00,0x00,0x00,
0x01,0x00,0x00,0x0F,0x10,0x12,0x13,0x10,0x0C,0x00,0x03,0x20,0x7F,0x00,0x00,0x00,
/*-- 文字: 造 --*/
/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x80,0x44,0xC8,0x00,0xA0,0x9C,0x88,0x48,0x7F,0x48,0x48,0x40,0x40,0x00,0x00,
0x10,0x10,0x0B,0x0C,0x10,0x10,0x10,0x16,0x25,0x25,0x25,0x23,0x20,0x20,0x20,0x00,
/*-- 文字: 精 --*/
/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x90,0xA0,0x80,0xFE,0x90,0xA0,0x28,0xAA,0xBF,0xAA,0xAA,0xA0,0x20,0x00,0x00,
0x08,0x04,0x02,0x01,0x3F,0x02,0x04,0x00,0x3F,0x0A,0x0A,0x20,0x7F,0x00,0x00,0x00,
/*-- 文字: 彩 --*/
/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x80,0x90,0xA4,0x84,0xEA,0x53,0x48,0x44,0x00,0x20,0x90,0x48,0x26,0x00,0x00,
0x00,0x08,0x04,0x02,0x01,0x3F,0x01,0x02,0x40,0x20,0x11,0x08,0x04,0x03,0x00,0x00,
/*-- 文字: 无 --*/
/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x40,0x40,0x44,0xC4,0x7C,0xC4,0x44,0x44,0x40,0x40,0x00,0x00,0x00,0x00,
0x20,0x20,0x10,0x08,0x06,0x01,0x00,0x0F,0x10,0x20,0x20,0x20,0x20,0x10,0x00,0x00,
/*-- 文字: 限 --*/
/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xF8,0x04,0xB4,0xCC,0x00,0xFC,0xD4,0x54,0x44,0x3C,0x80,0x00,0x00,0x00,0x00,
0x00,0x3F,0x00,0x00,0x00,0x00,0x3F,0x10,0x09,0x02,0x05,0x0C,0x08,0x08,0x08,0x00};
//===============================================================================
xdata char tab3[140]={
/*-- 文字: 0 --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=7x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=7x16 --*/
0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x03,0x04,0x08,0x08,0x04,0x03,0x00,
/*-- 文字: 1 --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=7x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=7x16 --*/
0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x00,
/*-- 文字: 2 --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=7x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=7x16 --*/
0x18,0x04,0x04,0x84,0x44,0x38,0x00,0x0C,0x0A,0x09,0x08,0x08,0x0C,0x00,
/*-- 文字: 3 --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=7x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=7x16 --*/
0x18,0x04,0x44,0x44,0xA4,0x18,0x00,0x06,0x08,0x08,0x08,0x08,0x07,0x00,
/*-- 文字: 4 --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=7x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=7x16 --*/
0x80,0x40,0x30,0x08,0xFC,0x00,0x00,0x01,0x01,0x01,0x09,0x0F,0x09,0x00,
/*-- 文字: 5 --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=7x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=7x16 --*/
0x7C,0x44,0x24,0x24,0x24,0xC4,0x00,0x06,0x08,0x08,0x08,0x08,0x07,0x00,
/*-- 文字: 6 --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=7x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=7x16 --*/
0xF0,0x88,0x44,0x44,0x4C,0x80,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00,
/*-- 文字: 7 --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=7x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=7x16 --*/
0x1C,0x04,0x84,0x64,0x1C,0x04,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,
/*-- 文字: 8 --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=7x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=7x16 --*/
0x38,0xC4,0x44,0x44,0xC4,0x38,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00,
/*-- 文字: 9 --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=7x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=7x16 --*/
0x78,0x84,0x84,0x84,0x48,0xF0,0x00,0x00,0x0C,0x08,0x08,0x04,0x03,0x00};
//=================================================================================
xdata char tab4[108]={
/*-- 文字: A --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=9x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=9x16 --*/
0x00,0x00,0xC0,0x30,0x0C,0x30,0xC0,0x00,0x00,0x08,0x0E,0x09,0x01,0x01,0x01,0x09,
0x0E,0x08,
/*-- 文字: B --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=9x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=9x16 --*/
0x00,0x04,0xFC,0x44,0x44,0x44,0xA4,0x18,0x00,0x00,0x08,0x0F,0x08,0x08,0x08,0x08,
0x07,0x00,
/*-- 文字: C --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=9x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=9x16 --*/
0x00,0xE0,0x18,0x08,0x04,0x04,0x04,0x04,0x0C,0x00,0x01,0x06,0x04,0x08,0x08,0x08,
0x04,0x02,
/*-- 文字: D --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=9x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=9x16 --*/
0x00,0x04,0xFC,0x04,0x04,0x04,0x08,0x18,0xE0,0x00,0x08,0x0F,0x08,0x08,0x08,0x04,
0x06,0x01,
/*-- 文字: E --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=9x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=9x16 --*/
0x04,0xFC,0x44,0x44,0x44,0xF4,0x0C,0x00,0x00,0x08,0x0F,0x08,0x08,0x08,0x09,0x0C,
0x00,0x00,
/*-- 文字: F --*/
/*-- @MS PMincho11; 此字体下对应的点阵为:宽x高=9x14 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=9x16 --*/
0x04,0xFC,0x44,0x44,0x44,0xF4,0x0C,0x00,0x00,0x08,0x0F,0x08,0x00,0x00,0x01,0x00,
0x00,0x00};
//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
void main (void)
{ int i;
WDTCN = 0xde; // disable watchdog timer
WDTCN = 0xad;
SYSCLK_Init ();
// setting (24500000)
PORT_Init (); // initialize crossbar and GPIO
lcd_init();
Timer3_Init (SYSCLK/12/1000);//1ms intrupt
EA=1;
display();
while(1)
{
display1();
}
}
//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
//
//
void PORT_Init (void)
{
XBR0 = 0x00; // Enable UART0,SMB0EN
XBR1 = 0x40; // Enable crossbar and weak pull-ups
XBR2 = 0x40;
P0MDOUT = 0xf0;
P1MDOUT = 0xFF; // All P0 pins open-drain output
P2MDOUT = 0x04;
P3MDOUT = 0xff;
P74OUT = 0xff;
}
//-----------------------------------------------------------------------------
void SYSCLK_Init (void)
{
int i; // delay counter
OSCXCN = 0x67; // start external oscillator with
// 22.1184MHz crystal
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -