|
制作出來的實物圖如下:
單片機源程序如下:
完整版請看附件接收端
#include<reg52.h>
#include"24L01.h"
#include"ziku.h"
#include"24c64.h"
extern uchar TxBuf[5];
extern uchar RxBuf[TX_PLOAD_WIDTH];
extern uchar sta;
extern uchar MAX_RT;//重發次數溢出中斷,寫1清除中斷,如果MAX_RT產生中斷,必須清楚后系統才能進行通
extern uchar RX_DR;//接收數據中斷,當收到有效數據后置1,寫1清除中斷
extern uchar TX_DS;//數據發送完成中斷,寫1清除中斷
uchar a;
uchar xdata xiancun1[96];
uchar xdata xiancun2[96];
uint num2;
uchar b; //接收中斷標志(中斷1)
uchar stop=1; //表示移動或者暫停移動標志位
uchar wide=4; //字體寬度標志
uchar speed=2; //字體移動速度
uchar up=50; //動態掃描上限
uchar down=0; //動態掃描下限
void yanshi(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=3;j>0;j--);
}
void main()
{
uchar i,j=0,k=0,num=6;
uchar cycle; //所轉的圈數標志
uchar c; //接收到的命令類型標志
uchar d=0; //不滾動顯示時,開始顯示漢字的位置
init_24L01(); //24L01init
AT24C64_init();
EA=1;
EX0=0;
EX1=1;
IT0=1;
IT1=1;
P0=0xff;
P1=0xff;
/* for(i=0;i<32;i++)
{
RxBuf=0xaa;
}
for(i=0;i<255;i++)
{
page_write(i*32,RxBuf);
delayms(5);
P0=~P0;
}
P0=0xff; */
for(i=0;i<32;i++)
{
RxBuf=dian;
}
for(i=0;i<5;i++)
{
TxBuf=0x55;
}
// RX_Mode();
TX_Mode(TxBuf);
Check_ACK(1);
delayms(1);
// sta = SPI_Read(STATUS); // 讀狀態寄存器
// SPI_RW_Reg(WRITE_REG + STATUS, sta|0x70); //清空狀態寄存器
for(i=0;i<6;i++)
{
sequential_read(32*i,16,xiancun1+16*i);
sequential_read(32*i+16,16,xiancun2+16*i);
}
while(1)
{
RX_Mode();
if(b)
{
EX0=0;
SPI_Read_Buf(RD_RX_PLOAD, RxBuf, TX_PLOAD_WIDTH);
if(RxBuf[0]==0xaa&&RxBuf[1]==0x55) //如果收到的是0xaa,0x55,表示收到的是命令,
{
EA=0;
c=RxBuf[2];
switch(c)
{
case 1: //清除顯示內容
for(i=0;i<32;i++)
RxBuf=0;
for(i=0;i<255;i++)
{
page_write(i*32,RxBuf);
delayms(5);
P0=~P0;
}
break;
case 2:stop=!stop;break;
case 3: //字體寬度增加
wide++;
if(wide==10)wide=4;
break;
case 4: //字體寬度減小
wide--;
if(wide==0)wide=4;
break;
case 5: //字體移動速度增加
speed--;
if(speed==-1)speed=2;
break; //字體移動速度變慢
case 6:
speed++;
if(speed==10)speed=2;
break;
case 7: //不滾動顯示時顯示開始位置確定
d+=6;
if(d>250)d=0;
num=d+7;
for(i=0;i<6;i++)
{
sequential_read(32*(i+d),16,xiancun1+16*i);
sequential_read(32*(i+d)+16,16,xiancun2+16*i);
}
break;
case 8: //不滾動顯示時顯示開始位置確定
d-=6;
if(d<0)d=250;
num=d+7;
for(i=0;i<6;i++)
{
sequential_read(32*(i+d),16,xiancun1+16*i);
sequential_read(32*(i+d)+16,16,xiancun2+16*i);
}
break;
case 9: //接收到的數據在24C64中存儲的開始位置
num2=RxBuf[3];
break;
case 10: //動態掃描范圍上限
up=RxBuf[3];
break;
case 11: //動態掃描范圍下限
down=RxBuf[3];
break;
}
EA=1;
} //如果收到的不是命令,則表示收到的是數據
else
{ //則存入24c64
page_write(num2,RxBuf);
num2+=32;
TxBuf[0]=num2/32;
TxBuf[1]=num2/32;
TxBuf[2]=0x55; //發送0x55表示接收到了,并通知主機要求發下一幀數據
SPI_RW_Reg(WRITE_REG + STATUS, sta|0x70);
TX_Mode(TxBuf);
Check_ACK(1);
}
}
EX0=1;
a=1;
if(b)a=0;
b=0;
while(a);
for(i=0;i<96;i++)
{
P0=~xiancun1;
P1=~xiancun2;
yanshi(wide);
}
P0=0xff;
P1=0xff;
cycle++;
if(cycle>=speed&&stop)
{
cycle=0;
for(i=0;i<95;i++)
{
xiancun1=xiancun1[i+1];
xiancun2=xiancun2[i+1];
}
xiancun1[95]=read_add(32*num+k); //更新第六個漢字的第16列
xiancun2[95]=read_add(32*num+k+16);
k++;
if(k==16)
{
k=0;
num++;
if(num>=up)
num=down;
}
}
}
}
void int0() interrupt 0
{
a=0;
EX0=0;
}
void int1() interrupt 2
{
sta = SPI_Read(STATUS); // 讀狀態寄存器
RX_DR=sta>>6&0x01;
if(RX_DR)
{
EX0=0;
a=0; //防止接收到信號中斷后,a=1;使程序停止
b=1; //表示接收到數據
}
SPI_RW_Reg(WRITE_REG + STATUS, sta|0x70);
}
|
-
DSCN2314.jpg
(2.6 MB, 下載次數: 52)
下載附件
2019-8-7 21:05 上傳
-
DSCN2315.jpg
(2.56 MB, 下載次數: 54)
下載附件
2019-8-7 21:05 上傳
-
DSCN2316.jpg
(2.67 MB, 下載次數: 49)
下載附件
2019-8-7 21:05 上傳
-
DSCN2317.jpg
(2.68 MB, 下載次數: 54)
下載附件
2019-8-7 21:06 上傳
-
DSCN2326.jpg
(2.55 MB, 下載次數: 47)
下載附件
2019-8-7 21:06 上傳
-
DSCN2327.jpg
(2.59 MB, 下載次數: 49)
下載附件
2019-8-7 21:06 上傳
-
DSCN2369.jpg
(2.63 MB, 下載次數: 56)
下載附件
2019-8-7 21:07 上傳
-
側面.JPG
(66.72 KB, 下載次數: 49)
下載附件
2019-8-7 21:07 上傳
-
DSCN2324.jpg
(2.68 MB, 下載次數: 55)
下載附件
2019-8-7 21:07 上傳
-
DSCN2323.jpg
(2.64 MB, 下載次數: 52)
下載附件
2019-8-7 21:14 上傳
-
DSCN2325.jpg
(2.65 MB, 下載次數: 57)
下載附件
2019-8-7 21:14 上傳
-
DSCN2322.jpg
(2.67 MB, 下載次數: 52)
下載附件
2019-8-7 21:14 上傳
-
底座.jpg
(1015.07 KB, 下載次數: 57)
下載附件
2019-8-7 21:15 上傳
-
DSCN2321.jpg
(2.69 MB, 下載次數: 51)
下載附件
2019-8-7 21:16 上傳
-
-
電機驅動.rar
2019-8-7 21:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
461.54 KB, 下載次數: 12, 下載積分: 黑幣 -5
-
-
無線發射.rar
2019-8-7 21:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
897.79 KB, 下載次數: 27, 下載積分: 黑幣 -5
-
-
發送最終結果.rar
2019-8-7 21:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
67.83 KB, 下載次數: 17, 下載積分: 黑幣 -5
-
-
接收顯示最終.rar
2019-8-7 21:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
58.06 KB, 下載次數: 16, 下載積分: 黑幣 -5
|