?? 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 + -