📄 lcmservice.lst
字号:
C51 COMPILER V7.20 LCMSERVICE 11/09/2002 21:11:14 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LCMSERVICE
OBJECT MODULE PLACED IN LCMService.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCMModule\LCMService.c BROWSE DEBUG OBJECTEXTEND PRINT(.\LCMService.lst) OB
-JECT(LCMService.obj)
line level source
1 /*
2 文件名: LCMService.c
3 功能: 液晶显示服务函数实现
4 单位: 浙江工商大学-信电学院
5 创建日期:2004-09-24
6 创建人: Houseivan
7 修改人: Houseivan
8 修改日期:2005-03-11
9 */
10 /*------------------------------------------------*/
11 #include"Includes.h"
12 /*检查是否配置了显示器功能*/
13 #if _LCM_TASK>0
14 /*------------------------------------------------*/
15 /*液晶字型数组定义*/
16 extern uchar code lcd_zx[][3];
17 /*液晶的显示缓冲区地址*/
18 extern uchar code position[];
19 /*检测是否配置了传感器监控功能*/
20 /* 显示页面模板 */
21 extern uchar code TimePage[];
22 extern uchar code DatePage[];
23 extern uchar code WeekPage[];
24 extern uchar code BusyPage[];
25 extern uchar code ErrorPage[];
26 /*符号位包含在整数部分的最高位1:负数=======0:正数*/
27 extern uchar data TempInteger; //温度值整数和符号字节
28 extern uchar data TempDecimal; //温度值小数位字节
29 extern uchar data HumiInteger; //湿度值整数和符号字节
30 extern uchar data HumiDecimal; //湿度值小数位字节
31 extern uchar data ClkLcmBuf[_MAX_LCM_NUM];
32 extern uchar data UartRecBuf[_MAX_LENG];
33 extern uchar data SystemState; //系统运行状态指示
34 extern uchar data LcmMode; //显示模式选择
35
36 /*LCM0103控制线定义*/
37 sbit CS=P1^4;
38 sbit CLK=P1^6; //上升边沿触发
39 sbit DI=P1^5;
40 /*------------------------------------------------*/
41 /*
42 名称: LCM_Initialize
43 功能: LCM0103初始化
44 注意:
45 */
46 void LCM_Initialize(void)
47 {
48 1 DI=0;
49 1 CS=1;
50 1 CLK=1;
51 1 DelayTime(1,200);
52 1 WriteCmd(NO_WDOG); //1
53 1 WriteCmd(CRY_OPEN); //2
54 1 WriteCmd(DISP_ON); //3
C51 COMPILER V7.20 LCMSERVICE 11/09/2002 21:11:14 PAGE 2
55 1 WriteCmd(CLR_TIME); //4
56 1 WriteCmd(IN_OK); //5
57 1 WriteCmd(INIT);
58 1 LCM_Clear();
59 1 }
60 /*------------------------------------------------*/
61 /*------------------------------------------------*/
62 /*
63 名称: LCM_Clear(void)
64 功能: 显示器屏幕清除
65 注意:
66 */
67 void LCM_Clear(void)
68 {
69 1 uchar i=0;
70 1 for(i=0;i<10;i++)
71 1 OutputChar(position[i],22,0);
72 1 }
73 /*------------------------------------------------*//*------------------------------------------------*/
74 /*
75 名称: WriteBit
76 功能: 写入一个位信息
77 注意:
78 */
79 void WriteBit(bit mybit)
80 {
81 1 CS=0;
82 1 CLK=0;
83 1 DI=mybit;
84 1 CLK=1;
85 1 DelayTime(1,5);
86 1 }
87 /*------------------------------------------------*/
88 /*------------------------------------------------*/
89 /*
90 名称: WriteCmd
91 功能: 写入命令字
92 注意:
93 */
94 void WriteCmd(uchar scmd)
95 {
96 1 CS=0;
97 1 WriteData(COMD,3);
98 1 WriteData(scmd,8);
99 1 WriteBit(0);
100 1 CS=1;
101 1 }
102 /*------------------------------------------------*/
103 /*------------------------------------------------*/
104 /*
105 名称: WriteData
106 功能: 写一个数据包括模式和显示字模
107 注意:
108 */
109 void WriteData(uchar sdata,uchar N)
110 {
111 1 bit bit1;
112 1 uchar i=0;
113 1 CS=0;
114 1 if (N>8)N=8;
115 1 for(i=0;i<N;i++)
116 1 {
C51 COMPILER V7.20 LCMSERVICE 11/09/2002 21:11:14 PAGE 3
117 2 bit1=((sdata & 0x01)==0x01);
118 2 WriteBit(bit1);
119 2 sdata>>=1;
120 2 }
121 1 }
122 /*------------------------------------------------*/
123 /*------------------------------------------------*/
124 /*
125 名称: SetupInAddr
126 功能: 写入设定的显示缓冲对应的地址
127 注意:
128 */
129 void SetupAddr(uchar sdata,uchar N)
130 {
131 1 bit bit1;
132 1 uchar i=0;
133 1 if (N<8)sdata<<=(8-N);
134 1 //A5 ~ A0 and A5=0
135 1 else N=8;
136 1 CS=0;
137 1 WriteBit(0);
138 1 for(i=0;i<N;i++)
139 1 {
140 2 bit1=((sdata & 0x80)==0x80);//取出最高位
141 2 WriteBit(bit1);
142 2 sdata<<=1;
143 2 }
144 1 CLK=0;
145 1 }
146 /*------------------------------------------------*/
147 /*------------------------------------------------*/
148 /*
149 名称: OutputChar
150 功能: 显示一位BCD数字在液晶屏上
151 注意: dot=1 then there is a dot need to display
152 */
153 void OutputChar(uchar LcmID,uchar bcdcode,bit dot)
154 {
155 1 uchar i=0;
156 1 CS=0;
157 1 WriteData(WRITE,3); //set_mode
158 1 SetupAddr(LcmID,5); //0 A4~A0//设定首地址
159 1 for (i=0;i<3;i++)
160 1 {
161 2 if(dot && (i==0))
162 2 WriteData((lcd_zx[bcdcode][i] | DOT),3);
163 2 else
164 2 WriteData(lcd_zx[bcdcode][i],3);
165 2 WriteBit(0);
166 2 }
167 1 CS=1; //结束一次数据写操作
168 1 }
169 /*------------------------------------------------*/
170 /*------------------------------------------------*/
171 /*
172 名称: OutputTHValue
173 功能: 显示两个字符数据/显示温湿度值页面
174 注意: [xxx][xxx] // -xx.x -xx.x
175 9 0
176 */
177 void OutputTHValue(uchar data1,uchar data2,uchar start)
178 {
C51 COMPILER V7.20 LCMSERVICE 11/09/2002 21:11:14 PAGE 4
179 1 uchar nTemp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -