📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 01/03/2009 21:23:34 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 BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst) OBJECT(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
55 }_KEY;
C51 COMPILER V7.50 MAIN 01/03/2009 21:23:34 PAGE 2
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; //设定压力
114 unsigned char idata v_pag11_=90; //设定压力
C51 COMPILER V7.50 MAIN 01/03/2009 21:23:34 PAGE 3
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 extern void OffSet__moto( unsigned long Step_,unsigned char Direct);
136 extern unsigned long _Step;
137 extern unsigned long old_Step;
138 void main (void)
139 {
140 1 lcdInit ();
141 1 F_pag0();//lcd显示
142 1 tim0_initial();//初始化定时器
143 1 Set__moto (0,1);///void Set__moto( unsigned long Step,unsigned char Direct){
144 1
145 1 IIC_RdFromROM(0xa0,rddata,0x00,0x00,12); //读取24Cxxx内容,
146 1
147 1 F_YB_();
148 1 if((rddata[0]!=0)&&(rddata[0]!=255))v_pag10_=rddata[0];
149 1 if((rddata[1]!=0)&&(rddata[1]!=255))v_pag11_=rddata[1];
150 1
151 1 if((rddata[2]!=0)&&(rddata[2]!=255))v_pag20_=rddata[2];
152 1 if((rddata[3]!=0)&&(rddata[3]!=255))v_pag21_=rddata[3];
153 1 if((rddata[4]!=0)&&(rddata[4]!=255))v_pag22_=rddata[4];
154 1 if((rddata[5]!=0)&&(rddata[5]!=255))v_pag23_=rddata[5];
155 1
156 1 if((rddata[6]!=0)&&(rddata[6]!=255))v_pag30_=rddata[6];
157 1 if((rddata[7]!=0)&&(rddata[7]!=255))v_pag31_=rddata[7];
158 1 if((rddata[8]!=0)&&(rddata[8]!=255))v_pag32_=rddata[8];
159 1 if((rddata[9]!=0)&&(rddata[9]!=255))v_pag33_=rddata[9];
160 1
161 1 if((rddata[10]!=0)&&(rddata[10]!=255))v_pag40_=rddata[10];
162 1 if((rddata[11]!=0)&&(rddata[11]!=255))v_pag41_=rddata[11];
163 1
164 1 while(1)//循环
165 1 {
166 2 _key = scan_key();
167 2
168 2 switch(_key)
169 2 {
170 3 case _MODE_ : //按键"MODE"
171 3 if(S_==0x00){S_=0x10;}//Enter
172 3 else {
173 4 wtdata[0]=v_pag10_;
174 4 wtdata[1]=v_pag11_;
175 4
176 4 wtdata[2]=v_pag20_;
C51 COMPILER V7.50 MAIN 01/03/2009 21:23:34 PAGE 4
177 4 wtdata[3]=v_pag21_;
178 4 wtdata[4]=v_pag22_;
179 4 wtdata[5]=v_pag23_;
180 4
181 4 wtdata[6]=v_pag30_;
182 4 wtdata[7]=v_pag31_;
183 4 wtdata[8]=v_pag32_;
184 4 wtdata[9]=v_pag33_;
185 4
186 4 wtdata[10]=v_pag40_;
187 4 wtdata[11]=v_pag41_;
188 4 IIC_WrToROM(0xa0,wtdata,0x00,0x00,12);/*保存数据*/
189 4 S_=0x00;}//End v_pag10_++;
190 3 break;
191 3 case _ADD_ : //按键"+"
192 3 if(S_==1) { if( ++v_pag10_>99)v_pag10_=0; }
193 3 else if(S_==2){ if( ++v_pag11_>99)v_pag11_=0; }
194 3 else if(S_==3){ if( ++v_pag20_>99)v_pag20_=0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -