📄 ynxfdo.c
字号:
//#include <AT89X52.H>
#include <reg51.h>
unsigned char code DAT[11]={0xfd,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0x00};
unsigned char code DIG[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
/* led"=",0x5b"[",0x25"% 空秤"0x24重秤"$"0x23有卡"#"};*/
void delay(int ) ;
sbit SCL=P2^4;
sbit SDA=P2^5;
sbit SE=P1^0; //4寸数码管
sbit SCK=P1^1;
sbit RCK=P1^2;
sbit SE1=P1^4; //汉字屏
sbit SCK1=P1^5;
sbit RCK1=P1^6;
sbit LED=P1^3; //指示灯
sbit DOT=P1^7; //冒号
sbit KEY=P2^7; //键盘
sbit IRB=P2^6; //红外
sbit GREEN=P2^3;//绿灯
sbit RED=P2^2;//红灯
sbit UP=P2^0;//升栏杆机
sbit DOWN=P2^1;//降栏杆机
unsigned char str1[16]={0x00};
unsigned char str2[16];
unsigned char str3[16];
unsigned char str4[16];
unsigned char str5[16];
unsigned char str6[16];
unsigned char str7[16];
unsigned char idata str8[16];
int tj_bytes;
//unsigned char g_232,hz,g_232_led,led,zt;
//bit hz;
void out_disp_8(unsigned char);
void out_disp_led(unsigned char);
unsigned char led_8(char);
void init_rs232();
void tx_char( char );
unsigned char rx_char();
//unsigned char s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,
// s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63;
void main()
{ unsigned char dat1,dat2,zt,i;
delay(5000);
//定时器设置
TH0=0xfb;
TL0=0x30;
IE=0x82;
TMOD=0x00;//
EA=1;
TR0=0;
init_rs232();
// ET1=1;
// ES=1;
// IP=0x10;
KEY =1;
GREEN =1;/*绿灯*/RED=0;/*红灯*/UP=1;/*栏杆机升*/DOWN=0;/*栏杆机降*/
P0=0x00;
out_disp_8(0x00);
out_disp_8(DAT[0]);
out_disp_8(DAT[0]);
out_disp_8(DAT[0]);
out_disp_8(DAT[0]);
out_disp_8(DAT[0]);
out_disp_8(DAT[0]);
out_disp_8(DAT[0]);
out_disp_8(DAT[0]);
RCK=0;RCK=1;
while (1){ dat1=rx_char();
if (dat1==0x23) zt=1;
if((dat1==0x25) && (zt==1) && (IRB==1))/*空秤*/ {GREEN=1;/*绿灯*/RED=0;/*红灯*/UP=1;/*栏杆机升*/DOWN=0;/*栏杆机降*/zt=2;}
if((dat1==0x24) && (GREEN==1) && (zt==2) && (IRB==0)) {UP=0;/*栏杆机升*/DOWN=1;/*栏杆机降*/GREEN=0;/*绿灯*/RED=1; zt=1; } /*重秤*/
if(dat1==0x3d){
dat2=rx_char();
// tx_char(dat1);
if(dat2==0x30)
{out_disp_8(0x00);}/*灭*/
else
{ out_disp_8(led_8(dat2));}
for(i=0;i<8;i++){ dat2=rx_char(); out_disp_8(led_8(dat2));}
RCK=0; RCK=1;
}
if (dat1==0x5b)
{ TR0=0;
for (i=0;i<16;i++){dat2=rx_char(); str1[i]=dat2;}
for (i=0;i<16;i++){dat2=rx_char(); str2[i]=dat2;}
for (i=0;i<16;i++){dat2=rx_char(); str3[i]=dat2;}
for (i=0;i<16;i++){dat2=rx_char(); str4[i]=dat2;}
for (i=0;i<16;i++){dat2=rx_char(); str5[i]=dat2;}
for (i=0;i<16;i++){dat2=rx_char(); str6[i]=dat2;}
for (i=0;i<16;i++){dat2=rx_char(); str7[i]=dat2;}
for (i=0;i<16;i++){dat2=rx_char(); str8[i]=dat2;}
TR0=1;
tx_char(0x30);
}
LED=~LED; delay(100);}
}
void init_rs232()
{ /*PCON=0x80; 波特率加倍 */
//PCON&=0xef; // 波特率不加倍
SCON=0x50;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
TI=1;
}
unsigned char rx_char()
{
while(1)
if((SCON & 0x01)==0x01) break;
RI=0;
return SBUF;
}
void tx_char( char c)
{
while(1)
if((SCON & 0x02)==0x02) break;
TI=0;
SBUF=c;
}
void delay(int t) {
int i;
for (i=0;i<t;i++) ;
}
void out_disp_8(unsigned char dd) {
unsigned char i,k;
for (i=0;i<8;i++) { k=dd & 0x01;SE=k;SCK=1;dd=dd>>1;SCK=0; }
}
void out_disp_led(unsigned char dd) {
unsigned char i,k;
for (i=0;i<8;i++) { k=dd & 0x80;SE1=k;SCK1=1;dd=dd<<1;SCK1=0; }
}
unsigned char led_8( char dd){
unsigned char i;
i=0;
while(1) {if(dd==DIG[i]) break;
i++;if(i>9) break;}
if(i>9) return(DAT[0]);
return DAT[i];}
void timer0(void) interrupt 1 {
TH0=0xfb;
TL0=0x30;
out_disp_led(~str8[tj_bytes]);
out_disp_led(~str7[tj_bytes]);
out_disp_led(~str6[tj_bytes]);
out_disp_led(~str5[tj_bytes]);
out_disp_led(~str4[tj_bytes]);
out_disp_led(~str3[tj_bytes]);
out_disp_led(~str2[tj_bytes]);
out_disp_led(~str1[tj_bytes]);
RCK1=0;RCK1=1;
P0=tj_bytes;
tj_bytes ++;
if(tj_bytes>15) tj_bytes=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -