📄 lcd.lst
字号:
C51 COMPILER V7.50 LCD 09/17/2008 16:34:37 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /****************************************************************************
2 File Name:lcd.c
3 Version:
4 Discription:
5 Author:
6 Date:
7 *****************************************************************************/
8 #include "key_display.h"
9
10 unsigned char lcd_byte = 0;//LC75823E的显示缓冲区中的byte计数
11 unsigned char lcd_bit = 0;//LC75823E的显示缓冲区中一个byte的bit计数
12 unsigned char lcd_cnt = 0;//用于全屏显示计数
13
14 bit vfd_flag = 0;//更新显示标志
15 typedef unsigned char BYTE;
16 BYTE disp_buff[SHADOW_LENGTH];//LC75823E的20byte的显示缓冲区
17
18 //下面的数组用于传送数据的每一个bit//
19 BYTE code Byte_Bit_Mask[8] = { /* Define the byte mark bit */
20 0x01, 0x02, 0x04, 0x08,
21 0x10, 0x20, 0x40, 0x80
22 };
23 /***************************************************************************************
24 * 函数名称:LCDDelay()
25 * 功 能:
26
27 * 输入参数:
28 * 输出参数:
29 * 说 明:
30 ****************************************************************************************/
31 void LCDDelay(unsigned char n)
32 {
33 1 while(n--)
34 1 {
35 2 _nop_();
36 2 _nop_();
37 2 }
38 1 }
39 /***************************************************************************************
40 * 函数名称:VFD_Refresh()
41 * 功 能:更新显示函数,每一次都要发送CCB地址、20byte的数据与控制位
42
43 * 输入参数:
44 * 输出参数:
45 * 说 明:
46 ****************************************************************************************/
47 void VFD_Refresh( void )
48 {
49 1 BYTE i,j;
50 1 BYTE TxData;
51 1
52 1 if(vfd_flag == 1)
53 1 {
54 2 vfd_flag = 0;
55 2
C51 COMPILER V7.50 LCD 09/17/2008 16:34:37 PAGE 2
56 2 disp_buff[19] &= 0x0f; // clear the high-nibble
57 2 disp_buff[19] |= 0x10; // set it.(the high-nibble is the control nibble)
58 2
59 2 /* Send CCB address 41H */
60 2 FP_CE = 0;
61 2 TxData = 0x41;
62 2 for (i=0; i<8; i++)
63 2 {
64 3 FP_CLK = 0;
65 3 if (TxData & Byte_Bit_Mask[i])
66 3 {
67 4 FP_DAT = 1;
68 4 }
69 3 else
70 3 {
71 4 FP_DAT = 0;
72 4 }
73 3 LCDDelay(1);
74 3 FP_CLK = 1;
75 3 LCDDelay(1);
76 3 }
77 2 FP_CE = 1;
78 2
79 2 /* Send display data */
80 2 for (i=0; i<20; i++)
81 2 {
82 3 TxData = disp_buff[i];
83 3 for (j=0; j<8; j++)
84 3 {
85 4 FP_CLK = 0;
86 4 if (TxData & Byte_Bit_Mask[j])
87 4 {
88 5 FP_DAT = 1;
89 5 }
90 4 else
91 4 {
92 5 FP_DAT = 0;
93 5 }
94 4 LCDDelay(1);
95 4 FP_CLK = 1;
96 4 LCDDelay(1);
97 4 }
98 3 }
99 2 FP_CE = 0;
100 2 FP_DAT = 1;
101 2 FP_CLK = 1;
102 2 }
103 1 }
104 /***************************************************************************************
105 * 函数名称:test_lcd()
106 * 功 能:函数设置三个按键:KEY_NEXT用于显示下一个字段;KEY_PREV用于显示上一个字段
107 KEY_P_P用于恢复初始显示的字段;当前显示字段以闪烁形式显示
108
109 * 输入参数:
110 * 输出参数:
111 * 说 明:
112 ****************************************************************************************/
113 void test_lcd(void)
114 {
115 1
116 1 unsigned char glb_InputKey;
117 1 glb_InputKey = get_msg();
C51 COMPILER V7.50 LCD 09/17/2008 16:34:37 PAGE 3
118 1
119 1 for (lcd_cnt=0; lcd_cnt<SHADOW_LENGTH; lcd_cnt++) //全屏显示
120 1 {
121 2 disp_buff[lcd_cnt] = 0xff;
122 2 }
123 1
124 1 if ((glb_InputKey == KEY_NEXT) || (glb_InputKey == KEY_PREV)||(glb_InputKey == KEY_P_P))
125 1 {
126 2 if (glb_InputKey == KEY_NEXT) //显示下一个点
127 2 {
128 3 lcd_bit++;
129 3 if (lcd_bit > 7)
130 3 {
131 4 lcd_bit = 0;
132 4 lcd_byte++;
133 4 if (lcd_byte >= SHADOW_LENGTH) lcd_byte = 0;
134 4 }
135 3 }
136 2 if(glb_InputKey == KEY_PREV)//显示上一个点
137 2 {
138 3 if (lcd_bit) lcd_bit--;
139 3 else
140 3 {
141 4 lcd_bit = 7;
142 4 if (lcd_byte) lcd_byte--;
143 4 else
144 4 {
145 5 lcd_byte = SHADOW_LENGTH-1;
146 5 }
147 4 }
148 3 }
149 2 if(glb_InputKey == KEY_P_P)//恢复起始点
150 2 {
151 3 lcd_bit = 0;
152 3 lcd_byte = 0;
153 3 }
154 2
155 2 disp_buff[lcd_byte] |= (1<<lcd_bit);//显示当前字段
156 2 vfd_flag = 1;
157 2 }
158 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 229 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 23 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -