📄 lcm.lst
字号:
C51 COMPILER V8.02 LCM 04/06/2008 20:10:28 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCM
OBJECT MODULE PLACED IN LCM.OBJ
COMPILER INVOKED BY: C:\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 //扩展指令集预定义
46 #define AWAIT_MODE 0x01 //待命模式
47 #define ROLLADDRESS_ON 0x03 //允许输入垂直卷动地址
48 #define IRAMADDRESS_ON 0x02 //允许输入IRAM地址
49 #define SLEEP_MODE 0x08 //进入睡眠模式
50 #define NO_SLEEP_MODE 0x0c //脱离睡眠模式
51 #define GRAPH_ON 0x36 //打开绘图模式
52 #define GRAPH_OFF 0x34 //关闭绘图模式
53
54
55 //并行位定义
C51 COMPILER V8.02 LCM 04/06/2008 20:10:28 PAGE 2
56 sbit RS=P1^4;
57 sbit RW=P1^5;
58 sbit E= P1^6;
59
60 sbit BUSY=P2^7;
61
62 //控制位定义
63 sbit PSB = P1^7; //串并选择信号
64 sbit RST = P3^0; //复位信号
65
66
67 uchar code Tab1[]="扫频仪"; //显示在第一行
68 uchar code Tab2[]="起始频率: 3KHz";//显示在第二行
69 uchar code Tab3[]="终止频率: 7KHz";//显示在第三行
70 uchar code Tab4[]="扫描时间: 4s";//显示在第四行
71 uchar code Tab5[]={0x54,0xf4};
72
73 //*******************************************
74 //*函数名称:void Parallel_Check_Busy(void) *
75 //*函数功能:并行方式查忙 *
76 //*形式参数:无 *
77 //*形参说明:无 *
78 //*返回参数:无 *
79 //*使用说明:无 *
80 //*******************************************
81 void Parallel_Check_Busy(void)
82 {
83 1 bit temp;
84 1 P2 = 0xff; //输入前置1
85 1 RS = 0; //指令
86 1 RW = 1; //读模式
87 1 do
88 1 {
89 2 E = 1; //使能
90 2 temp = BUSY;
91 2 E = 0;
92 2 }
93 1 while(temp);//等待不忙
94 1 }
95
96
97 //************************************************************************************
98 //*函数名称:void Parallel_Write_LCD( bit b_Data_Command , unsigned char uc_Content ) *
99 //*函数功能:并行模式向LCD发送数据或指令 *
100 //*形式参数:bit b_Data_Command , unsigned char uc_Content *
101 //*形参说明:数据或指令的标志位,指令或数据的内容 *
102 //*返回参数:无 *
103 //*使用说明:无 *
104 //************************************************************************************
105 void Parallel_Write_LCD( bit b_Data_Command , unsigned char uc_Content )
106 {
107 1 Parallel_Check_Busy();
108 1 if(b_Data_Command)
109 1 {
110 2 RS = 1; //数据
111 2 RW = 0; //写模式
112 2 }
113 1 else
114 1 {
115 2 RS = 0; //指令
116 2 RW = 0; //写模式
117 2 }
C51 COMPILER V8.02 LCM 04/06/2008 20:10:28 PAGE 3
118 1 P2=uc_Content;//数据放到P1口上
119 1 E = 1;
120 1 _nop_();//很重要
121 1 _nop_();
122 1 _nop_();
123 1 E = 0;
124 1 }
125
126
127 //********************************************
128 //*函数名称:uc_Parallel_Read_LCD_Data *
129 //*函数功能:并行读LCD数据 *
130 //*形式参数:无 *
131 //*形参说明:无 *
132 //*返回参数:读回的数据 *
133 //*使用说明:无 *
134 //********************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -