如圖所示,使用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ù)制代碼
|