📄 lcm.lst
字号:
C51 COMPILER V8.02 LCM 06/09/2007 19:54:48 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCM
OBJECT MODULE PLACED IN LCM.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE LCM.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //***********************************************************************
2 // 液晶控制芯片ST7920驱动源文件 *
3 // *
4 //硬件连接说明: *
5 // *
6 // RS(CS) ----------------------------- P3^1 *
7 // R/W(STD) ----------------------------- P3^4 *
8 // E(SCLK) ----------------------------- P3^5 *
9 // PSB ----------------------------- P0^1 *
10 // RST ----------------------------- P0^0 *
11 // DB0 ----------------------------- P1^0 *
12 // DB1 ----------------------------- P1^1 *
13 // DB2 ----------------------------- P1^2 *
14 // DB3 ----------------------------- P1^3 *
15 // DB4 ----------------------------- P1^4 *
16 // DB5 ----------------------------- P1^5 *
17 // DB6 ----------------------------- P1^6 *
18 // DB7(BUSY) ----------------------------- P1^7 *
19 // *
20 //***********************************************************************
21
22 #include <reg52.h>
23 #include<intrins.h>
24 #include<string.h>
25 #define uchar unsigned char
26 #define uint unsigned int
27
28 #define COUNT 0x10
29
30 //每行的首地址,基于RT12864-4M型液晶
31 #define LINE_ONE_ADDRESS 0x80
32 #define LINE_TWO_ADDRESS 0x90
33 #define LINE_THREE_ADDRESS 0x88
34 #define LINE_FOUR_ADDRESS 0x98
35
36 //基本指令集预定义
37 #define DATA 1 //数据位
38 #define COMMAND 0 //命令位
39 #define CLEAR_SCREEN 0x01 //清屏
40 #define ADDRESS_RESET 0x02 //地址归零
41 #define BASIC_FUNCTION 0x30 //基本指令集
42 #define EXTEND_FUNCTION 0x34 //扩充指令集
43
44 //扩展指令集预定义
45 #define AWAIT_MODE 0x01 //待命模式
46 #define ROLLADDRESS_ON 0x03 //允许输入垂直卷动地址
47 #define IRAMADDRESS_ON 0x02 //允许输入IRAM地址
48 #define SLEEP_MODE 0x08 //进入睡眠模式
49 #define NO_SLEEP_MODE 0x0c //脱离睡眠模式
50 #define GRAPH_ON 0x36 //打开绘图模式
51 #define GRAPH_OFF 0x34 //关闭绘图模式
52
53
54 //并行位定义
55 sbit RS=P3^1;
C51 COMPILER V8.02 LCM 06/09/2007 19:54:48 PAGE 2
56 sbit RW=P3^4;
57 sbit E= P3^5;
58 sbit BUSY=P1^7;
59
60 //控制位定义
61 sbit PSB = P2^3; //串并选择信号
62 sbit RST = P2^5; //复位信号
63
64
65 uchar code Tab1[]="北京信息科技大学";//显示在第一行
66 uchar code Tab2[]="信息与通信工程系";//显示在第二行
67 uchar code Tab3[]="电子信息工程专业";//显示在第三行
68 uchar code Tab4[]="全国电子设计大赛";//显示在第四行
69 uchar code Tab5[]={0x54,0xf4};
70
71 //*******************************************
72 //*函数名称:void Parallel_Check_Busy(void) *
73 //*函数功能:并行方式查忙 *
74 //*形式参数:无 *
75 //*形参说明:无 *
76 //*返回参数:无 *
77 //*使用说明:无 *
78 //*******************************************
79 void Parallel_Check_Busy(void)
80 {
81 1 bit temp;
82 1 P1 = 0xff; //输入前置1
83 1 RS = 0; //指令
84 1 RW = 1; //读模式
85 1 do
86 1 {
87 2 E = 1; //使能
88 2 temp = BUSY;
89 2 E = 0;
90 2 }
91 1 while(temp);//等待不忙
92 1 }
93
94
95 //************************************************************************************
96 //*函数名称:void Parallel_Write_LCD( bit b_Data_Command , unsigned char uc_Content ) *
97 //*函数功能:并行模式向LCD发送数据或指令 *
98 //*形式参数:bit b_Data_Command , unsigned char uc_Content *
99 //*形参说明:数据或指令的标志位,指令或数据的内容 *
100 //*返回参数:无 *
101 //*使用说明:无 *
102 //************************************************************************************
103 void Parallel_Write_LCD( bit b_Data_Command , unsigned char uc_Content )
104 {
105 1 Parallel_Check_Busy();
106 1 if(b_Data_Command)
107 1 {
108 2 RS = 1; //数据
109 2 RW = 0; //写模式
110 2 }
111 1 else
112 1 {
113 2 RS = 0; //指令
114 2 RW = 0; //写模式
115 2 }
116 1 P1=uc_Content;//数据放到P1口上
117 1 E = 1;
C51 COMPILER V8.02 LCM 06/09/2007 19:54:48 PAGE 3
118 1 _nop_();//很重要
119 1 _nop_();
120 1 _nop_();
121 1 E = 0;
122 1 }
123
124
125 //********************************************
126 //*函数名称:uc_Parallel_Read_LCD_Data *
127 //*函数功能:并行读LCD数据 *
128 //*形式参数:无 *
129 //*形参说明:无 *
130 //*返回参数:读回的数据 *
131 //*使用说明:无 *
132 //********************************************
133 uchar uc_Parallel_Read_LCD_Data(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -