📄 lcd.lst
字号:
C51 COMPILER V8.02 LCD 08/26/2002 21:45:31 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"includes.h"
2
3 void lcd_sendcmd(unsigned char da) //向液晶发送指令
4 {
5 1 unsigned char i;
6 1 cs=0;
7 1 a0=0; //指令通道
8 1 sck=1;
9 1 for(i = 0; i < 8; i++)
10 1 {
11 2 da <<= 1;
12 2 cda = CY;
13 2 sck = 0;
14 2 mydelay(10);
15 2 sck = 1;
16 2 mydelay(10);
17 2 }
18 1 cs = 1;
19 1 mydelay(20);
20 1
21 1
22 1 }
23 void lcd_senddata(unsigned char da) //向液晶发送数据
24 {
25 1 unsigned char i;
26 1 cs=0;
27 1 a0=1; //数据通道
28 1 sck=1;
29 1 for(i = 0; i < 8; i++)
30 1 {
31 2 da <<= 1;
32 2 cda = CY;
33 2 sck = 0;
34 2 mydelay(10);
35 2 sck = 1;
36 2 mydelay(10);
37 2 }
38 1 cs = 1;
39 1 mydelay(20);
40 1
41 1
42 1 }
43 void lcd_init(void)
44 {
45 1 res = 1;
46 1 mydelay(32767);
47 1 mydelay(32767);
48 1 lcd_sendcmd(0xE2); //internal reset
49 1 lcd_sendcmd(0xA2); //d0:Set LCD drive voltage bias ratio 0=1/9bias 1=1/7bias
50 1 lcd_sendcmd(0xC8); //d3:select COM output direction 0=normal 1=reverse
51 1 lcd_sendcmd(0xA0); //d0:select SEG output direction 0=normal 1=reverse
52 1 lcd_sendcmd(0xA6); //d0=0display normal;=1reverse
53 1 lcd_sendcmd(0xf8); //select booster ratio
54 1 lcd_sendcmd(0x00); //d0\d1=00:4x
55 1 lcd_sendcmd(0x2C); //d2:1=select internal power supply operating mode
C51 COMPILER V8.02 LCD 08/26/2002 21:45:31 PAGE 2
56 1 lcd_sendcmd(0x2E); //
57 1 lcd_sendcmd(0x2F);
58 1 // lcd_sendcmd(0x25); //select internal resistor ratio(RB/RA)mode
59 1 lcd_sendcmd(0x81); //select the VO output voltage electronic volume register
60 1 lcd_sendcmd(0x14); //select the VO output voltage electronic volume register
61 1 lcd_sendcmd(0x0e); //select the VO output voltage electronic volume register
62 1 lcd_sendcmd(0xAF); //d0:LCD display ON=1/OFF=0
63 1 lcd_sendcmd(0xE0);
64 1 lcd_sendcmd(0x40); //Set the display RAM start line address
65 1 }
66
67 void Set_Page_Address(unsigned char dat) //设置页地址
68 {
69 1 lcd_sendcmd(0xb0|dat);
70 1 }
71
72 void Set_Colume_Address(unsigned char dat) //设置列地址
73 {
74 1 unsigned char tmp;
75 1 tmp=dat>>4;
76 1 lcd_sendcmd(0x10|tmp); //送列地址高三位
77 1 tmp=0x0f&dat;
78 1 lcd_sendcmd(tmp); //送列地址低四位
79 1 }
80 void lcd_clr(void) //清屏
81 {
82 1 unsigned char i,j;
83 1 for(i = 0; i < 8; i++)
84 1 {
85 2 Set_Page_Address(i);
86 2 Set_Colume_Address(0);
87 2
88 2 for(j = 0; j < 128; j++)
89 2 {
90 3 lcd_senddata(0x00);
91 3
92 3 }
93 2 }
94 1 }
95 void lcd_drawpot(unsigned char x/*0-127*/, unsigned char y/*0-63*/)
96 {
97 1 unsigned char temp;
98 1 Set_Colume_Address(x);
99 1 Set_Page_Address(y>>3);
100 1 y &= 0x07;
101 1 temp = 1<<y;
102 1 lcd_senddata(temp);
103 1 }
104 //x每写一个字+16,y换行+1
105 void lcd_drawhanzimo(unsigned char x/*0-127*/,unsigned char y/*0-7*/,unsigned char* ptr)
106 {
107 1 unsigned int i;
108 1
109 1 Set_Page_Address(y);
110 1 Set_Colume_Address(x);
111 1 for(i = 0; i<16; i ++)
112 1 lcd_senddata(*(ptr+i));
113 1
114 1 Set_Page_Address(y+1);
115 1 Set_Colume_Address(x);
116 1 for(i = 0; i<16; i++)
117 1 lcd_senddata(*(ptr+i+16));
C51 COMPILER V8.02 LCD 08/26/2002 21:45:31 PAGE 3
118 1 }
119
120
121 void lcd_drawnumber(unsigned char x/*0-127*/,unsigned char y/*0-7*/,unsigned char* ptr)
122 {
123 1 unsigned int i;
124 1 Set_Page_Address(y);
125 1 Set_Colume_Address(x);
126 1 for(i = 0; i<8; i ++)
127 1 lcd_senddata(*(ptr+i));
128 1
129 1 Set_Page_Address(y+1);
130 1 Set_Colume_Address(x);
131 1 for(i = 0; i<8; i++)
132 1 lcd_senddata(*(ptr+i+8));
133 1
134 1 }
135
136
*** WARNING C316 IN LINE 136 OF lcd.c: unterminated conditionals
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 679 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 22
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -