📄 yh_t3_new.lst
字号:
--
148 //以下是HT1621模块的定义和声明
149 #define BIAS_COM 0x29//0X52 //LCD 1/3偏压(bias) , 4公共口(com)。
150 //#define RC256 0x18//0X30 //System clock source选择on-chip RC oscillator(256k)
151 //这条指令可以不要,因为1621上电默认的就是选择片内的RC256振荡器
152 #define SYSTEN 0x01//0X02 //Turn on system oscillator(打开系统的振荡器)
153 #define SYSDIS 0x00//0X00 //Turn off both system oscillator and LCD bias generator
-(全关)
154 #define LCDON 0x03//0X06 //Turn on LCD
155 #define LCDOFF 0x02 //关闭LCD
156 #define BUZON 0x09//打开蜂鸣器
157 #define BUZOFF 0x08//关闭声音
158 #define F_2K 0x60//声音频率为2K
159 #define F_4K 0x40//声音频率为4K
160 uchar code ID_CMD=0x04;
161 uchar code ID_WR=0x05;
162 void wr_id(uchar id);
163 void wr_addr(uchar addr);
164 void wr_byte_1621(uchar dat_or_cmd);
165 void cmd_1621(uchar cmd);
166 void reset_1621(void);
167 void off_on_lcd(void);
168 void display_1621(void);
169 void alarm(uint time);
170 void delay_nms(uint n);
171 void delay_nus(char n);
172 //以上是HT1621的字型编码表,包括0-9,A、C、E、F、全部不显示、全部显示。
173 //uchar code discode[16]={0xbe,0x06,0x7c,0x5e,0xc6,0xda,0xfa,0x0e,0xfe,0xde,0xee,0xb8,0xf8,0xe8,0x00,0xff}
-;
174 uchar code discode_num[10]={0xbe,0x06,0x7c,0x5e,0xc6,0xda,0xfa,0x0e,0xfe,0xde};
175 //以下是26个大写字母对应的HT1621的编码,为了方便查询,数组定义为27个字节,其中,首字节为特殊符号“=”的编
-码。
C51 COMPILER V7.50 YH_T3_NEW 04/28/2007 10:16:51 PAGE 4
176 //以下是26个字母在数组中对应的下标。
177 //A-1,B-2,C-3,D-4,E-5,F-6,G-7,H-8,I-9,J-10,K-11,L-12,M-13,N-14;
178 //O-15,P-16,Q-17,R-18,S-19,T-20,U-21,V-22,W-23,X-23,Y-25,Z-26;
179 uchar code discode_cap[27]={0x50,0xee,0x00,0xb8,0x00,0xf8,0xe8,0x00,0xe6,0x00,0x00,0x00,0xb0,0x00,0x00,0xb
-e,0xec,0x00,0x00,0xda,0x00,0xb6,0x00,0x00,0x00,0x00,0x00};
180 uchar code discode_low[27]={0x50,0x00,0xf2,0x70,0x76,0x00,0x00,0xde,0xe2,0x00,0x00,0x00,0x00,0x00,0x62,0x7
-2,0xec,0xce,0x60,0x00,0xf0,0x32,0x00,0x00,0x00,0xd6,0x00};
181 //定义一个HT1621显示数据缓冲区,初始化全部为0x00。
182 uchar dis_zone[6]={0x00,0x00,0x00,0x00,0x00,0x00};
183 sbit dt_1621=P2^4; //LCD显示的数据。
184 sbit cs_1621=P2^5; //使能。
185 sbit wr_1621=P2^6; //写信号。
186 sbit BL=P1^6;//背光引脚,为1,背光亮;
187 //为0,背光灭
188 //------------------------------------
189 //以下是CS5460的变量定义和函数声明
190 sbit reset_5460=P1^0;
191 sbit sdo_5460=P1^1;
192 sbit sclk_5460=P1^2;
193 sbit sdi_5460=P1^3;
194 void cmd_5460(uchar cmd);
195 ulong read_5460(void);
196 void write_5460(ulong dat);
197 ulong buf_5460;
198 //-----------------------------------
199 //以下是串口的函数声明
200 /*********************************
201 串口帧信息格式:一帧10位,
202 其中第1位:起始位“0”
203 第10位:停止位“1”
204 中间8位:数据位
205 注意:一帧虽然在时序上有十位,包含起始位和停止位。
206 但是,向sbuf赋值的实际上只有中间的8位数据位。
207 ********************************/
208 /********************************
209 LCD显示的重量信息100.00Kg
210 串口发送的数据:”00.001 “,注意:最后的空格表示正号。
211 LCD显示的重量信息-35.000Kg
212 串口发送的数据:”000.53-“,注意:最后的"-"表示负号。
213 包含小数点和符号,共7位数据。并且二者的顺序恰好相反
214 另外:重量数字中高位为零不显示的情况,传送时按0发送
215 凑够位数。
216
217
218
219 *******************************/
220 void send_byte(uchar txd);
221 /******************************
222 //常用的ASCII码: 0 :48
223 =:61
224 . :46
225 -:45
226 g :103
227 K :75
228 空格” “:32
229 ******************************/
230 //------------------------------------
231 //以下是定时器(计数器)的管脚定义和函数声明
232 /************************************
233 为了实现延时5分钟, T0作为16位定时器
234 T1作为16位计数器
235 ************************************/
C51 COMPILER V7.50 YH_T3_NEW 04/28/2007 10:16:51 PAGE 5
236 sbit CLK_COUNTER0=P3^4;
237 void delay_5min(void);
238
239 //------------------------------------
240 //以下是AT24c02的相关变量和函数
241 uchar code READ=0xa1; // 器件地址以及读取操作
242 uchar code WRITE=0xa0; // 器件地址以及写入操作
243 sbit SDA=P2^1; // IIC数据
244 sbit SCL=P2^2; // IIC时钟
245 void start(void);
246 void stop(void);
247 void ack(void);
248 void not_ack(void);
249 void write(uchar data_wr);
250 //void wr_byte(uchar addr_sla,uchar addr_wr,uchar data_byte);
251 void wr_nbyte(uchar addr,void *p_arr,uchar n);
252 //void wr_page(uchar addr_wr);
253 uchar rd_cur(void);
254 void rd_seq(uchar addr_rd,void *p_bufrd,uchar n);
255 //ulong rd_long(uchar addr_rd);
256 ulong idata buf_24c02_AD[2];
257 /*****************************
258 数组buf_24c02_rd[]中相应位置的数据含义:
259 0——分度值
260 1——小数点位置
261 2——波特率
262 3——背光
263 *****************************/
264 uchar idata buf_24c02_4B[4];//用来存储从24c02中读取的数据,
265 //随后就用来存储将要向24c02中写入的数据
266 //目的:1.在菜单状态下,显示当前的设定
267 //2.在称重状态下,获取设定信息
268 // 用于显示和计算。
269 //下面数组的用途:
270 //第一个:量程;第二个:校准砝码的重量
271 ulong idata buf_24c02_2L[2];
272 //--------------------------------------------
273 //电池电压检测部分的变量定义和函数声明。
274 sbit PD=P1^5;
275 void alarm_low(void);
276
277
278 //--------------------------------------------
279
280 //下面的数据是针对3公斤传感器(1.5Kg校准,没有偏置校准)
281 //电流通道增益PGA=50
282 //这种情况下,AD值太大,因此将从5460读出的数据
283 //在原来的基础上缩小为原来的1/4
284 //校准的AD平均值增量是:76477
285 #define N_5460 500 //表示5460的转换周期
286 //注意:下述带参数的宏定义中的x表示量程的AD平均值增量
287 #define ZERO_POS(x) ((x)/5) //表示零点范围上限:+20%
288 //#define ZERO_NEG(x) ((-1)*((x)/25)) //表示零点范围下限:-4%,这两个百分比都是以校准的AD平均值增量为分
-母的。
289 #define ZERO_NEG(x) (((-x)/25)) //表示零点范围下限:-4%,这两个百分比都是以校准的AD平均值增量为分母的。
290 #define MANU_ZERO_POS(x) ((x)/50) //表示手动归零范围上限:+2%
291 //#define MANU_ZERO_NEG(x) ((-1)*((x)/50)) //表示手动归零范围下限:-2%,这两个百分比都是以校准的AD平均值
-增量为分母的。
292 #define MANU_ZERO_NEG(x) ((-x)/50) //表示手动归零范围下限:-2%,这两个百分比都是以校准的AD平均值增量为分
-母的。
293 #define AUTO_ZERO_POS(x) ((x)/200) //表示自动归零范围上限:+0.5%
294 //#define AUTO_ZERO_NEG(x) ((-1)*((x)/200)) //表示自动归零范围下限:-0.5%,这两个百分比都是以校准的AD平
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -