標(biāo)題:
Proteus從串口接收來自虛擬終端的數(shù)字、字符,并在點(diǎn)陣屏上顯示出來,每接收一個(gè)字符
[打印本頁]
作者:
cnbr
時(shí)間:
2021-1-6 20:52
標(biāo)題:
Proteus從串口接收來自虛擬終端的數(shù)字、字符,并在點(diǎn)陣屏上顯示出來,每接收一個(gè)字符
如圖所示,使用
89C51
單片機(jī)、
74HC374
、
74HC32
、
8*8
點(diǎn)陣模塊構(gòu)成
8*24
的
LED
點(diǎn)陣顯示器,能從串口接收來自虛擬終端的數(shù)字、字符,并在點(diǎn)陣屏上顯示出來,每接收一個(gè)字符,就將顯示屏上現(xiàn)在的字符左移一位,新接收的字符顯示上屏幕的最右側(cè)。
203138hjekj7k8p8e1777f.png
(819.46 KB, 下載次數(shù): 54)
下載附件
2021-1-7 03:47 上傳
請(qǐng)大家?guī)兔纯催@個(gè)怎么做,新手小白,自己做了好多次,虛擬終端發(fā)送在點(diǎn)陣上顯示那一塊一直搞不出來,謝謝各位了
單片機(jī)源程序如下:
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define PA XBYTE[0xfeff]
#define PB XBYTE[0xfdff]
#define PC XBYTE[0xfbff]
#define PCN XBYTE[0x7fff]
uchar code ASCII_TAB[480] = //0X20~0X7F之間 ASCII碼對(duì)應(yīng)的點(diǎn)陣數(shù)據(jù)表
{ 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x9e, 0x00, 0x00,
0x00, 0x0e, 0x00, 0x0e, 0x00,
0x28, 0xfe, 0x28, 0xfe, 0x28,
0x48, 0x54, 0xfe, 0x54, 0x24,
0x46, 0x26, 0x10, 0xc8, 0xc4,
0x6c, 0x92, 0xaa, 0x44, 0xa0,
0x00, 0x0a, 0x06, 0x00, 0x00,
0x00, 0x38, 0x44, 0x82, 0x00,
0x00, 0x82, 0x44, 0x38, 0x00,
0x28, 0x10, 0x7c, 0x10, 0x28,
0x10, 0x10, 0x7c, 0x10, 0x10,
0x00, 0xa0, 0x60, 0x00, 0x00,
0x10, 0x10, 0x10, 0x10, 0x10,
0x00, 0xc0, 0xc0, 0x00, 0x00,
0x40, 0x20, 0x10, 0x08, 0x04,
0x7C, 0xA2, 0x92, 0x8A, 0x7C,
0x84, 0xC2, 0xA2, 0x92, 0x8C,
0x42, 0x82, 0x8A, 0x96, 0x62,
0x30, 0x28, 0x24, 0xFE, 0x20,
0x4E, 0x8A, 0x8A, 0x8A, 0x72,
0x78, 0x94, 0x92, 0x92, 0x60,
0x02, 0xE2, 0x12, 0x0A, 0x06,
0x6C, 0x92, 0x92, 0x92, 0x6C,
0x0C, 0x92, 0x92, 0x52, 0x3C,
0x00, 0x6C, 0x6C, 0x00, 0x00,
0x00, 0xAC, 0x6C, 0x00, 0x00,
0x10, 0x28, 0x44, 0x82, 0x00,
0x28, 0x28, 0x28, 0x28, 0x28,
0x00, 0x82, 0x44, 0x28, 0x10,
0x04, 0x02, 0xA2, 0x12, 0x0C,
0x64, 0x92, 0xF2, 0x82, 0x7C,
0xFC, 0x22, 0x22, 0x22, 0xFC,
0xFE, 0x92, 0x92, 0x92, 0x6C,
0x7C, 0x82, 0x82, 0x82, 0x44,
0xFE, 0x82, 0x82, 0x44, 0x38,
0xFE, 0x92, 0x92, 0x92, 0x82,
0xFE, 0x12, 0x12, 0x12, 0x02,
0x7C, 0x82, 0x92, 0x92, 0xF4,
0xFE, 0x10, 0x10, 0x10, 0xFE,
0x00, 0x82, 0xFE, 0x82, 0x00,
0x40, 0x80, 0x82, 0x7E, 0x02,
0xFE, 0x10, 0x28, 0x44, 0x82,
0xFE, 0x80, 0x80, 0x80, 0x80,
0xFE, 0x04, 0x18, 0x04, 0xFE,
0xFE, 0x08, 0x10, 0x20, 0xFE,
0x7C, 0x82, 0x82, 0x82, 0x7C,
0xFE, 0x12, 0x12, 0x12, 0x0C,
0x7C, 0x82, 0xA2, 0x42, 0xBC,
0xFE, 0x12, 0x32, 0x52, 0x8C,
0x8C, 0x92, 0x92, 0x92, 0x62,
0x02, 0x02, 0xFE, 0x02, 0x02,
0x7E, 0x80, 0x80, 0x80, 0x7E,
0x3E, 0x40, 0x80, 0x40, 0x3E,
0x7E, 0x80, 0x70, 0x80, 0x7E,
0xC6, 0x28, 0x10, 0x28, 0xC6,
0x0E, 0x10, 0xE0, 0x10, 0x0E,
0xC2, 0xA2, 0x92, 0x8A, 0x86,
0x00, 0xFE, 0x82, 0x82, 0x00,
0x04, 0x08, 0x10, 0x20, 0x40,
0x00, 0x82, 0x82, 0xFE, 0x00,
0x08, 0x04, 0x02, 0x04, 0x08,
0x80, 0x80, 0x80, 0x80, 0x80,
0x00, 0x02, 0x04, 0x08, 0x00,
0x40, 0xA8, 0xA8, 0xA8, 0xF0,
0xFE, 0x90, 0x88, 0x88, 0x70,
0x70, 0x88, 0x88, 0x88, 0x40,
0x70, 0x88, 0x88, 0x90, 0xFE,
0x70, 0xA8, 0xA8, 0xA8, 0x30,
0x10, 0xFC, 0x12, 0x02, 0x04,
0x18, 0xA4, 0xA4, 0xA4, 0x7C,
0xFE, 0x10, 0x08, 0x08, 0xF0,
0x00, 0x88, 0xFA, 0x80, 0x00,
0x40, 0x80, 0x88, 0x7A, 0x00,
0xFE, 0x20, 0x50, 0x88, 0x00,
0x00, 0x82, 0xFE, 0x80, 0x00,
0xF8, 0x08, 0x30, 0x08, 0xF8,
0xF8, 0x10, 0x08, 0x08, 0xF0,
0x70, 0x88, 0x88, 0x88, 0x70,
0xF8, 0x28, 0x28, 0x28, 0x10,
0x10, 0x28, 0x28, 0x30, 0xF8,
0xF8, 0x10, 0x08, 0x08, 0x10,
0x90, 0xA8, 0xA8, 0xA8, 0x40,
0x08, 0x7E, 0x88, 0x80, 0x40,
0x78, 0x80, 0x80, 0x40, 0xF8,
0x38, 0x40, 0x80, 0x40, 0x38,
0x78, 0x80, 0x60, 0x80, 0x78,
0x88, 0x50, 0x20, 0x50, 0x88,
0x18, 0xA0, 0xA0, 0xA0, 0x78,
0x88, 0xC8, 0xA8, 0x98, 0x88,
0x00, 0x10, 0x6C, 0x82, 0x00,
0x00, 0x00, 0xFE, 0x00, 0x00,
0x00, 0x82, 0x6C, 0x10, 0x00,
0x10, 0x10, 0x54, 0x38, 0x10,
0x10, 0x38, 0x54, 0x10, 0x10};
uchar dbuf[5]={'A','B','C','D','E'};
void delay(void)
{
uchar i;
for(i=0;i<250;i++);
}
uchar sh[5];
void disp()
{ uchar dat;
uchar *pch;
uchar i;
uchar j;
ulong bsel=0x01;
while(RI==0);//讀數(shù)據(jù)
RI=0;
dat=SBUF;
pch=&ASCII_TAB[(dat-0x20)*5];//指向字符起始列的點(diǎn)陣碼
for(i=0;i<5;i++) //送出字符的5列點(diǎn)陣碼
{
sh[ i]=*pch;//將獲得的數(shù)據(jù)存入數(shù)組
pch++;
}
for(j=0;j<5;j++)
{
P1=sh[ i]; //P1口取數(shù)組的值
PC=(uchar)(bsel>>16);
PB=bsel>>8;
PA=bsel&0xff;
bsel=_lrol_(bsel,1);
delay();
PC=0x00;
PB=0x00;
PA=0x00;
SBUF=dat;
while(TI==0);
TI=0;
}
}
void init_serial(void)
{
SCON=0x50;
TMOD=0x20;
PCON=PCON&0x7f;
TH1=-3;
TL1=-3;
TR1=1;
}
void main(void)
{
init_serial();//初始化串行口
while(1)
{
disp();
}
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1