📄 jh.c
字号:
//********************************************************************
//叫号系统窗口屏
//********************************************************************
#include<reg51.h>
#include<stdio.h>
#include<absacc.h>
#include <intrins.h>
#include<string.h>
#include<bao.h>
//脉冲
void pulse()
{
// P2=0xa0;
P2=0x00; //采用138时脉冲
P2=0xa0;
}
void y6()
{
P2=0xc0;
P2=0x00;
}
//清屏过程
void cscr()
{
P2=0x00;//高选通
P1=0x40;//关屏
pulse();
}
//开屏过程
void oscr()
{
// oe=0;
//pk=0;
P1=0x0f&P1;
pulse();
}
void num(uchar k)
{
P1=k;
//sck
}
//显示红字
void row_r()
{
//uchar bb;
//if (Type==0x00)
{
or1=~d7;
og1=1;
pk=0;
pk=1;
or1=~d6;
pk=0;
pk=1;
or1=~d5;
pk=0;
pk=1;
or1=~d4;
pk=0;
pk=1;
or1=~d3;
pk=0;
pk=1;
or1=~d2;
pk=0;
pk=1;
or1=~d1;
pk=0;
pk=1;
or1=~d0;
pk=0;
pk=1;
}
}
void init()
{
IE=0x90;
TMOD=0x20; //33M/0xEE;
TH1=0xfa;//0xfd;//-11.0592//0xf4;//-22.1184//////////////9600
TR1=1;
SCON=0xf0;//SM2=0//全部接收//0x50;
EA=1;
ES=1;
Flag=0;
P1=0x00;//InceptScr/44;
y6();
Address1=Address2=MainAdd1=MainAdd2=Answer=CodeH=CodeL=Windows=Team=0x00;
}
void receive(void) interrupt 4 using 3
{
uchar i,k,TempData;
uint Addr,Code;
RI=0;
TempData=SBUF;//接收第一个字节
if (TempData>0x7f && TempData<0xf0)//地址数据位
{
Address1=TempData;
k=Address1-0x7f;
if (k==MyAddress)
{
cscr();
ES=0;
SM2=0;
RI=0;
{
Address2=_getkey();//地址第二字节
MainAdd1=_getkey();//主机高
MainAdd2=_getkey();//主机低
Answer=_getkey();//应答信号
CodeH=_getkey();//号码高
CodeL=_getkey();//号码低
Windows=_getkey();//窗口号
Team=_getkey();//队列号
Flag=1;
SM2=1;
}
}
else
{
return;
}
}
else
{
return;
}
//处理接收到的数据
{
/*Addr=(CodeH/0x10+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][2]=CBYTE[0xe800+Addr+i];
}
Addr=(CodeH%0x10+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][3]=CBYTE[0xe800+Addr+i];
}
Addr=(CodeL/0x10+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][4]=CBYTE[0xe800+Addr+i];
}
Addr=(CodeL%0x10+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][5]=CBYTE[0xe800+Addr+i];
} */
Code=CodeH*256+CodeL;
Addr=(Code/10000+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][3]=CBYTE[0xe800+Addr+i];
}
Addr=(((Code%10000)/1000)+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][4]=CBYTE[0xe800+Addr+i];
}
Addr=((Code%1000)/100+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][5]=CBYTE[0xe800+Addr+i];
}
Addr=((Code%100)/10+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][6]=CBYTE[0xe800+Addr+i];
}
Addr=(Code%10+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][7]=CBYTE[0xe800+Addr+i];
}
}
ES=1;
}
void FlashShow()
{
uchar i,j,k;
uint m;
for (k=0;k<5;k++)
{
for (m=0;m<50;m++)
{
for (i=0;i<16;i++)
{
for (j=0;j<Width*2;j++)
{
bd=Buffer[i][j];
row_r();
}
cscr();
latch=0;
latch=1;
num(i);
oscr();
}
}
for (m=0;m<50;m++)
{
for (i=0;i<16;i++)
{
for (j=0;j<Width*2;j++)
{
bd=~Buffer[i][j];
row_r();
}
cscr();
latch=0;
latch=1;
num(i);
oscr();
}
}
}
}
void StaticShow()
{
uchar i,j;
uint m;
for (m=0;m<50;m++)
{
for (i=0;i<16;i++)
{
for (j=0;j<Width*2;j++)
{
bd=Buffer[i+16][j];
row_r();
}
cscr();
latch=0;
latch=1;
num(i);
oscr();
}
}
}
void RollShow()
{
uchar i,j,m,n,h,l;
for (m=0;m<16;m++)
{
h=31-m;
l=15-m;
for (n=0;n<5;n++)
{
for (i=16;i<32;i++)
{
for (j=0;j<Width*2;j++)
{
bd=Buffer[i-m][j];
row_r();
}
cscr();
latch=0;
latch=1;
num(i);
oscr();
}
}
for (j=0;j<Width*2;j++)
{
Buffer[h][j]=Buffer[l][j];
}
}
}
void main()
{
uint i;
init();
mm: if (Flag==1)
{
Flag=0;
RollShow();
FlashShow();
}
while(1)
{
for (i=0;i<200;i++)
{
StaticShow();
if (Flag==1)
{
goto mm;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -