找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2364|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Proteus從串口接收來自虛擬終端的數(shù)字、字符,并在點(diǎn)陣屏上顯示出來,每接收一個(gè)字符

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
如圖所示,使用89C51單片機(jī)、74HC374、74HC32、8*8點(diǎn)陣模塊構(gòu)成8*24LED點(diǎn)陣顯示器,能從串口接收來自虛擬終端的數(shù)字、字符,并在點(diǎn)陣屏上顯示出來,每接收一個(gè)字符,就將顯示屏上現(xiàn)在的字符左移一位,新接收的字符顯示上屏幕的最右側(cè)。
                  

請(qǐng)大家?guī)兔纯催@個(gè)怎么做,新手小白,自己做了好多次,虛擬終端發(fā)送在點(diǎn)陣上顯示那一塊一直搞不出來,謝謝各位了

單片機(jī)源程序如下:
  1. #include
  2. #include
  3. #include
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define ulong unsigned long
  7. #define PA XBYTE[0xfeff]
  8. #define PB XBYTE[0xfdff]
  9. #define PC XBYTE[0xfbff]
  10. #define PCN XBYTE[0x7fff]
  11. uchar code  ASCII_TAB[480] = //0X20~0X7F之間 ASCII碼對(duì)應(yīng)的點(diǎn)陣數(shù)據(jù)表
  12.               { 0x00, 0x00, 0x00, 0x00, 0x00,
  13.                     0x00, 0x00, 0x9e, 0x00, 0x00,
  14.                 0x00, 0x0e, 0x00, 0x0e, 0x00,
  15.                 0x28, 0xfe, 0x28, 0xfe, 0x28,
  16.                 0x48, 0x54, 0xfe, 0x54, 0x24,
  17.                 0x46, 0x26, 0x10, 0xc8, 0xc4,
  18.                 0x6c, 0x92, 0xaa, 0x44, 0xa0,
  19.                 0x00, 0x0a, 0x06, 0x00, 0x00,
  20.                     0x00, 0x38, 0x44, 0x82, 0x00,
  21.                     0x00, 0x82, 0x44, 0x38, 0x00,
  22.                     0x28, 0x10, 0x7c, 0x10, 0x28,
  23.                     0x10, 0x10, 0x7c, 0x10, 0x10,
  24.                     0x00, 0xa0, 0x60, 0x00, 0x00,
  25.                     0x10, 0x10, 0x10, 0x10, 0x10,
  26.                     0x00, 0xc0, 0xc0, 0x00, 0x00,
  27.                    0x40, 0x20, 0x10, 0x08, 0x04,

  28.                   0x7C, 0xA2, 0x92, 0x8A, 0x7C,  
  29.     0x84, 0xC2, 0xA2, 0x92, 0x8C,  
  30.     0x42, 0x82, 0x8A, 0x96, 0x62,  
  31.     0x30, 0x28, 0x24, 0xFE, 0x20,
  32.     0x4E, 0x8A, 0x8A, 0x8A, 0x72,  
  33.     0x78, 0x94, 0x92, 0x92, 0x60,   
  34.     0x02, 0xE2, 0x12, 0x0A, 0x06,   
  35.     0x6C, 0x92, 0x92, 0x92, 0x6C,   
  36.      0x0C, 0x92, 0x92, 0x52, 0x3C,   
  37.     0x00, 0x6C, 0x6C, 0x00, 0x00,  
  38.     0x00, 0xAC, 0x6C, 0x00, 0x00,   
  39.     0x10, 0x28, 0x44, 0x82, 0x00,   
  40.     0x28, 0x28, 0x28, 0x28, 0x28,   
  41.     0x00, 0x82, 0x44, 0x28, 0x10,   
  42.     0x04, 0x02, 0xA2, 0x12, 0x0C,

  43.                 0x64, 0x92, 0xF2, 0x82, 0x7C,  
  44.     0xFC, 0x22, 0x22, 0x22, 0xFC,   
  45.      0xFE, 0x92, 0x92, 0x92, 0x6C,   
  46.     0x7C, 0x82, 0x82, 0x82, 0x44,   
  47.     0xFE, 0x82, 0x82, 0x44, 0x38,  
  48.     0xFE, 0x92, 0x92, 0x92, 0x82,  
  49.     0xFE, 0x12, 0x12, 0x12, 0x02,   
  50.     0x7C, 0x82, 0x92, 0x92, 0xF4,   
  51.     0xFE, 0x10, 0x10, 0x10, 0xFE,  
  52.     0x00, 0x82, 0xFE, 0x82, 0x00,  
  53.     0x40, 0x80, 0x82, 0x7E, 0x02,   
  54.     0xFE, 0x10, 0x28, 0x44, 0x82,   
  55.     0xFE, 0x80, 0x80, 0x80, 0x80,  
  56.     0xFE, 0x04, 0x18, 0x04, 0xFE,   
  57.     0xFE, 0x08, 0x10, 0x20, 0xFE,   
  58.     0x7C, 0x82, 0x82, 0x82, 0x7C,

  59.                 0xFE, 0x12, 0x12, 0x12, 0x0C,
  60.     0x7C, 0x82, 0xA2, 0x42, 0xBC,
  61.     0xFE, 0x12, 0x32, 0x52, 0x8C,  
  62.     0x8C, 0x92, 0x92, 0x92, 0x62,
  63.     0x02, 0x02, 0xFE, 0x02, 0x02,
  64.     0x7E, 0x80, 0x80, 0x80, 0x7E,
  65.     0x3E, 0x40, 0x80, 0x40, 0x3E,
  66.     0x7E, 0x80, 0x70, 0x80, 0x7E,
  67.     0xC6, 0x28, 0x10, 0x28, 0xC6,
  68.     0x0E, 0x10, 0xE0, 0x10, 0x0E,
  69.     0xC2, 0xA2, 0x92, 0x8A, 0x86,
  70.     0x00, 0xFE, 0x82, 0x82, 0x00,
  71.     0x04, 0x08, 0x10, 0x20, 0x40,
  72.     0x00, 0x82, 0x82, 0xFE, 0x00,
  73.     0x08, 0x04, 0x02, 0x04, 0x08,
  74.     0x80, 0x80, 0x80, 0x80, 0x80,

  75.                 0x00, 0x02, 0x04, 0x08, 0x00,
  76.     0x40, 0xA8, 0xA8, 0xA8, 0xF0,
  77.     0xFE, 0x90, 0x88, 0x88, 0x70,
  78.     0x70, 0x88, 0x88, 0x88, 0x40,
  79.     0x70, 0x88, 0x88, 0x90, 0xFE,
  80.     0x70, 0xA8, 0xA8, 0xA8, 0x30,
  81.     0x10, 0xFC, 0x12, 0x02, 0x04,
  82.     0x18, 0xA4, 0xA4, 0xA4, 0x7C,
  83.     0xFE, 0x10, 0x08, 0x08, 0xF0,
  84.     0x00, 0x88, 0xFA, 0x80, 0x00,
  85.     0x40, 0x80, 0x88, 0x7A, 0x00,
  86.     0xFE, 0x20, 0x50, 0x88, 0x00,
  87.     0x00, 0x82, 0xFE, 0x80, 0x00,
  88.     0xF8, 0x08, 0x30, 0x08, 0xF8,
  89.     0xF8, 0x10, 0x08, 0x08, 0xF0,
  90.     0x70, 0x88, 0x88, 0x88, 0x70,

  91.                 0xF8, 0x28, 0x28, 0x28, 0x10,
  92.     0x10, 0x28, 0x28, 0x30, 0xF8,
  93.     0xF8, 0x10, 0x08, 0x08, 0x10,
  94.     0x90, 0xA8, 0xA8, 0xA8, 0x40,
  95.     0x08, 0x7E, 0x88, 0x80, 0x40,
  96.     0x78, 0x80, 0x80, 0x40, 0xF8,
  97.     0x38, 0x40, 0x80, 0x40, 0x38,
  98.     0x78, 0x80, 0x60, 0x80, 0x78,
  99.     0x88, 0x50, 0x20, 0x50, 0x88,
  100.     0x18, 0xA0, 0xA0, 0xA0, 0x78,
  101.     0x88, 0xC8, 0xA8, 0x98, 0x88,
  102.     0x00, 0x10, 0x6C, 0x82, 0x00,
  103.     0x00, 0x00, 0xFE, 0x00, 0x00,
  104.     0x00, 0x82, 0x6C, 0x10, 0x00,
  105.     0x10, 0x10, 0x54, 0x38, 0x10,
  106.     0x10, 0x38, 0x54, 0x10, 0x10};

  107. uchar dbuf[5]={'A','B','C','D','E'};
  108. void delay(void)
  109. {
  110.     uchar i;
  111. for(i=0;i<250;i++);
  112. }
  113. uchar sh[5];
  114. void disp()
  115. {    uchar dat;
  116.     uchar *pch;
  117.     uchar i;
  118.     uchar j;
  119.     ulong bsel=0x01;
  120.     while(RI==0);//讀數(shù)據(jù)
  121.     RI=0;
  122.     dat=SBUF;
  123.     pch=&ASCII_TAB[(dat-0x20)*5];//指向字符起始列的點(diǎn)陣碼
  124.     for(i=0;i<5;i++)  //送出字符的5列點(diǎn)陣碼
  125.   {
  126.     sh[ i]=*pch;//將獲得的數(shù)據(jù)存入數(shù)組
  127.      pch++;
  128.   }  
  129.     for(j=0;j<5;j++)
  130.   {
  131.     P1=sh[ i]; //P1口取數(shù)組的值                  
  132.     PC=(uchar)(bsel>>16);
  133.     PB=bsel>>8;
  134.     PA=bsel&0xff;
  135.     bsel=_lrol_(bsel,1);
  136.     delay();            
  137.     PC=0x00;
  138.     PB=0x00;
  139.     PA=0x00;
  140.     SBUF=dat;
  141.     while(TI==0);
  142.     TI=0;
  143.   }
  144. }

  145. void init_serial(void)
  146. {
  147.   SCON=0x50;
  148.   TMOD=0x20;
  149.   PCON=PCON&0x7f;
  150.   TH1=-3;
  151.   TL1=-3;
  152.   TR1=1;
  153. }
  154. void main(void)
  155. {  
  156. init_serial();//初始化串行口
  157. while(1)
  158. {
  159.       disp();
  160. }
  161. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表