📄 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 + -