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