📄 lcd.lst
字号:
C51 COMPILER V8.01 LCD 08/10/2008 17:31:47 PAGE 1
C51 COMPILER V8.01, 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<C8051F000.h>
2 #include<lcd.h>
3 void mydelay(unsigned int i)
4 {
5 1 unsigned int j;
6 1 for(j=0;j<i;j++);
7 1 }
8 void lcd_senddata(unsigned char da)
9 {
10 1 unsigned char i;
11 1 LCD_CS = 0;
12 1 LCD_A0 = 1; //数据通道
13 1 LCD_SCK = 1;
14 1 for(i = 0; i < 8; i++)
15 1 {
16 2 da <<= 1;
17 2 LCD_DA = CY;
18 2 LCD_SCK = 0;
19 2 mydelay(20);
20 2 LCD_SCK = 1;
21 2 mydelay(10);
22 2 }
23 1 LCD_CS = 1;
24 1 mydelay(20);
25 1 }
26 void lcd_sendcmd(unsigned char da)
27 {
28 1 unsigned char i;
29 1 LCD_CS = 0;
30 1 LCD_A0 = 0; //指令通道
31 1 LCD_SCK = 1;
32 1 for(i = 0; i < 8; i++)
33 1 {
34 2 da <<= 1;
35 2 LCD_DA = CY;
36 2 LCD_SCK = 0;
37 2 mydelay(10);
38 2 LCD_SCK = 1;
39 2 mydelay(10);
40 2 }
41 1 LCD_CS = 1;
42 1 mydelay(20);
43 1 }
44 void Lcd_Init(void)
45 {
46 1 LCD_RES = 1;
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.01 LCD 08/10/2008 17:31:47 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 void Set_Page_Address(unsigned char dat)
67 {
68 1 lcd_sendcmd(0xb0|dat);
69 1 }
70 void Set_Colume_Address(unsigned char dat)
71 {
72 1 unsigned char tmp;
73 1 tmp=dat>>4;
74 1 lcd_sendcmd(0x10|tmp); //送列地址高三位
75 1 tmp=0x0f&dat;
76 1 lcd_sendcmd(tmp); //送列地址低四位
77 1 }
78 void lcd_clr(void)
79 {
80 1 unsigned char i,j;
81 1 for(i = 0; i < 8; i++)
82 1 {
83 2 Set_Page_Address(i);
84 2 Set_Colume_Address(0);
85 2
86 2 for(j = 0; j < 128; j++)
87 2 {
88 3 lcd_senddata(0x00);
89 3
90 3 }
91 2 }
92 1 }
93 void lcd_drawpot(unsigned char x/*0-127*/, unsigned char y/*0-63*/)
94 {
95 1 unsigned char temp;
96 1 Set_Colume_Address(x);
97 1 Set_Page_Address(y>>3);
98 1 y &= 0x07;
99 1 temp = 1<<y;
100 1 lcd_senddata(temp);
101 1 }
102 //x每写一个字+16,y换行+1
103 void lcd_drawhanzimo(unsigned char x/*0-127*/,unsigned char y/*0-7*/,unsigned char* ptr)
104 {
105 1 unsigned int i;
106 1
107 1 Set_Page_Address(y);
108 1 Set_Colume_Address(x);
109 1 for(i = 0; i<16; i ++)
110 1 lcd_senddata(*(ptr+i));
111 1
112 1 Set_Page_Address(y+1);
113 1 Set_Colume_Address(x);
114 1 for(i = 0; i<16; i++)
115 1 lcd_senddata(*(ptr+i+16));
116 1 }
C51 COMPILER V8.01 LCD 08/10/2008 17:31:47 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 473 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 9
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -