?? smc162.lst
字號:
C51 COMPILER V7.20 SMC162 04/13/2006 13:35:21 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE SMC162
OBJECT MODULE PLACED IN .\SMC162.obj
COMPILER INVOKED BY: C:\Keil_C51\C51\BIN\C51.EXE ..\SMC162\SMC162.c BROWSE INCDIR(D:\暫存\keil_prj\STI SOFT\STI51\LCD\SM
-C162\) DEBUG OBJECTEXTEND PRINT(.\SMC162.lst) OBJECT(.\SMC162.obj)
line level source
1 /*
2 * Copyright (C) 2006, 華中科技大學(xué)電氣與電子科技創(chuàng)新中心
3 * All Rights Reserved.
4 *
5 * 文件名: smc162.c
6 * 文件描述: 16*2字符液晶驅(qū)動主文件
7 *
8 * 當(dāng)前版本: 1.0
9 * 作者: ZhangLi(zhangli.xing@gmail.com)
10 * 完成日期: 2005年12月12日
11 *
12 */
13 #include "SMC162.h"
14
15 /***************************************
16 說明: LCD寫函數(shù),完成LCD寫操作的物理時序
17 value: 寫的具體值
18 RS: 0 - 寫指令
19 1 - 寫數(shù)據(jù)
20 *****************************************/
21 void LcdWrite(unsigned char value , bit RS)
22 {
23 1 /* 1. 設(shè)置RS信號線 */
24 1 Lcd_RS = RS ;
25 1 /* 2. 設(shè)置RW信號線為讀 */
26 1 Lcd_RW = 0 ;
27 1 /* 3. 設(shè)置LCD片選 */
28 1 SELECT_LCD();
29 1 /* 4. 通過P0端口寫值 */
30 1 P0 = value ;
31 1 /* 5. 鎖存 */
32 1 SELECT_NONE();
33 1 }
34
35 /***************************************
36 說明: LCD讀函數(shù),完成LCD讀操作的物理時序
37 RS: 0 - 寫指令
38 1 - 寫數(shù)據(jù)
39 return: 讀出的具體值
40 *****************************************/
41 unsigned char LcdRead(bit RS)
42 {
43 1 unsigned char rt ;
44 1
45 1 /* 1. 設(shè)置RS信號線 */
46 1 Lcd_RS = RS ;
47 1 /* 2. 設(shè)置RW信號線為讀 */
48 1 Lcd_RW = 1 ;
49 1 /* 3. 釋放P0口 */
50 1 P0 = 0xff ;
51 1 /* 4. 設(shè)置LCD片選 */
52 1 SELECT_LCD();
53 1 SELECT_LCD();
54 1 SELECT_LCD();
C51 COMPILER V7.20 SMC162 04/13/2006 13:35:21 PAGE 2
55 1 SELECT_LCD();
56 1 /* 5. 通過P0端口讀值 */
57 1 rt = P0 ;
58 1 /* 6. 鎖存 */
59 1 SELECT_NONE();
60 1
61 1 return rt ;
62 1 }
63
64 /***************************************
65 說明: LCD寫指令
66 value: 寫的具體值
67 attrib: 0 - 不檢測忙信號
68 1 - 監(jiān)測忙信號
69 *****************************************/
70 void LcdWriteCmd(unsigned char value , unsigned char attrib)
71 {
72 1 /* 監(jiān)測忙狀態(tài) */
73 1 if(attrib)
74 1 while( LcdRead(0)&0x80 ) ;
75 1
76 1 LcdWrite(value , 0);
77 1 }
78
79 /***************************************
80 說明: LCD寫數(shù)據(jù)
81 *****************************************/
82 void LcdWriteData(unsigned char value)
83 {
84 1 /* 監(jiān)測忙狀態(tài) */
85 1 while( LcdRead(0)&0x80 ) ;
86 1
87 1 LcdWrite(value , 1);
88 1 }
89
90 /***************************************
91 說明: LCD讀數(shù)據(jù)
92 *****************************************/
93 unsigned char LcdReadData()
94 {
95 1 /* 監(jiān)測忙狀態(tài) */
96 1 while( LcdRead(0)&0x80 ) ;
97 1
98 1 return LcdRead(1);
99 1 }
100
101 /***************************************
102 說明: 短延時, 5ms
103 *****************************************/
104 void Delay5Ms(void)
105 {
106 1 unsigned int i = 5552;
107 1 while(i--);
108 1 }
109
110 /***************************************
111 說明: 長延時 , 400ms
112 *****************************************/
113 void Delay400Ms(void)
114 {
115 1 unsigned char i = 80;
116 1 while(i--)
C51 COMPILER V7.20 SMC162 04/13/2006 13:35:21 PAGE 3
117 1 Delay5Ms();
118 1 }
119 /***************************************
120 說明: LCD初始化函數(shù),需要按照產(chǎn)品
121 說明書完成
122 *****************************************/
123 void LcdInit(void)
124 {
125 1 Delay400Ms();
126 1
127 1 /* 寫指令0x38連續(xù)3次, 不檢測忙信號*/
128 1 LcdWriteCmd(0x38 , 0 );
129 1 Delay5Ms();
130 1
131 1 LcdWriteCmd(0x38 , 0 );
132 1 Delay5Ms();
133 1
134 1 LcdWriteCmd(0x38 , 0 );
135 1 Delay5Ms();
136 1
137 1 /* 以后的讀寫操作均要判斷忙信號 */
138 1 LcdWriteCmd(0x38 , 1 );
139 1 /* 先設(shè)置關(guān)屏 */
140 1 LcdWriteCmd(0x08 , 1 );
141 1 /* 清屏 */
142 1 LcdWriteCmd(0x01 , 1 );
143 1 /* 設(shè)置光標(biāo)顯示模式 */
144 1 LcdWriteCmd(0x06 , 1 );
145 1 /* 開屏并顯示光標(biāo) */
146 1 LcdWriteCmd(0x0c , 1 );
147 1 }
148
149 /***************************************
150 說明: 設(shè)置光標(biāo)定位
151 *****************************************/
152 void LocateXY(char x , char y)
153 {
154 1 unsigned char temp;
155 1
156 1 temp = x & 0xf;
157 1 y &= 0x1;
158 1 if ( y )temp |= 0x40;
159 1 temp |= 0x80;
160 1 LcdWriteCmd(temp,1);
161 1 }
162
163 /***************************************
164 說明: 顯示字符
165 x: 橫坐標(biāo) y: 縱坐標(biāo)
166 value: 顯示的字符
167 *****************************************/
168 void PutChar(char x , char y , char value)
169 {
170 1 LocateXY(x,y);
171 1 LcdWriteData(value);
172 1 }
173
174 /***************************************
175 說明: 顯示字符串
176 *****************************************/
177 void PutStr(char x , char y , char* str)
178 {
C51 COMPILER V7.20 SMC162 04/13/2006 13:35:21 PAGE 4
179 1 unsigned char i,len=0;
180 1 /* 計算字符串長度 */
181 1 while (str[len] >31)
182 1 len++;
183 1
184 1 /* 顯示字符串 */
185 1 for (i=0;i<len;i++)
186 1 {
187 2 PutChar(x++,y,str[i]);
188 2 if ( x == 16 )
189 2 {
190 3 x = 0; y ^= 1;
191 3 }
192 2 }
193 1 }
194
195
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 322 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -