📄 tt.lst
字号:
C51 COMPILER V8.02 TT 09/05/2007 12:23:42 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TT
OBJECT MODULE PLACED IN TT.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TT.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************
2 注意: 此文档为仿真程序,若要在试验板上验证,需要须改一下函数
3 void lcd_wait(void)
4 {
5 DATAPORT=0xff;
6 LCM_EN=1;
7 LCM_RS=0;
8 LCM_RW=1;
9 _nop_();
10 while(DATAPORT&BUSY)
11 /*{ LCM_EN=0;
12 _nop_();
13 _nop_();
14 LCM_EN=1;
15 _nop_();
16 _nop_();
17 }*//*
18 LCM_EN=0;
19
20 }■○
21 地址:01000000 数据:00001110 图示:○○○○■■■○
22 01000001 00010001 ○○○■○○○■
23 01000010 00010000 ○○○■○○○○
24 01000011 00010000 ○○○■○○○○
25 01000100 00010000 ○○○■○○○○
26 01000101 00010000 ○○○■○○○○
27 01000110 00010001 ○○○■○○○■
28 01000111 00001110 ○○○○■■■○
29
30 0x80,0x00, 0x44,0x41, 0x24,0x42, 0x14,0x44,
31 0x08,0x9C, 0x0C,0xF4, 0x1B,0x28, 0x29,0x60,
32 0x48,0xA0, 0x09,0x68, 0x0B,0x26, 0x0E,0x32,
33 0x08,0xA8, 0x18,0x64, 0x20,0x02, 0x40,0x01,
34 *******************************************************************/
35
36 #include<reg51.h>
37 #include<intrins.h>
38 #include <absacc.h>
39 #define uchar unsigned char
40 #define uint unsigned int
41 /*uchar table[]={0x06,0x09,0x09,0x06,0x00,0x00,0x00,0x00,
42 0x0e,0x11,0x10,0x10,0x10,0x11,0x0e,0x00};//字符℃*/
43 uchar table[]={0x00,0x01,0x09,0x12,0x24,0x50,0x90,0x11,
44 0x00,0x00,0x00,0xfe,0x02,0x44,0x40,0x50,
45 0x12,0x14,0x10,0x10,0x11,0x10,0x00,0x00,
46 0x48,0x40,0x40,0x40,0x40,0xb0,0x00,0x00};
47 /*uchar table[]={0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,
48 0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
49 0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
50 0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,
51 0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
52 0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,
53 0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,
54 0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00};//心图案 */
55
C51 COMPILER V8.02 TT 09/05/2007 12:23:42 PAGE 2
56 #define BUSY 0x80 //lcd忙检测标志
57 #define DATAPORT P0 //定义P0口为LCD通讯端口
58
59 sbit LCM_RS=P2^0; //数据/命令端
60 sbit LCM_RW=P2^1; //读/写选择端
61 sbit LCM_EN=P2^2;
62 sbit sda=P2^3; //IO口定义
63 sbit scl=P2^4; //LCD使能信号
64 sbit ad_busy=P3^2; //adc中断方式接口
65
66 uchar ad_data; //ad采样值存储
67 uchar seconde; //定义并初始化时钟变量
68 uchar minite;
69 uchar hour;
70 uchar mstcnt=0;
71 uchar temp1,temp2,temp; //温度显示变量
72 uchar t,set;
73 uchar K;
74 bit ON_OFF=0;
75 bit outflag;
76 bit write=0;
77
78 uchar code str0[]={"LCD TEST "};
79 uchar code str1[]={"SUCCESSFUL "};
80
81 void delay_LCM(uint); //LCD延时子程序
82 void initLCM(void); //LCD初始化子程序
83 void lcd_wait(void); //LCD检测忙子程序
84 void WriteCommandLCM(uchar WCLCM,uchar BusyC); //写指令到ICM子函数
85 void WriteDataLCM(uchar WDLCM); //写数据到LCM子函数
86 void DisplayOneChar(uchar X,uchar Y,uchar DData); //显示指定坐标的一个字符子函数
87 void DisplayListChar(uchar X,uchar Y,uchar code *DData); //显示指定坐标的一串字符子函数
88 /*********延时K*1ms,12.000mhz**********/
89
90 void delay_LCM(uint k)
91 {
92 1 uint i,j;
93 1 for(i=0;i<k;i++)
94 1 {
95 2 for(j=0;j<60;j++)
96 2 {;}
97 2 }
98 1 }
99 /**********写指令到LCM子函数************/
100
101 void WriteCommandLCM(uchar WCLCM,uchar BusyC)
102 {
103 1 if(BusyC)lcd_wait();
104 1 DATAPORT=WCLCM;
105 1 LCM_RS=0; // 选中指令寄存器
106 1 LCM_RW=0; // 写模式
107 1 LCM_EN=1;
108 1 _nop_();
109 1 _nop_();
110 1 _nop_();
111 1 LCM_EN=0;
112 1 }
113
114 /**********写数据到LCM子函数************/
115
116 void WriteDataLCM(uchar WDLCM)
117 {
C51 COMPILER V8.02 TT 09/05/2007 12:23:42 PAGE 3
118 1 lcd_wait( ); //检测忙信号
119 1 DATAPORT=WDLCM;
120 1 LCM_RS=1; // 选中数据寄存器
121 1 LCM_RW=0; // 写模式
122 1 LCM_EN=1;
123 1 _nop_();
124 1 _nop_();
125 1 _nop_();
126 1 LCM_EN=0;
127 1 }
128
129 /***********lcm内部等待函数*************/
130
131
132 void lcd_wait(void)
133 {
134 1 DATAPORT=0xff;
135 1 LCM_EN=1;
136 1 LCM_RS=0;
137 1 LCM_RW=1;
138 1 _nop_();
139 1 while(DATAPORT&BUSY)
140 1 { LCM_EN=0;
141 2 _nop_();
142 2 _nop_();
143 2 LCM_EN=1;
144 2 _nop_();
145 2 _nop_();
146 2 }
147 1 LCM_EN=0;
148 1
149 1 }
150
151
152 /**********LCM初始化子函数***********/
153
154 void initLCM( )
155 {
156 1 DATAPORT=0;
157 1 delay_LCM(15);
158 1 WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号
159 1 delay_LCM(5);
160 1 WriteCommandLCM(0x38,0);
161 1 delay_LCM(5);
162 1 WriteCommandLCM(0x38,0);
163 1 delay_LCM(5);
164 1
165 1 WriteCommandLCM(0x38,1); //8bit数据传送,2行显示,5*7字型,检测忙信号
166 1 WriteCommandLCM(0x08,1); //关闭显示,检测忙信号
167 1 WriteCommandLCM(0x01,1); //清屏,检测忙信号
168 1 WriteCommandLCM(0x06,1); //显示光标右移设置,检测忙信号
169 1 WriteCommandLCM(0x0c,1); //显示屏打开,光标不显示,不闪烁,检测忙信号
170 1 }
171
172 /****************显示指定坐标的一个字符子函数*************/
173
174 void DisplayOneChar(uchar X,uchar Y,uchar DData)
175 {
176 1 Y&=1;
177 1 X&=15;
178 1 if(Y)X|=0x40; //若y为1(显示第二行),地址码+0X40
179 1 X|=0x80; //指令码为地址码+0X80
C51 COMPILER V8.02 TT 09/05/2007 12:23:42 PAGE 4
180 1 WriteCommandLCM(X,0);
181 1 WriteDataLCM(DData);
182 1 }
183
184 /***********显示指定坐标的一串字符子函数***********/
185
186 void DisplayListChar(uchar X,uchar Y,uchar code *DData)
187 {
188 1 uchar ListLength=0;
189 1 Y&=0x01;
190 1 X&=0x0f;
191 1 while(X<16)
192 1 {
193 2 DisplayOneChar(X,Y,DData[ListLength]);
194 2 ListLength++;
195 2 X++;
196 2 }
197 1 }
198
199 /***********the main funtion*************/
200
201 void main(void)
202 {
203 1 unsigned char a,b,c,tmp;
204 1 P1=0xff; //初始化p1口,全设为1
205 1 delay_LCM(500); //延时500ms启动
206 1 initLCM( ); //LCD初始化
207 1 tmp=0x40;//设置CGRAM地址的格式字
208 1 c=0;
209 1 for(a=0;a<4;a++)
210 1 {
211 2 for(b=0;b<8;b++)
212 2 {
213 3 WriteCommandLCM(tmp+b,1); // 设置自定义字符的 CGRAM 地址
214 3 delay_LCM(2);
215 3 WriteDataLCM(table[c]); // 向CGRAM写入自定义字符表的数据
216 3 c++;
217 3 delay_LCM(2);
218 3 }
219 2 tmp=tmp+8;
220 2 }
221 1 //DisplayListChar(0,0,str0);
222 1 //DisplayListChar(0,1,str1);
223 1 for(a=0;a<2;a++)
224 1 {
225 2 DisplayOneChar(1+a,0,a);//在第一行第11列位置显示心图案的上半部(列数,行数,数据地址)
226 2 }
227 1 for(a=2;a<4;a++)
228 1 {
229 2 DisplayOneChar(1+a-2,1,a);//在第一行第11列位置显示心图案的上半部(列数,行数,数据地址)
230 2 }
231 1 while (1);
232 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 382 ----
CONSTANT SIZE = 34 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 43 12
IDATA SIZE = ---- ----
C51 COMPILER V8.02 TT 09/05/2007 12:23:42 PAGE 5
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -