📄 lcd_1621.lst
字号:
C51 COMPILER V8.02 LCD_1621 05/04/2008 21:35:46 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD_1621
OBJECT MODULE PLACED IN LCD_1621.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE LCD_1621.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<head.h>
2 #include "LCD_1621.h"
3 #define lcd_writerising() LWR=LOW; LWR=HIGH;
4 void lcd_command(bit temp);
5 void lcd_writecommand(unsigned char commandcode);
6 void lcd_writedata(Uchar seg,Uchar form,bit mode);
7
8 /**************************************************************************
9 * 字模表格定义
10 * code Uchar form_buf_tab:LCDBUF0-LCDBUF5
11 * code Uchar form_lcd_tab:LCDF0-LCDF2
12 **************************************************************************/
13 Uchar lcd_buf[3]={0,0,0};
14 Uchar lcd_nbuf[6]={0,0,0,0,0,0};
15 code uchar lcd_j[11]={0x00,0x08,0x0c,0x0e,0x0f,0x8f,0xcf,0xef,0xff,0xff,0xff};
16 code uchar lcd_num[]={CH0,CH1,CH2,CH3,CH4, //0.1.2.3.4 4
17 CH5,CH6,CH7,CH8,CH9, //5.6.7.8.9 9
18 CHA,CHB,CHC, // A.B.C C
19 CHD,CHE,CHF,CHG,CHH, //D,E,F,G,H 11
20 CHI,CHJ,CHK,CHL,CHM, //I,J,K,L,M 16
21 CHN,CHO,CHP,CHQ,CHR, //N,O,P,Q,R 1b
22 CHS,CHT,CHU,CHV,CHW, //S,T,U,V,W 0x20
23 CHX,CHY,CHZ,CHPLUS,CHBLANK, //X,Y,Z,-,0x26
24 };
25 code uchar lcd_char[][2]={
26 {0x85,0x61},{0x00,0x60},{0xa4,0x25},{0xa0,0x65},//0.1.2.3
27 {0x21,0x64},{0xa1,0x45},{0xa5,0x45},{0x00,0x61},//4.5.6.7
28 {0xa5,0x65},{0xa1,0x65},//8.9.
29 {0x08,0x66},{0xa5,0x47},{0x85,0x01},{0xa4,0x64},//A.B.C.D
30 {0xa5,0x05},{0x25,0x05},{0x85,0x45},{0x25,0x64},//E.F.G.H
31 {0x50,0x00},{0x80,0x60},{0x25,0x0a},{0x85,0x00},//I.J.K.L //{0x50,0x0a}
32 {0x07,0x62},{0x07,0x68},{0x85,0x61},{0x25,0x25},//M.N.O.P
33 {0x87,0x69},{0x25,0x0b},{0xa1,0x45},{0x50,0x01},//Q.R.S.T
34 {0x85,0x60},{0x0d,0x02},{0x0d,0x68},{0x05,0x0a},//U.V.W.X
35 {0x42,0x02},{0x88,0x03}, //Y.Z. . 26个
36 {0x00,0x00},{0xa5,0x44},{0xa4,0x04},{0xa4,0x64},//a,b,c,d
37 {0x00,0x00},{0x00,0x00},{0xa1,0x65},{0x00,0x00},//e,f,g,h
38 {0x00,0x00},{0x00,0x00},{0x00,0x00},{0x85,0x00},//i,j,k,l
39 {0x00,0x00},{0x00,0x00},{0xa4,0x44},{0x00,0x00},//m,n,o,p
40 {0x00,0x00},{0x24,0x04},{0x00,0x00},{0xa5,0x04},//q,r,s,t
41 {0x00,0x00},{0x00,0x00},{0x0c,0x48},{0x00,0x00},//u,v,w,x
42 {0x00,0x00},{0xa8,0x07},{0x08,0x02},{0x00,0x00}//y,z
43 };
44 code unsigned char voltt[]={0x20,0x21,0x23,0x27,0x2f,0x3f};
45 /**************************************************************************
46 * 函数原型: void lcd_setback(BOOL back)
47 * 功 能: 打开或关闭背光灯
48 **************************************************************************/
49 void lcd_setback(BOOL back)
50 {
51 1 LBL=back;
52 1 }
53 #if 0
void lcd_set(bit onoff)
{
C51 COMPILER V8.02 LCD_1621 05/04/2008 21:35:46 PAGE 2
lcd_writecommand(onoff?0x03:0x2);
}
#endif
59 /**************************************************************************
60 * 函数原型: void beep_set(BOOL beep)
61 * 功 能: 打开或关闭蜂鸣器
62 **************************************************************************/
63 void beep_set(BOOL beep)
64 {
65 1 lcd_writecommand(beep?0x9:0x8);
66 1 }
67 #if 0
/**************************************************************************
* 函数原型: BOOL lcd_writevolt(char volt)
* 功 能: 写入电压显示
* 入口:需写入的数字大小
* 出口:返回是否写入成功
**************************************************************************/
BOOL lcd_writevolt(char volt)
{
if(volt<0)
{
lcd_writedata(30,0,1);
}
else
{
volt%=6;
lcd_writedata(30,voltt[volt],1);
}
return 1;
}
#endif
88 /**************************************************************************
89 * 函数原型: void lcd_flagset(Uchar flagbit,BOOL flag)
90 * 功 能: 设置符号位
91 **************************************************************************/
92 void Dis_SetFlag(Uchar flagbit,BOOL flag)
93 {
94 1 switch(flagbit)
95 1 {
96 2 case DIS_MINUS:
97 2 if(flag)lcd_buf[2]|=0x20;
98 2 else lcd_buf[2]&=0xdf;
99 2 break;
100 2 case DIS_ZERO:
101 2 if(flag)lcd_buf[2]|=0x10;
102 2 else lcd_buf[2]&=0xef;
103 2 break;
104 2 case DIS_STA:
105 2 if(flag)lcd_buf[2]|=0x40;
106 2 else lcd_buf[2]&=0xbf;
107 2 break;
108 2 case DIS_TARE:
109 2 if(flag)lcd_buf[1]|=0x40;
110 2 else lcd_buf[1]&=0xbf;
111 2 break;
112 2 case DIS_COLON1:
113 2 if(flag)lcd_buf[1]|=0x02;
114 2 else lcd_buf[1]&=0xfd;
115 2 break;
116 2 case DIS_COLON2:
117 2 if(flag)lcd_buf[1]|=0x04;
C51 COMPILER V8.02 LCD_1621 05/04/2008 21:35:46 PAGE 3
118 2 else lcd_buf[1]&=0xfb;
119 2 break;
120 2 case DIS_HOLD:
121 2 if(flag)lcd_buf[1]|=0x20;
122 2 else lcd_buf[1]&=0xdf;
123 2 break;
124 2 }
125 1 lcd_writedata(18,lcd_buf[1],0);
126 1 lcd_writedata(16,lcd_buf[1]>>4,0);
127 1 lcd_writedata(17,lcd_buf[2]>>4,0);
128 1 lcd_writedata(29,lcd_buf[2],0);
129 1 }
130 /**************************************************************************
131 * 函数原型: BOOL lcd_all()
132 * 功 能:
133 * 入口:
134 * 出口:返回是否写入成功
135 **************************************************************************/
136 BOOL lcd_all()
137 {
138 1 char i=0;
139 1 for(i=0;i<32;i++)
140 1 {
141 2 lcd_writedata(i,0xff,0);
142 2 }
143 1 return 1;
144 1 }
145 /**************************************************************************
146 * 函数原型: BOOL lcd_clr()
147 * 功 能:
148 * 入口:
149 * 出口:返回是否写入成功
150 **************************************************************************/
151 BOOL lcd_clr()
152 {
153 1 char i=0;
154 1 for(i=0;i<32;i++)
155 1 {
156 2 lcd_writedata(i,0x0,0);
157 2 }
158 1 lcd_buf[0]=0;
159 1 lcd_buf[1]=0;
160 1 lcd_buf[2]=0;
161 1 return 1;
162 1 }
163 /**************************************************************************
164 * 函数原型: BOOL lcd_writej(char j)
165 * 功 能: 写入比例尺
166 * 入口:需写入的数字大小
167 * 出口:返回是否写入成功
168 **************************************************************************/
169 BOOL lcd_writej(char j)
170 {
171 1 lcd_buf[0]=lcd_j[j];
172 1 lcd_buf[1]|=0x08;
173 1 if(j>8)lcd_buf[1]|=0x01;
174 1 else lcd_buf[1]&=0xfe;
175 1 if(j>9)lcd_buf[1]|=0x10;
176 1 else lcd_buf[1]&=0xef;
177 1 lcd_writedata(19,lcd_buf[0],1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -