?? 12864串口.lst
字號:
C51 COMPILER V8.01 12864串口 03/14/2007 21:56:31 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE 12864串口
OBJECT MODULE PLACED IN 12864串口.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE 12864串口.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 128*64 LCD (ST7920)驅動程序
3
4 */
5
6 #include <regx52.H>
7 /******************************引腳定義*************************************/
8
9 #define CS P2_0 //片選 高電平有效 單片LCD使用時可固定高電平
10 #define SID P2_1 //數據
11 #define SCLK P2_2 //時鐘
12 #define PSB P3_6 //低電平時表示用串口驅動,可固定低電平
13 #define RESET P3_7 //LCD復位,LCD模塊自帶復位電路。可不接
14
15 /******************************函數聲明**************************************/
16
17 void write(bit start, unsigned char ddata);
18 void sendbyte(unsigned char bbyte);
19 void delaynms(unsigned int di);
20 void lcdinit(void);
21 void lcdtest(void);
22 void lcdcls(void);
23
24
25
26
27 /*******************************初始化函數*************************************/
28
29 void lcdinit(void) //初始化LCD
30 {
31 1 delaynms(10); //啟動等待,等LCM講入工作狀態
32 1 PSB=0; ; //串口驅動模式
33 1 RESET=0; delaynms(1); RESET=1; // 復位LCD
34 1 CS=1;
35 1 write(0,0x30); //8 位介面,基本指令集
36 1 write(0,0x0c); //顯示打開,光標關,反白關
37 1 write(0,0x01); //清屏,將DDRAM的地址計數器歸零
38 1 }
39
40 /********************************寫數據函數*************************************/
41 void write(bit start, unsigned char ddata) //寫指令或數據
42 {
43 1 unsigned char start_data,Hdata,Ldata;
44 1 if(start==0) start_data=0xf8; //寫指令
45 1 else start_data=0xfa; //寫數據
46 1
47 1 Hdata=ddata&0xf0; //取高四位
48 1 Ldata=(ddata<<4)&0xf0; //取低四位
49 1 sendbyte(start_data); //發送起始信號
50 1 delaynms(5); //延時是必須的
51 1 sendbyte(Hdata); //發送高四位
52 1 delaynms(1); //延時是必須的
53 1 sendbyte(Ldata); //發送低四位
54 1 delaynms(1); //延時是必須的
55 1 }
C51 COMPILER V8.01 12864串口 03/14/2007 21:56:31 PAGE 2
56
57 /********************************發送字節函數************************************/
58 void sendbyte(unsigned char bbyte) //發送一個字節
59 {
60 1 unsigned char i;
61 1 for(i=0;i<8;i++)
62 1 {
63 2 SID=bbyte&0x80; //取出最高位
64 2 SCLK=1;
65 2 SCLK=0;
66 2 bbyte<<=1; //左移
67 2 }
68 1 }
69
70 /**********************************延時函數**************************************/
71 void delaynms(unsigned int di) //延時
72 {
73 1 unsigned int da,db;
74 1 for(da=0;da<di;da++)
75 1 for(db=0;db<10;db++);
76 1 }
77
78 /***********************************圖形方式下屏幕全黑**************************/
79 void lcdtest(void) //圖形方式下屏幕全黑
80 {
81 1 unsigned char i,j;
82 1 for(i=0;i<32;i++)
83 1 { write(0,0x80+i);write(0,0x80);
84 2 for(j=0;j<16;j++) write(1,0xff);
85 2 }
86 1
87 1 for(i=0;i<32;i++)
88 1 { write(0,0x80+i);write(0,0x88);
89 2 for(j=0;j<16;j++) write(1,0xff);
90 2 }
91 1 }
92
93 /***********************************圖形方式下清屏******************************/
94 void lcdcls(void) //圖形方式下清屏
95 {
96 1 unsigned char i,j;
97 1 for(i=0;i<32;i++)
98 1 { write(0,0x80+i);write(0,0x80);
99 2 for(j=0;j<16;j++) write(1,0x00);
100 2 }
101 1
102 1 for(i=0;i<32;i++)
103 1 { write(0,0x80+i);write(0,0x88);
104 2 for(j=0;j<16;j++) write(1,0x00);
105 2 }
106 1 }
107
108
109
110
111
112
113
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 347 ----
C51 COMPILER V8.01 12864串口 03/14/2007 21:56:31 PAGE 3
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
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 + -