📄 lcd12864r.lst
字号:
C51 COMPILER V7.06 LCD12864R 07/21/2008 12:39:48 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD12864R
OBJECT MODULE PLACED IN LCD12864R.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD12864R.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //12864LCD带中文字库
2 //编程让12864LCD显示公司名称“北京太格公司”,
3 //硬件设置
4 #include <stdio.h>
5 #include <string.h>
6 #include <REG52.H>
7 #include <LCD12864R.h>
8 //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
9
10 sbit rs=P1^0; //定义LCD的数据/命令控制口
11 sbit rst=P1^1; //定义复位口
12 sbit e=P1^2; //定义LCD的使能口
13 sbit rw=P1^3; //定义LCD的读/写控制口
14 sbit psb=P1^4; //定义通信方式控制口
15
16 const unsigned char TAB1A[ ]={0xB1,0xB1,0xBE,0xA9,0XCC,0xAB,0xB8,0xF1,0XCA,0XB1,0XB4,0XFA,0XB9,0XAB,0XCB,0
-XBE};
17 //显示"北京太格时代公司"
18 const unsigned char TAB1B[ ]={' ', 'w', 'w', 'w', '.', 't', 'o', 'g', 'e','s','t','.', 'c', 'o', 'm', ' '}
-;
19 //显示"www.togest.com"
20 const unsigned char TAB1C[ ]={'T', 'E', 'L' ,' ' ,'0', '1' ,'0','-', '6', '3','3', '5' ,'6','5' ,'2','1'};
-
21 //显示"TEL 010-63356521"
22 const unsigned char TAB1D[ ]={'F', 'A', 'X', ' ', '0', '1', '0', '-','6', '3','3', '5', '6', '5', '2', '1'
-};
23 //显示"FAX 010-63356521"
24
25 //unsigned int lcd_x=0; //定义LCD页地址寄存器
26 //unsigned int lcd_y=0; //定义LCD列地址寄存器
27 bit busy; //定义LCD忙标志位
28
29 void MCU_Init(); //申明I/O口设置函数
30 void lcd_init(); //申明LCD初始化函数
31 void clear_p(); //申明清屏函数
32 void han_wr2a(); //申明显示公司名称函数
33 void han_wr2b(); //申明显示公司web函数
34 void han_wr2c(); //申明显示公司tel函数
35 void han_wr2d(); //申明显示公司fax函数
36 //void wr_zb(); //申明有关显示设置函数
37 void flash(); //申明设置LCD显示闪烁函数
38 void qushu(int counts,const unsigned char *ps); //申明查表获取显示数据
39 void send_d(unsigned char x); //申明送一字节数据显示函数
40 void send_i(unsigned char x); //申明送一字节控制命令函数
41 void chk_busy(); //申明检测LCD是否工作繁忙函数
42 void delay(); //申明延时函数1
43 void delay1(); //申明延时函数2,用以决定显示闪烁快慢
44 void Serial(void); //串口中断函数
45 void Mdelay(void);
46 //-------------------------------------------
47 //主程序
48 void main()
49 {
50 1 while(1)
51 1 {
C51 COMPILER V7.06 LCD12864R 07/21/2008 12:39:48 PAGE 2
52 2 //printf("$#");
53 2 MCU_Init(); //调用I/O口设置函数
54 2 lcd_init(); //调用LCD初始化函数
55 2 clear_p(); //调用清屏函数
56 2 delay();
57 2 han_wr2a(); //调用显示公司名称函数
58 2 han_wr2b(); //调用显示公司web函数
59 2 han_wr2c(); //调用显示公司tel函数
60 2 han_wr2d(); //申明显示公司fax函数
61 2 delay(); //延长显示一段时间
62 2 flash(); //调用显示闪烁函数
63 2 clear_p(); //调用清屏函数
64 2 }
65 1 }
66 //单片机初始化函数
67 void MCU_Init(void)
68 {
69 1 istart=0;
70 1 iend=0;
71 1 ostart=0;
72 1 oend=0;
73 1 sendactive=0;
74 1 sendfull=0;
75 1
76 1 PCON=0X80;
77 1 TMOD=0X20;
78 1 TH1=(unsigned char)(256-(XTAL/(16L*12L*baudrate)));
79 1 TL1=(unsigned char)(256-(XTAL/(16L*12L*baudrate)));
80 1 TR1=1;
81 1 SCON=0X50;
82 1 EA = 1;
83 1 ES = 1;
84 1 }
85
86 //LCD初始化函数
87 void lcd_init()
88 {
89 1 rst=0; //复位LCD
90 1 delay(); //保证复位所需要的时间
91 1 //printf("*****");
92 1 rst=1; //恢复LCD正常工作
93 1 Mdelay();
94 1 psb=1; //设置LCD为8位并口通信
95 1 send_i(0x30); //基本指令操作
96 1 send_i(0x01); //清除显示
97 1 send_i(0x06); //指定在写入或读取时,光标的移动方向
98 1 send_i(0x0c); //开显示,关光标,不闪烁
99 1 }
100
101 //-------------------------------------------
102 //显示公司名称函数
103 void han_wr2a()
104 {
105 1 send_i(0x80); //设置显示位置:第一行
106 1 qushu(0x10,TAB1A); //调用取数函数,共14个数据,保存在数组
107 1 }
108
109 //-------------------------------------------
110 //显示公司web函数
111 void han_wr2b()
112 {
113 1 send_i(0x90); //设置显示位置:第二行
C51 COMPILER V7.06 LCD12864R 07/21/2008 12:39:48 PAGE 3
114 1 qushu(0x10,TAB1B); //调用取数函数,共16个数据,保存在数组TAB1B
115 1 }
116
117 //-------------------------------------------
118 //显示公司tel函数
119 void han_wr2c()
120 {
121 1 send_i(0x88); //设置显示位置:第三行
122 1 qushu(0X10,TAB1C); //调用取数函数,共16个数据,保存在数组TAB1C里
123 1 }
124
125 //-------------------------------------------
126 //显示公司fax函数
127 void han_wr2d()
128 {
129 1 send_i(0x98); //设置显示位置:第四行
130 1 qushu(0X10,TAB1D); //调用取数函数,共16个数据,保存在数组TAB1D里
131 1 }
132
133
134 //有关显示设置函数
135 /*
136 void wr_zb()
137 {
138 send_i(lcd_y);
139 send_i(lcd_x);
140 }
141 */
142 //-------------------------------------------
143 //显示闪烁函数
144 void flash()
145 {
146 1 send_i(0x08); //关显示
147 1 delay1(); //延长一定时间
148 1 send_i(0x0c); //开显示
149 1 delay1();
150 1 delay1(); //延长关显示两倍的时间
151 1 send_i(0x08); //关显示
152 1 delay1();
153 1 send_i(0x0c); //开显示
154 1 delay1();
155 1 delay1();
156 1 send_i(0x08); //关显示
157 1 delay1();
158 1 send_i(0x0c); //开显示
159 1 delay1();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -