📄 12864串口.lst
字号:
C51 COMPILER V8.01 12864串口 12/07/2007 20:52:14 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE 12864串口
OBJECT MODULE PLACED IN 12864串口.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12864串口.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 128*64 LCD (ST7920)驱动程序
3
4 */
5
6 #include <reg52.h>
7 //bit P2_0=P2^0;
8 //bit P2_1=P2^1;
9 //bit P2_2=P2^2;
10 //bit P3_6=P3^6;
11 //bit P3_7=P3^7;
12 /******************************引脚定义*************************************/
13
14 sbit CS=P2^3; //片选 高电平有效 单片LCD使用时可固定高电平RS
15 sbit SID=P2^1; //数据 RW
16 sbit SCLK=P2^0; //时钟 E
17 //#define PSB P3_6 //低电平时表示用串口驱动,可固定低电平
18 //#define RESET P3_7 //LCD复位,LCD模块自带复位电路。可不接
19
20
21 /******************************函数声明**************************************/
22
23 void write(bit start, unsigned char ddata);
24 void sendbyte(unsigned char bbyte);
25 void delaynms(unsigned int di);
26 void lcdinit(void);
27 void lcdtest(void);
28 void lcdcls(void);
29
30
31
32
33
34 /*******************************初始化函数*************************************/
35
36 void lcdinit(void) //初始化LCD
37 {
38 1 delaynms(10); //启动等待,等LCM讲入工作状态
39 1 // PSB=0; ; //串口驱动模式
40 1 // RESET=0; delaynms(1); RESET=1; // 复位LCD
41 1 CS=1;
42 1 write(0,0x30); //8 位介面,基本指令集
43 1 write(0,0x0c); //显示打开,光标关,反白关
44 1 write(0,0x01); //清屏,将DDRAM的地址计数器归零
45 1 }
46
47 /********************************写数据函数*************************************/
48 void write(bit start, unsigned char ddata) //写指令或数据
49 {
50 1 unsigned char start_data,Hdata,Ldata;
51 1 if(start==0) start_data=0xf8; //写指令
52 1 else start_data=0xfa; //写数据
53 1
54 1 Hdata=ddata&0xf0; //取高四位
55 1 Ldata=(ddata<<4)&0xf0; //取低四位
C51 COMPILER V8.01 12864串口 12/07/2007 20:52:14 PAGE 2
56 1 sendbyte(start_data); //发送起始信号
57 1 delaynms(5); //延时是必须的
58 1 sendbyte(Hdata); //发送高四位
59 1 delaynms(1); //延时是必须的
60 1 sendbyte(Ldata); //发送低四位
61 1 delaynms(1); //延时是必须的
62 1 }
63
64 /********************************发送字节函数************************************/
65 void sendbyte(unsigned char bbyte) //发送一个字节
66 {
67 1 unsigned char i;
68 1 for(i=0;i<8;i++)
69 1 {
70 2 SID=bbyte&0x80; //取出最高位
71 2 SCLK=1;
72 2 SCLK=0;
73 2 bbyte<<=1; //左移
74 2 }
75 1 }
76
77 /**********************************延时函数**************************************/
78 void delaynms(unsigned int di) //延时
79 {
80 1 unsigned int da,db;
81 1 for(da=0;da<di;da++)
82 1 for(db=0;db<10;db++);
83 1 }
84
85 /***********************************图形方式下屏幕全黑**************************/
86 void lcdtest(void) //图形方式下屏幕全黑
87 {
88 1 unsigned char i,j;
89 1 for(i=0;i<32;i++)
90 1 { write(0,0x80+i);write(0,0x80);
91 2 for(j=0;j<16;j++) write(1,0xff);
92 2 }
93 1
94 1 for(i=0;i<32;i++)
95 1 { write(0,0x80+i);write(0,0x88);
96 2 for(j=0;j<16;j++) write(1,0xff);
97 2 }
98 1 }
99
100 /***********************************图形方式下清屏******************************/
101 void lcdcls(void) //图形方式下清屏
102 {
103 1 unsigned char i,j;
104 1 for(i=0;i<32;i++)
105 1 { write(0,0x80+i);write(0,0x80);
106 2 for(j=0;j<16;j++) write(1,0x00);
107 2 }
108 1
109 1 for(i=0;i<32;i++)
110 1 { write(0,0x80+i);write(0,0x88);
111 2 for(j=0;j<16;j++) write(1,0x00);
112 2 }
113 1 }
114
115
116
117
C51 COMPILER V8.01 12864串口 12/07/2007 20:52:14 PAGE 3
118
119
120
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 334 ----
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 + -