📄 lcd_menu.lst
字号:
C51 COMPILER V8.05a LCD_MENU 08/15/2007 11:05:06 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE LCD_MENU
OBJECT MODULE PLACED IN LCD_MENU.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE LCD_MENU.C DEBUG OBJECTEXTEND
line level source
1 #include <REG51.h>
2 #include<math.h>
3 #include<INTRINS.H>
4
5 #define Uchar unsigned char
6 #define Uint unsigned int
7 /***********液晶显示器接口引脚定义***************/
8 sbit Elcm= P1^0;
9 sbit Rwlcm= P1^1;
10 sbit Dilcm= P1^2;
11 sbit CS2LCM= P1^3;
12 sbit CS1LCM= P1^4;//
13 /*这个连接只是做实验的临时接法。*/
14 sfr Datalcm=0xA0;//p2 yin jiao
15 #define KEYP ((P3>>4)&0X0F)
16
17 #define UP 1
18 #define DOWN 2
19 #define ENTER 4
20 #define BACK 8 //特殊按键的编码号
21
22 #define AD 1
23 #define KEY 2 //数据数组排列安排
24
25 #define LCDMS 0
26 #define LCDMB 40
27 //菜单边界
28 #define LCDDS 45 //数据起点
29 #define LCDDB 85 //数据显示边界
30 #define LCDUS 90 //单位显示起始
31 #define LCDPS 120 //小数点位置
32
33 /******************数组列表*********************/
34 Uchar code Ezk[]; /*ASCII常规字符点阵码表 */
35 Uchar code Hzk[]; /*自用汉字点阵码表 */
36 /********************************/
37 //定义字符串数组 */
38 /********************************/
39 Uchar code MENU[7][5]={"MENU ","ADOUT","KEY ","menu3","menu4","menu5","menu6"};
40 Uchar code MENU_MAIN1[]={0X80,0X81};
41 Uchar code MENU_MAIN2[]={0X82,0X83};
42 Uchar code MENU_MAIN3[]={0X84,0X85};
43 Uchar code UNIT[7][3]={" "," MV"," ","mv2","mv3","mv4","mv5",};
44 Uchar code SIGN[1]='*';
45 Uchar DISDATA[7][5]={"12345"};
46 unsigned int SHUJU[6]={12345,20000,30000,40000,50000,60000};
47 //Uchar disdata1[7]="12345";
48 //Uchar disad[7];
49 Uchar adbuff[2];
50 Uchar LINE=0;
51
52
53 #include "ziku.h"
54 #include "lcddir.h"
55 #include "tupian.h"
C51 COMPILER V8.05a LCD_MENU 08/15/2007 11:05:06 PAGE 2
56 void Dismenu(void);
57 void int2str(char *ss,int ii);
58 void uartcsh();
59
60 void Delay1s(void)
61 {
62 1 unsigned char h,i,j,k;
63 1 for(h=5;h>0;h--)
64 1 for(i=4;i>0;i--)
65 1 for(j=116;j>0;j--)
66 1 for(k=214;k>0;k--);
67 1 }
68
69
70 void int2str(char *ss,int ii)
71
72 {
73 1 ss[4]=ii%10+48;
74 1 ss[3]=(ii/10)%10+48;
75 1 ss[2]=(ii/100)%10+48;
76 1 //ss[2]='.';
77 1 ss[1]=(ii/1000)%10+48;
78 1 ss[0]=(ii/10000)%10+48;
79 1 }
80
81 //初始化串行口
82 void uartcsh()//buad 1200
83 {
84 1 SM0=0;
85 1 SM1=1;
86 1 REN=1;
87 1 TI=0;
88 1 RI=0;
89 1 PCON=0;
90 1 TH1=0x9c;
91 1 TL1=0X9c;
92 1 TMOD=0X20;
93 1 EA=1;
94 1 ET1=0;
95 1 ES=1;
96 1 TR1=1;
97 1 RI=0;
98 1 TI=0;
99 1 }
100
101
102
103
104
105
106 Uchar Getkey(void)
107 { Uchar temp9;
108 1 temp9=0;
109 1 temp9=KEYP;
110 1 if(temp9!=0)
111 1 { while(KEYP!=0);
112 2 return(temp9);
113 2 }
114 1 else return(0);
115 1 }
116
117
C51 COMPILER V8.05a LCD_MENU 08/15/2007 11:05:06 PAGE 3
118
119 void Keyfun(void)
120 { Uchar temp8;
121 1 temp8=Getkey();
122 1 switch(temp8)
123 1 {case UP :
124 2 LINE++;
125 2 if(LINE>3) LINE=0;
126 2 Dismenu();break;
127 2 case DOWN:
128 2 if(LINE<1) LINE=3;
129 2 LINE--;
130 2 Dismenu();break;
131 2 default:_nop_();
132 2 }
133 1
134 1 }
135
136 void Dismenu(void)
137 {
138 1 Display(0,LCDMS+5,MENU_MAIN1,2);
139 1 Display(0,LCDDS+5,MENU_MAIN2,2);
140 1 Display(0,LCDUS+5,MENU_MAIN3,2);
141 1 Display(2,LCDMS,MENU[LINE+1],5);
142 1 Display(4,LCDMS,MENU[LINE+2],5);
143 1 Display(6,LCDMS,MENU[LINE+3],5);
144 1 Display(2,LCDUS,UNIT[LINE+1],3);
145 1 Display(4,LCDUS,UNIT[LINE+2],3);
146 1 Display(6,LCDUS,UNIT[LINE+3],3);
147 1 Display(4,LCDPS,SIGN,1);
148 1
149 1
150 1 }
151 /********************************/
152 /* 演示主程序 */
153 /********************************/
154
155 void main(void)
156
157 {
158 1 int temp_ad;
159 1
160 1 col=0;
161 1 row=0;
162 1 Delay(40); /*延时大约40Ms,等待外设准备好 */
163 1 Lcminit();/*液晶模块初始化,包括全屏幕清屏*/
164 1 uartcsh();
165 1
166 1 col=0;
167 1 row=0;
168 1 for(row=0;row<8;row++)
169 1 for(col=0;col<LCMLIMIT;col++)
170 1 { Wrdata(nBitmapDot[row*128+col]);}
171 1 while(Getkey()==0);
172 1 Lcminit();
173 1 int2str(DISDATA[0],SHUJU[AD]);
174 1 Display(6,LCDDS,DISDATA[0],5);
175 1 temp_ad=adbuff[1];
176 1 SHUJU[AD]=(temp_ad<<7)+adbuff[0];
177 1 int2str(DISDATA[AD],SHUJU[AD]);
178 1 Display(2,LCDDS,DISDATA[AD],5);
179 1
C51 COMPILER V8.05a LCD_MENU 08/15/2007 11:05:06 PAGE 4
180 1 int2str(DISDATA[KEY],SHUJU[KEY]);
181 1 Display(4,LCDDS,DISDATA[KEY],5);
182 1 Dismenu();
183 1
184 1 while(1)
185 1 {
186 2 Keyfun();
187 2
188 2 }
189 1
190 1
191 1 }
192
193
194 void getadshuju() interrupt 4
195 {
196 1 char temp;
197 1 temp=SBUF;
198 1 if(temp&0x80)
199 1 adbuff[1]=(temp&0x7f);
200 1 else
201 1 adbuff[0]=temp;
202 1 P0=temp;
203 1 RI=0;
204 1 TI=0;
205 1 ES=1;}
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1789 ----
CONSTANT SIZE = 2799 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 53 50
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 + -