📄 displaylcd.lst
字号:
C51 COMPILER V8.02 DISPLAYLCD 09/30/2007 17:06:43 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DISPLAYLCD
OBJECT MODULE PLACED IN displaylcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE displaylcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <stdarg.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include <stdio.h>
5 #include <ctype.h>
6 #include "reg52.h"
7 #include "intrins.h"
8 #define uchar unsigned char
9 #define uint int
10 /***************************HT1621常数定义*****************************/
11 #define RAMSIZE 16 //RAM区16字节
12 #define BIAS 0x52 //1/3偏压,4个公共口
13 #define RC256K 0x30 //片内RC振荡器
14 #define SYSEN 0x02 //打开系统振荡器
15 #define SYSDIS 0x00 //关闭系统振荡器河LCD偏压发生器
16 #define LCDON 0x06 //打开LCD偏压发生器
17 #define SYSDIS 0X00 /*关闭振荡发生器*/
*** WARNING C317 IN LINE 17 OF displaylcd.c: attempt to redefine macro 'SYSDIS'
18 #define LCDOFF 0X04 /*显示关闭*/
19 #define TONE4 0X80 /*设置BZ 输出频率为4K*/
20 #define TONEON 0X12 /*打开BZ 音频输出*/
21 #define TONEOFF 0X10 /*关闭BZ 音频输出*/
22 #define CLRWDT 0X1c /*清零WDT*/
23 #define F1 0X40 /*WDT设置为4 秒溢出*/
24 #define IRQEN 0X10 /*IRQ 输出禁止*/
25 #define IRQDIS 0X00 /*IRQ 输出允许*/
26 #define WDTEN 0X0e /*打开WDT*/
27 #define WDTDIS 0X0a /*关闭WDT*/
28 #define TIMERDIS 0X08 /*关闭时基输出*/
29 /***************************HT1621常数定义***************************
30 #define RAMSIZE 16 //RAM区16字节
31 #define BIAS 0x29 //1/3偏压,4个公共口
32 #define RC256K 0x18 //片内RC振荡器
33 #define SYSEN 0x01 //打开系统振荡器
34 #define SYSDIS 0x00 //关闭系统振荡器河LCD偏压发生器
35 #define LCDON 0x03 //打开LCD偏压发生器
36 #define lcd_osci 0x14 // XTAL 32
37 #define wtd_dis 0x05
38 #define wtd_en 0x07
39 #define irq_dis 0x80
40 #define irq_en 0x88
41 #define f1 0xa0
42 #define f8 0xa3
43 #define clr_wtd 0x0e
44 ********************************************************/
45 //#define sbit HT_WR P1^2 //读写线
46 //#define sbit HT_CS P1^1 //片选线
47 //#define sbit HT_DATA P1^3 //数据线
48 sbit HT_WR = P1^3;
49 sbit HT_CS = P1^2;
50 sbit HT_DATA = P1^1;
51 void EnableHt1621(void);
52 void SendBitToHt1621(uchar nbit,uchar n);
53 void SendCommandToHt1621(uchar command);
54 void ResetHt1621(void);
C51 COMPILER V8.02 DISPLAYLCD 09/30/2007 17:06:43 PAGE 2
55 void SetupHt1621(void);
56 void SendByteToHt1621(uchar addr,uchar byte);
57 void SendStringToHt1621(uchar addr,uchar *ptr,uchar len);
58 void Ht1621DisplayAll(void);
59 void Delay(void);
60 void Delay1s(void);
61 /**********************************************************************
62 延时函数 用于调整CLK 脉冲宽度
63 ***********************************************************************/
64 void Delay(void)
65 {
66 1 uchar i;
67 1 for(i=0;i<10;i++){};
68 1 }
69
70 /**********************************************************************
71 长延时函数
72 ***********************************************************************/
73 void Delay1s(void)
74 {
75 1 uchar i;
76 1 uint j;
77 1
78 1 for(i=0;i<100;i++)
79 1 for(j=0;j<1300;j++);
80 1 }
81
82 /*********************************************************************************
83 函数名称:void EnableHt1621(void)
84 函数功能:使能HT1621
85 函数输入:无
86 函数输出:无
87 **********************************************************************************/
88 void EnableHt1621(void)
89 {
90 1 HT_CS=0;
91 1 HT_WR=1;
92 1 Delay();
93 1 HT_WR=0;
94 1 Delay();
95 1 }
96 /*********************************************************************************
97 函数名称:SendBitToHt1621(uchar nbit,uchar n)
98 函数功能:向HT1621发送数据
99 函数输入:nbit:发送的位串 n:发送的位数
100 函数输出:无
101 *********************************************************************************/
102 void SendBitToHt1621(uchar nbit,uchar n)
103 {
104 1 uchar i;
105 1 for(i=0;i<n;i++)
106 1 {
107 2 if(nbit>=0x80)
108 2 HT_DATA=1;
109 2 else
110 2 HT_DATA=0;
111 2 HT_WR=0;
112 2 Delay();
113 2 HT_WR=1;
114 2 Delay();
115 2 nbit<<=1;
116 2 }
C51 COMPILER V8.02 DISPLAYLCD 09/30/2007 17:06:43 PAGE 3
117 1 }
118 /************************************************/
119 void SenddataBitToHt1621(uchar nbit,uchar n)
120 {
121 1 uchar i;
122 1 for(i=0;i<n;i++)
123 1 {
124 2 if(nbit>=0x80)
125 2 HT_DATA=1;
126 2 else
127 2 HT_DATA=0;
128 2 HT_WR=0;
129 2 Delay();
130 2 HT_WR=1;
131 2 Delay();
132 2 nbit>>=1;
133 2 }
134 1 }
135 /***********************************************************************************
136 函数名称:void sendcommandtoht1621(uchar command)
137 函数功能:发送命令到HT1621
138 函数输入:command:命令参数
139 函数输出:无
140 ***********************************************************************************/
141 void SendCommandToHt1621(uchar command)
142 {
143 1 EnableHt1621();
144 1 SendBitToHt1621(0x80,4);
145 1 SendBitToHt1621(command,8);
146 1 HT_WR=1;
147 1 Delay();
148 1 HT_CS=1;
149 1 Delay();
150 1 HT_DATA=1;
151 1 }
152 /***********************************************************************************
153 函数名称:void ResetHt1621(void)
154 函数功能:复位HT1621
155 函数输入:无
156 函数输出:无
157 ***********************************************************************************/
158 void ResetHt1621(void)
159 {
160 1 HT_WR=1;
161 1 Delay();
162 1 HT_CS=1;
163 1 Delay();
164 1 HT_DATA=1;
165 1 }
166 /***********************************************************************************
167 函数名称:void SetupHt1621(void)
168 函数功能:初始化HT1621
169 函数输入:无
170 函数输出:无
171 ***********************************************************************************/
172 void SetupHt1621(void)
173 {
174 1 SendCommandToHt1621(SYSEN);
175 1 // SendCommandToHt1621(lcd_osci);
176 1 SendCommandToHt1621(BIAS);
177 1 SendCommandToHt1621(RC256K);
178 1 // SendCommandToHt1621(F1);
C51 COMPILER V8.02 DISPLAYLCD 09/30/2007 17:06:43 PAGE 4
179 1 SendCommandToHt1621(WDTDIS);
180 1 // SendCommandToHt1621(IRQDIS);
181 1 SendCommandToHt1621(LCDON);
182 1 }
183 /***********************************************************************************
184 函数名称:void SendByteToHt1621(uchar addr,uchar byte)
185 函数功能:初始化HT1621
186 函数输入:addr:地址 byte:发送的字节
187 函数输出:无
188 ***********************************************************************************/
189 void SendByteToHt1621(uchar addr,uchar byte)
190 {
191 1 addr<<=3;
192 1 EnableHt1621();
193 1 SendBitToHt1621(0xA0,3);
194 1 SendBitToHt1621(addr,6);
195 1 SendBitToHt1621(byte,8);
196 1 HT_WR=1;
197 1 //NOP();
198 1 Delay();
199 1 HT_CS=1;
200 1 }
201 /*********************************************************************************************************
-*****************
202 //函数名称:void SendStringToHt1621(uchar addr,uchar *ptr,uchar len)
203 //函数功能:发送字符串给HT1621
204 //函数输入:addr:起始地址 ptr:发送的字符串 len:发送的字符串长度
205 //函数输出:无
206 **********************************************************************************************************
-*****************/
207 void SendStringToHt1621(uchar addr,uchar *ptr,uchar len)
208 {
209 1 uchar i;
210 1 addr<<=2;
211 1 EnableHt1621();
212 1 SendBitToHt1621(0xa0,3);
213 1 SendBitToHt1621(addr,6);
214 1 if((len+addr)>RAMSIZE)len=RAMSIZE-addr;
215 1 for(i=0;i<len;i++)
216 1 {
217 2 SendBitToHt1621(ptr[i],8);
218 2 }
219 1 HT_CS=1;
220 1 }
221
222
223 /******test*******/
224 void main(void)
225 {
226 1 uchar a,temp,add;
227 1 uchar addr;
228 1 temp=0xad;
229 1 //a=0x5f;
230 1 addr=0x02;
231 1 // add=0x01;
232 1
233 1 ResetHt1621();
234 1 SetupHt1621();
235 1 while(1)
236 1 {
237 2 SendByteToHt1621(addr,temp);
238 2 Delay1s();
C51 COMPILER V8.02 DISPLAYLCD 09/30/2007 17:06:43 PAGE 5
239 2 Delay1s();
240 2 Delay1s();
241 2 temp++;
242 2 if(temp== 0xff) temp = 0;
243 2 }
244 1 //SendByteToHt1621(add<<=2,a);
245 1 //SendStringToHt1621(0,a,5);
246 1
247 1 }
*** WARNING C280 IN LINE 226 OF DISPLAYLCD.C: 'a': unreferenced local variable
*** WARNING C280 IN LINE 226 OF DISPLAYLCD.C: 'add': unreferenced local variable
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 348 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -