📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 01/03/2009 19:40:11 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SRC\main.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst) OB
-JECT(main.obj)
line level source
1 //***********************************************************
2 //*标题:自制板实验 - ZZ004_12864LCD(带汉字库)程序优化
3 //*硬件:自制板
4 //*文件:ZZ004.c
5 //*日期:2005-12-29
6 //*版本:1.0
7 //*作者:lluct
8 //*邮箱:lluct@hotmail.com
9 //*********************************************************
10 //*描述:
11 //* 显示画面和汉字
12 //*
13 //*********************************************************
14 //*【版权】 lluct, GPL
15 //*【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!
16 //*********************************************************
17 #include "p89v51rx2.h"
18 #include <intrins.h>
19
20
21
22
23 //-----------------------------------------------
24 sbit KEYADD = P1^7; //按键"+"
25 #define _ADD_ 0x0080
26 sbit KEYRIGHT = P1^6; //按键"右"
27 #define _RIGHT_ 0x0040
28 sbit KEYLEFT = P1^5; //按键"左"
29 #define _LEFT_ 0x0020
30 sbit KEYDOWN = P1^4; //按键"下"
31 #define _DOWN_ 0x0010
32 sbit KEYUP = P1^3; //按键"上"
33 #define _UP_ 0x0008
34 sbit KEYMODE = P1^2; //按键"MODE"
35 #define _MODE_ 0x0004
36 sbit KEYYB = P1^1; //按键"预备"
37 #define _YB_ 0x0002
38 sbit KEYONOFF = P1^0; //按键"开/关"
39 #define _ONOFF_ 0x0001
40
41
42 sbit START = P2^2; //电机平台"启/停"控制
43 #define _START_ 0x0400
44 sbit KEYMINUS = P2^0; //按键"-"
45 #define _MINUS_ 0x0100
46
47 sbit LS = P2^1; //限位控制
48 #define _LS_ 0x0200
49
50 sbit Pluse = P2^4; //电机脉冲
51 sbit Direction = P2^5; //电机方向
52 typedef union tt{
53 unsigned int u16;
54 unsigned char u8[2];//u8[0] is H
C51 COMPILER V7.50 MAIN 01/03/2009 19:40:11 PAGE 2
55 }_KEY;
56 _KEY key_new, key_old;
57
58
59 extern void IIC_RdFromROM(unsigned char ad_main,unsigned char *rddata,unsigned char addh,unsigned char add
-l,unsigned char num);
60 extern void IIC_WrToROM(unsigned char ad_main,unsigned char *wrdata,unsigned char addh,unsigned char addl,
-unsigned char num);
61 extern void lcdInit (void);//初始化LCD子程序
62
63 extern void lcdClear (void);//清除LCD屏幕子程序
64
65 extern void lcdWriteCommand (unsigned char Command);//写入控制命令到LCD子程序//输入参数:控制命令
66
67
68 extern void lcdWriteData (unsigned char Data);//写入显示数据到LCD子程序//输入参数:显示数据
69
70
71 extern void checkLcdBusy (void);//检测LCD忙碌子程序
72
73 extern void displayPhoto (unsigned char *bmp);//全屏显示图形子程序//输入参数:图形数据
74
75
76 extern void wrPosition (void);//坐标写入子程序
77 extern void dispString (unsigned char X, Y, speed, unsigned char *msg);//显示字符串子程序//输入参数:X=行(0
--3), Y=列(0-7), speed=显示速度(毫秒), msg=字符数据
78
79 extern void delaySec (unsigned char sec);//延时(秒)子程序//输入参数:秒数
80 unsigned int scan_key(void);
81 extern serial_initial();
82 extern tim0_initial();
83 extern F_YB_();
84 extern void char_in_String_10(unsigned char _data, unsigned char y,signed char *msg,signed char sign);
85 void F_pag0 (void);
86 void F_pag1 (void);
87 void F_pag2 (void);
88 void F_pag3 (void);
89 void F_pag4 (void);
90 void F_pag5 (void);
91
92 //===============================================
93 unsigned int _key;
94 // "预备距离 49.8mm ";
95 unsigned char xdata sdyl[17] ="设定压力 N";
96 unsigned char xdata sdsj[17] ="设定时间 S";
97
98 unsigned char xdata ybsd[17] ="预备速度 mm";
99 unsigned char xdata sds2[17] ="设定压力 mm/S";
100 unsigned char xdata jysj[17] ="加压时间 S";
101 unsigned char xdata gzsj[17] ="工作时间 S";
102
103 unsigned char xdata jmsj[17] ="精磨时间 S";
104 unsigned char xdata jmyl[17] ="精磨压力 N";
105 unsigned char xdata sdsd[17] ="手动速度 mm/S";
106 unsigned char xdata wtsd[17] ="微调速度 mm/S";
107
108 unsigned char xdata wtjl[17] ="微调距离 mm";
109 unsigned char xdata ybjl[17] ="预备距离 mm";
110 unsigned char code kong[17] =" ";
111 unsigned char idata v_pag[3] =" ";
112 static unsigned char idata S_=0,S;
113 unsigned char idata v_pag10_=34; //设定压力
C51 COMPILER V7.50 MAIN 01/03/2009 19:40:11 PAGE 3
114 unsigned char idata v_pag11_=90; //设定压力
115
116 unsigned char idata v_pag20_=49; //预备速度
117 unsigned char idata v_pag21_=49;
118 unsigned char idata v_pag22_=30;
119 unsigned char idata v_pag23_=90;//工作时间
120
121 unsigned char idata v_pag30_=49;//精磨时间
122 unsigned char idata v_pag31_=49;
123 unsigned char idata v_pag32_=30;
124 unsigned char idata v_pag33_=90;//微调速度
125
126 unsigned char idata v_pag40_=90;//微调距离
127 unsigned char idata v_pag41_=90;//预备距离
128 unsigned char xdata wtdata[12];
129 unsigned char xdata rddata[12];
130 //一圈3mm
131 //一圈360度
132 //16个脉冲0.9度 6400个脉冲360度
133
134 extern void Set__moto( unsigned long Step_,unsigned char Direct);
135 /*
136 void F_00to50(void)
137 {//按键"预备" 按下;
138 //Set__moto (0x19,0);//到1*0x1900位置
139 Set__moto (10*0x1900,0);
140 }
141 void F_50to51(void)
142 {//按键"预备" 按下后;按键"开/关" 第一次按下;
143 Set__moto (21*0x1900,0);//开磨;到10*0x1900位置
144
145 }
146 void F_51to00(void)
147 {//按键"预备" 按下后;按键"开/关" 第二次按下;要执行的程序代码
148 Set__moto (0,1);//回到0位置
149
150 }*/
151 extern unsigned long _Step;
152 extern unsigned long old_Step;
153 void main (void)
154 {
155 1 lcdInit ();
156 1 F_pag0();//lcd显示
157 1 tim0_initial();//初始化定时器
158 1 Set__moto (0,1);///void Set__moto( unsigned long Step,unsigned char Direct){
159 1
160 1 IIC_RdFromROM(0xa0,rddata,0x00,0x00,12); //读取24Cxxx内容,
161 1
162 1 F_YB_();
163 1 if((rddata[0]!=0)&&(rddata[0]!=255))v_pag10_=rddata[0];
164 1 if((rddata[1]!=0)&&(rddata[1]!=255))v_pag11_=rddata[1];
165 1
166 1 if((rddata[2]!=0)&&(rddata[2]!=255))v_pag20_=rddata[2];
167 1 if((rddata[3]!=0)&&(rddata[3]!=255))v_pag21_=rddata[3];
168 1 if((rddata[4]!=0)&&(rddata[4]!=255))v_pag22_=rddata[4];
169 1 if((rddata[5]!=0)&&(rddata[5]!=255))v_pag23_=rddata[5];
170 1
171 1 if((rddata[6]!=0)&&(rddata[6]!=255))v_pag30_=rddata[6];
172 1 if((rddata[7]!=0)&&(rddata[7]!=255))v_pag31_=rddata[7];
173 1 if((rddata[8]!=0)&&(rddata[8]!=255))v_pag32_=rddata[8];
174 1 if((rddata[9]!=0)&&(rddata[9]!=255))v_pag33_=rddata[9];
175 1
C51 COMPILER V7.50 MAIN 01/03/2009 19:40:11 PAGE 4
176 1 if((rddata[10]!=0)&&(rddata[10]!=255))v_pag40_=rddata[10];
177 1 if((rddata[11]!=0)&&(rddata[11]!=255))v_pag41_=rddata[11];
178 1
179 1 while(1)//循环
180 1 {
181 2 _key = scan_key();
182 2
183 2 switch(_key)
184 2 {
185 3 case _MODE_ : //按键"MODE"
186 3 if(S_==0x00){S_=0x10;}//Enter
187 3 else {
188 4 wtdata[0]=v_pag10_;
189 4 wtdata[1]=v_pag11_;
190 4
191 4 wtdata[2]=v_pag20_;
192 4 wtdata[3]=v_pag21_;
193 4 wtdata[4]=v_pag22_;
194 4 wtdata[5]=v_pag23_;
195 4
196 4 wtdata[6]=v_pag30_;
197 4 wtdata[7]=v_pag31_;
198 4 wtdata[8]=v_pag32_;
199 4 wtdata[9]=v_pag33_;
200 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -