📄 dotdisplay.lst
字号:
C51 COMPILER V7.50 DOTDISPLAY 01/02/2009 14:29:37 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE DOTDISPLAY
OBJECT MODULE PLACED IN dotdisplay.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dotdisplay.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h> //头函数
2 #include<stdio.h>
3 #include<stdlib.h>
4 #include<intrins.h>
5 #include<absacc.h>
6 sbit P1_1=P1^1;
7 sbit P1_0=P1^0;
8 sbit P1_2=P1^2;
9 #define LCM_RW P1_1 //定义引脚
10 #define LCM_RS P1_0
11 #define LCM_E P1_2
12 #define LCM_Data P2 //数据线
13
14 #define Busy 0x80 //用于检测LCM状态字中的Busy标识
15
16 void WriteDataLCM(unsigned char WDLCM,unsigned char BuysC);
17 void WriteCommandLCM(unsigned char WCLCM,unsigned char BuysC);
18 unsigned char ReadDataLCM(void);
19 unsigned char ReadStatusLCM(void);
20 void LCMInit(void);
21 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
22 void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
23 void Delay5Ms(void);
24 void Delay400Ms(void);
25 unsigned char code uctech[] = {"welcome!"};
26 unsigned char code net[] = {"www.towintec.cn"};
27 unsigned char code content[] = {"0733-8298114"};
28
29 void DisplayDomain(void)
30 {
31 1 Delay400Ms(); //启动等待,等LCM讲入工作状态
32 1 LCMInit(); //LCM初始化
33 1 Delay5Ms(); //延时片刻(可不要)
34 1 //DisplayOneChar(1,0,1);
35 1 //DisplayOneChar(2,1,2);
36 1 DisplayListChar(3, 0, uctech); //在第一行显示"welcome!"
37 1 DisplayListChar(0, 1, net); //在第二行显示"hxl_raien."
38 1 ReadDataLCM(); //测试用句,可以不要
39 1 // while(1); //不断循环,也称“死循环”
40 1 }
41 void DisplayTel(void)
42 {
43 1 Delay400Ms(); //启动等待,等LCM讲入工作状态
44 1 LCMInit(); //LCM初始化
45 1 Delay5Ms(); //延时片刻(可不要)
46 1 //DisplayOneChar(1,0,1);
47 1 //DisplayOneChar(2,1,2);
48 1 DisplayListChar(3, 0, uctech); //在第一行显示"welcome!"
49 1 DisplayListChar(0, 1, content); //在第二行显示"hxl_raien."
50 1 ReadDataLCM(); //测试用句,可以不要
51 1 // while(1); //不断循环,也称“死循环”
52 1 }
53
54 //写数据
55 void WriteDataLCM(unsigned char WDLCM,unsigned char BuysC)
C51 COMPILER V7.50 DOTDISPLAY 01/02/2009 14:29:37 PAGE 2
56 {
57 1 ReadStatusLCM(); //检测忙
58 1 LCM_Data = WDLCM;
59 1 LCM_RS = 1;
60 1 LCM_RW = 0;
61 1 LCM_E = 0; //若晶振速度太高可以在这后加小的延时
62 1 LCM_E = 0; //延时
63 1 LCM_E = 1;
64 1 }
*** WARNING C280 IN LINE 55 OF DOTDISPLAY.C: 'BuysC': unreferenced local variable
65 //写指令
66 void WriteCommandLCM(unsigned char WCLCM,unsigned char BuysC) //BuysC为0时忽略忙检测
67 {
68 1 if (BuysC) ReadStatusLCM(); //根据需要检测忙
69 1 LCM_Data = WCLCM;
70 1 LCM_RS = 0;
71 1 LCM_RW = 0;
72 1 LCM_E = 0;
73 1 LCM_E = 0;
74 1 LCM_E = 1;
75 1 }
76 //读数据
77 unsigned char ReadDataLCM(void)
78 {
79 1 LCM_RS = 1;
80 1 LCM_RW = 1;
81 1 LCM_E = 0;
82 1 LCM_E = 0;
83 1 LCM_E = 1;
84 1 return(LCM_Data);
85 1 }
86 //读状态
87 unsigned char ReadStatusLCM(void)
88 {
89 1 LCM_Data = 0xFF;
90 1 LCM_RS = 0;
91 1 LCM_RW = 1;
92 1 LCM_E = 0;
93 1 LCM_E = 0;
94 1 LCM_E = 1;
95 1 while (LCM_Data & Busy); //检测忙信号
96 1 return(LCM_Data);
97 1 }
98 void LCMInit(void) //LCM初始化
99 {
100 1 /* LCM_RS = 1;
101 1 LCM_RW = 1;
102 1 LCM_E = 1;
103 1 // LCM_Data = 0xff;
104 1 P2_0=1;
105 1 P2_1=1;
106 1 P2_2=1;
107 1 P2_3=1;
108 1 P2_4=1;
109 1 P2_5=1;
110 1 P2_6=1;
111 1 P2_7=1;*/
112 1 // while(1);
113 1
114 1
115 1 LCM_Data = 0;
116 1 WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号
C51 COMPILER V7.50 DOTDISPLAY 01/02/2009 14:29:37 PAGE 3
117 1 Delay5Ms();
118 1 WriteCommandLCM(0x38,0);
119 1 Delay5Ms();
120 1 WriteCommandLCM(0x38,0);
121 1 Delay5Ms();
122 1 WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号
123 1 WriteCommandLCM(0x08,1); //关闭显示
124 1 WriteCommandLCM(0x01,1); //显示清屏
125 1 WriteCommandLCM(0x06,1); // 显示光标移动设置
126 1 WriteCommandLCM(0x0C,1); // 显示开及光标设置
127 1 }
128 //按指定位置显示一个字符
129 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
130 //x表示列、y 表示行
131 {
132 1 Y &= 0x1;
133 1 X &= 0xF; //限制X不能大于15,Y不能大于1
134 1 if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
135 1 X |= 0x80; // 算出指令码
136 1 WriteCommandLCM(X, 1); //这里不检测忙信号,发送地址码
137 1 WriteDataLCM(DData,1);
138 1 }
139 //按指定位置显示一串字符
140 void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
141 {
142 1 unsigned char ListLength;
143 1 ListLength = 0;
144 1 Y &= 0x1;
145 1 X &= 0xF; //限制X不能大于15,Y不能大于1
146 1 while (DData[ListLength]>0x20) //若到达字串尾则退出,字符长度小于32
147 1 {
148 2 if (X <= 0xF) //X坐标应小于0xF(15)
149 2 {
150 3 DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
151 3 ListLength++;
152 3 X++;
153 3 }
154 2 }
155 1 }
156 void Delay5Ms(void)
157 {
158 1 unsigned int TempCyc = 5552;
159 1 while(TempCyc--);
160 1 }
161 void Delay400Ms(void)
162 {
163 1 unsigned char TempCycA = 5;
164 1 unsigned int TempCycB;
165 1 while(TempCycA--)
166 1 {
167 2 TempCycB=7269;
168 2 while(TempCycB--);
169 2 };
170 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 386 ----
CONSTANT SIZE = 39 ----
XDATA SIZE = ---- 9
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
C51 COMPILER V7.50 DOTDISPLAY 01/02/2009 14:29:37 PAGE 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -