📄 按键12864显示.lst
字号:
C51 COMPILER V7.06 __键12864_允_ 06/14/2010 17:16:33 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE __键12864_允_
OBJECT MODULE PLACED IN .\obj\按键12864显示.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 按键12864显示.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\按键12864显示.lst) OB
-JECT(.\obj\按键12864显示.obj)
stmt level source
1 /*-----------------------------------------------
2 名称:按键测试单个菜单显示
3 论坛:www.doflye.net
4 编写:shifang
5 日期:2009.5
6 修改:无
7 内容:单个菜单,多页显示,不带子菜单
8 ------------------------------------------------*/
9 #include <reg52.h>
10 #include <intrins.h>
11 #include "delay.h"
12
13 sbit RS = P2^4;
14 sbit RW = P2^5;
15 sbit E = P2^6;
16 sbit RES = P2^3;
17 sbit PSB = P2^1;
18 sbit PAUSE = P3^0;
19
20 #define DataPort P0 //单片机 P0<------> 液晶DB0-DB7
21
22 sbit KEY_ADD=P3^3; //定义按键输入端口
23 sbit KEY_DEC=P3^4;
24
25 unsigned char curr,currold;//全局变量,当前箭头位置
26
27 unsigned char code user16x16[]={ //箭头图片
28 0x00,0x00,0x20,0x00,0x30,0x00,0x38,0x00,0x3C,0x00,0x3E,0x00,0x3F,0x00,0x3F,0x80,
29 0x3F,0xC0,0x3F,0x80,0x3F,0x00,0x3E,0x00,0x3C,0x00,0x38,0x00,0x30,0x00,0x20,0x00,
30
31 };
32 unsigned char code *MainMenu[]=
33 {
34 {" 1.设置1"},
35 {" 2.设置2"},
36 {" 3.设置3"},
37 {" 4.设置4"},
38 {" 5.设置5"},
39 {" 6.设置6"},
40 {" 7.设置7"},
41 {" 8.设置8"},
42 {" 9.设置9"},
43 {" 10. 设置10"},
44 };
45 /*------------------------------------------------
46 检测忙位
47 ------------------------------------------------*/
48 void Check_Busy()
49 {
50 1 RS=0;
51 1 RW=1;
52 1 E=1;
53 1 DataPort=0xff;
54 1 while((DataPort&0x80)==0x80);//忙则等待
C51 COMPILER V7.06 __键12864_允_ 06/14/2010 17:16:33 PAGE 2
55 1 E=0;
56 1 }
57 /*------------------------------------------------
58 写命令
59 ------------------------------------------------*/
60 void Write_Cmd(unsigned char Cmd)
61 {
62 1 Check_Busy();
63 1 RS=0;
64 1 RW=0;
65 1 E=1;
66 1 DataPort=Cmd;
67 1 DelayUs2x(5);
68 1 E=0;
69 1 DelayUs2x(5);
70 1 }
71 /*------------------------------------------------
72 写数据
73 ------------------------------------------------*/
74 void Write_Data(unsigned char Data)
75 {
76 1 Check_Busy();
77 1 RS=1;
78 1 RW=0;
79 1 E=1;
80 1 DataPort=Data;
81 1 DelayUs2x(5);
82 1 E=0;
83 1 DelayUs2x(5);
84 1 }
85 /*------------------------------------------------
86 液晶屏初始化
87 ------------------------------------------------*/
88 void Init_ST7920()
89 {
90 1 DelayMs(40); //大于40MS的延时程序
91 1 PSB=1; //设置为8BIT并口工作模式
92 1 DelayMs(1); //延时
93 1 RES=0; //复位
94 1 DelayMs(1); //延时
95 1 RES=1; //复位置高
96 1 DelayMs(10);
97 1 Write_Cmd(0x30); //选择基本指令集
98 1 DelayUs2x(50); //延时大于100us
99 1 Write_Cmd(0x30); //选择8bit数据流
100 1 DelayUs2x(20); //延时大于37us
101 1 Write_Cmd(0x0c); //开显示(无游标、不反白)
102 1 DelayUs2x(50); //延时大于100us
103 1 Write_Cmd(0x01); //清除显示,并且设定地址指针为00H
104 1 DelayMs(15); //延时大于10ms
105 1 Write_Cmd(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位,光标从右向左加1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -