📄 lcd.lst
字号:
C51 COMPILER V7.09 LCD 10/23/2008 21:50:55 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe lcd.c DB OE
line level source
1 #include "c8051f040.h"
2 #include <intrins.h> // 液晶点阵显示试验 -128*64,控制器DM12864I
3 #define LCD_DATA P7
4 sbit LCD_RS = P2^0;
5 sbit LCD_RW = P2^1;
6 sbit LCD_E = P2^2;
7 sbit LCD_CS1 = P2^6;
8 sbit LCD_CS2 = P2^7;
9 void Delay1us(unsigned char);
10 void Delay1ms(unsigned char);
11 void Delay1s(unsigned char T);
12 char code zero[]={
13 0xF8,0xFC,0x04,0xC4,0x24,
14 0xFC,0xF8,0x00,0x07,0x0F,
15 0x09,0x08,0x08,0x0F,0x07,
16 0x00
17 };
18 char code one[]={
19 0x00,0x10,0x18,0xFC,0xFC,
20 0x00,0x00,0x00,0x00,0x08,
21 0x08,0x0F,0x0F,0x08,0x08,
22 0x00
23 };
24 char code two[]={
25 0x08,0x0C,0x84,0xC4,0x64,
26 0x3C,0x18,0x00,0x0E,0x0F,
27 0x09,0x08,0x08,0x0C,0x0C,
28 0x00
29 };
30 char code three[]={
31 0x08,0x0C,0x44,0x44,0x44,
32 0xFC,0xB8,0x00,0x04,0x0C,
33 0x08,0x08,0x08,0x0F,0x07,
34 0x00
35 };
36 char code four[]={
37 0xC0,0xE0,0xB0,0x98,0xFC,
38 0xFC,0x80,0x00,0x00,0x00,
39 0x00,0x08,0x0F,0x0F,0x08,
40 0x00
41 };
42 char code five[]={
43 0x7C,0x7C,0x44,0x44,0xC4,
44 0xC4,0x84,0x00,0x04,0x0C,
45 0x08,0x08,0x08,0x0F,0x07,
46 0x00
47 };
48 char code six[]={
49 0xF0,0xF8,0x4C,0x44,0x44,
50 0xC0,0x80,0x00,0x07,0x0F,
51 0x08,0x08,0x08,0x0F,0x07,
52 0x00
53 };
54 char code seven[]={
55 0x0C,0x0C,0x04,0x84,0xC4,
C51 COMPILER V7.09 LCD 10/23/2008 21:50:55 PAGE 2
56 0x7C,0x3C,0x00,0x00,0x00,
57 0x0F,0x0F,0x00,0x00,0x00,
58 0x00
59 };
60 char code eight[]={
61 0xB8,0xFC,0x44,0x44,0x44,
62 0xFC,0xB8,0x00,0x07,0x0F,
63 0x08,0x08,0x08,0x0F,0x07,
64 0x00
65 };
66 char code nine[]={
67 0x38,0x7C,0x44,0x44,0x44,
68 0xFC,0xF8,0x00,0x00,0x08,
69 0x08,0x08,0x0C,0x07,0x03,
70 0x00
71 };
72 char code chen[]={
73 0x00, 0xfe, 0x22, 0x5a, 0x86, 0x08, 0x88, 0x48, 0x38, 0x0f, 0xe8, 0x08, 0x88, 0x0c, 0x08, 0x00, 0x00, 0x
-ff, 0x04, 0x08, 0x07, 0x20, 0x11, 0x0d, 0x41, 0x81, 0x7f, 0x01, 0x05, 0x19, 0x30, 0x00
74 };
75 char code hao[]={0x00, 0x00, 0x80, 0xbe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbf, 0x82, 0x00, 0x00
-, 0x00, 0x04, 0x84, 0x84, 0x44, 0x44, 0x24, 0x14, 0x0f, 0x14, 0x24, 0x24, 0x44, 0xc4, 0x46, 0x04, 0x00};
76 char code wen[]={
77 0x00, 0xfc, 0x01, 0x12, 0x16, 0xf0, 0x52, 0x52, 0x52, 0xf2, 0x1a, 0x12, 0x02, 0xff, 0x02, 0x00, 0x00, 0x
-ff, 0x00, 0x08, 0x08, 0x0f, 0x09, 0x09, 0x09, 0x7f, 0x08, 0x48, 0x80, 0x7f, 0x00, 0x00
78 };
79 char code niao[]={0x00, 0x00, 0x00, 0xfc, 0x04, 0x16, 0x65, 0x04, 0x84, 0x04, 0xfe, 0x04, 0x00, 0x00, 0x00
-, 0x00, 0x10, 0x10, 0x10, 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x5a, 0x92, 0x42, 0x3f, 0x02, 0x00};
80 char code ren[]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x03, 0x00, 0x03, 0x0c, 0x10, 0x20, 0x40, 0xc0, 0x40, 0x00};
81 #define SELECTCS 1
82 void LCD_WriteCommand1(char ch) //向LCD控发送控制命令 左半边
83 {
84 1 LCD_CS1=SELECTCS;
85 1 LCD_CS2=!SELECTCS;
86 1 LCD_RW=0;
87 1 LCD_RS=0;
88 1 LCD_DATA=ch;
89 1 LCD_E=1;
90 1 Delay1us(30);
91 1 LCD_E=0;
92 1 }
93
94 void LCD_WriteCommand2(char ch) //向LCD控制发送控制命令 右半边
95 {
96 1 LCD_CS2=SELECTCS;
97 1 LCD_CS1=!SELECTCS;
98 1 LCD_RW=0;
99 1 LCD_RS=0;
100 1 LCD_DATA=ch;
101 1 LCD_E=1;
102 1 Delay1us(30);
103 1 LCD_E=0;
104 1 }
105
106 void LCD_WriteData1(char ch) //发送数据 左半边
107 {
108 1
109 1 LCD_CS1=SELECTCS;
110 1 LCD_CS2=!SELECTCS;
111 1 LCD_RW=0;
112 1 LCD_RS=1;
C51 COMPILER V7.09 LCD 10/23/2008 21:50:55 PAGE 3
113 1 LCD_DATA=ch;
114 1 LCD_E=1;
115 1 Delay1us(30);
116 1 LCD_E=0;
117 1 }
118
119 void LCD_WriteData2(char ch) //发送数据 右半边
120 {
121 1
122 1 LCD_CS1=!SELECTCS;
123 1 LCD_CS2=SELECTCS;
124 1 LCD_RW=0;
125 1 LCD_RS=1;
126 1 LCD_DATA=ch;
127 1 LCD_E=1;
128 1 Delay1us(30);
129 1 LCD_E=0;
130 1 // LCD_CS1=!SELECTCS;
131 1 }
132 void InitLCD(void) //初始化LCD
133 {
134 1 char i,j;
135 1 LCD_WriteCommand1(0xc0);
136 1 LCD_WriteCommand2(0xc0);
137 1 LCD_WriteCommand1(0x3f); //开显示 和设定起始行
138 1 LCD_WriteCommand2(0x3f);
139 1 for (j=0;j<8;j++) //清屏
140 1 {
141 2 LCD_WriteCommand1(0xB8+j); //清左半屏
142 2 LCD_WriteCommand1(0x40);
143 2 for (i=0;i<64;i++)
144 2 LCD_WriteData1(0x00);
145 2
146 2 LCD_WriteCommand2(0xB8+j); //清右半屏
147 2 LCD_WriteCommand2(0x40);
148 2 for (i=0;i<64;i++)
149 2 LCD_WriteData2(0x00);
150 2 }
151 1 }
152 void LCD_WriteHZ(char x,char y,char *HZ) //显示16*16点阵汉字 x表示起始页,y表示起始列(对于整个液晶来说)
153 {
154 1 unsigned char i;
155 1 Delay1ms(15);
156 1
157 1 for (i=0;i<32;i++)
158 1 {
159 2 if ((y+i%16)<64) //64列以内显示在左半屏
160 2 {
161 3 LCD_WriteCommand1(0xb8+x+i/16);
162 3 LCD_WriteCommand1(0x40+y+i%16);
163 3 LCD_WriteData1(HZ[i]);
164 3 }
165 2 else //64列以外显示在右半屏
166 2 {
167 3 LCD_WriteCommand2(0xb8+x+i/16);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -