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

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 2505|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

P3.75單紅64X16半板點(diǎn)陣屏 STC8A單片機(jī)驅(qū)動(dòng)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本程序來(lái)自http://www.torrancerestoration.com/bbs/dpj-205333-1.html更改,驅(qū)動(dòng)P3.75單紅64X16。測(cè)試了下驅(qū)動(dòng)9塊板,sta8a選RC22.018MHz,刷新整屏都在98HZ

實(shí)物圖如下:


單片機(jī)源程序如下:
  1. //LED屏控制程序   本程序驅(qū)動(dòng)32*64LED彩色屏
  2. #include <stc15f2k60s2.H>
  3. #include<uart.h>
  4. //#include "common.h"
  5. #include <intrins.h>
  6. #define u8 unsigned        char
  7. #define u16         unsigned int

  8. #define NOP     _nop_()

  9. char Key_Read();

  10. //第1組
  11. //LED端口 共16根,其中3根為GND
  12. sbit XOE     = P1^0;       //傳數(shù)允許
  13. sbit XSHCP=P1^1;           //S   時(shí)鐘
  14. sbit XSTCP=P1^2;           //L   鎖存輸出
  15. sbit XA1     = P1^3;       //A  由138控制的掃描行  共16行
  16. sbit XB1     = P1^4;       //B
  17. sbit XC1     = P1^5;       //C
  18. sbit XD1     = P1^6;       //D
  19. sbit SR1DATA=P1^7;          //數(shù)據(jù)1  紅色


  20. //大字體
  21. u8 code dz1[4][128]={
  22. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x3C,
  23. ***********

  24. u8 code kuaile[]={
  25.   
  26. 0x18,0x06,0x18,0x06,0x18,0x06,0xD8,0x3F,0x38,0x36,0x7E,0x36,0x1E,0x36,0x1E,0x36,
  27. 0xFB,0xFF,0x18,0x06,0x18,0x0F,0x18,0x0F,0x98,0x19,0x98,0x19,0xD8,0x30,0x78,0xE0, //快0

  28. 0x00,0x0C,0x00,0x1F,0xF8,0x01,0x18,0x00,0x98,0x01,0x8C,0x01,0x8C,0x01,0xFC,0x7F,
  29. 0x80,0x01,0xB0,0x0D,0xB0,0x19,0x98,0x31,0x8C,0x61,0x86,0x61,0xE0,0x01,0xC0,0x00  //樂(lè)1
  30. };
  31.        
  32.        
  33.        
  34.                 





  35. //第1組上下半部分?jǐn)?shù)據(jù)傳送  紅 1 綠 2 藍(lán)
  36. void shuju_input1(u8 sdat1)    //參數(shù)為上半部數(shù)據(jù) 下半部數(shù)據(jù) 顯示顏色
  37. {
  38.   u8 m;
  39.    sdat1=~sdat1;
  40.   for(m=0;m<8;m++)         //8位數(shù)據(jù)傳送
  41.    {
  42.     if(sdat1 & 0x80)        //判斷最高位  上半部數(shù)據(jù)
  43.                 {
  44.                        
  45.        SR1DATA=1;         
  46.      }
  47.     else
  48.                 {
  49.                
  50.                
  51.        SR1DATA=0;         

  52.                        
  53.       
  54.      }
  55.                

  56.                  
  57.     XSHCP=0;
  58.     XSHCP=1;
  59.     NOP;
  60.     NOP;
  61.     XSHCP=0;
  62.     NOP;
  63.     NOP;
  64.     sdat1=sdat1<<1;       

  65.          }                 
  66. }



  67. /*******************************************************************************************/
  68. void serial_output()
  69. {
  70.     XSTCP=1;
  71.     NOP;
  72.     XSTCP=0;   
  73. }  



  74. void HC138_scan(u8 temp)
  75. {
  76.          XOE=0;
  77.    XA1=0x01 & temp;     
  78.    XB1=0x01 &(temp>>1);
  79.          XC1=0x01 &(temp>>2);
  80.          XD1=0x01 &(temp>>3);
  81. }

  82. //顯示  每一單元板為32*64,能夠顯示二行漢字,每行四字(字模為順向,逐行式,陰碼的算法)
  83. void display(u8 *p)                //4字的首地址
  84. {
  85.   u8 qx=0,qxdata=0,qd=1;//奇數(shù)倍
  86.   u16 j=0,k;
  87.   for(k=0;k<16;k++)                  //16行 控制掃描行
  88.    {        
  89.     for(j=1;j<5;j++)                //共取8個(gè)字符高16X8,4個(gè)大字一個(gè)字是16X16
  90.     {
  91.     shuju_input1(*(p+(j-1)*32+k));                                      //取上下半漢字的第1個(gè)字節(jié)
  92. ////////////////////////////////////////////////////////////////////////////////
  93.              qxdata=0;
  94.                  qx=0;
  95.              while(qd)
  96.                  {
  97.                  qxdata++;
  98.                  if(qxdata%2){qx++;}
  99.                  if(qx==j)qd=0;
  100.                  }
  101.                  qd=1;       
  102. ////////////////////////////////////////////////////////////////生成1 3 5 7 9 11
  103.         shuju_input1(*(p+(qxdata*16)+k));                                  //取上下半漢字的第2個(gè)字節(jié)
  104.         }

  105.    XOE=1;
  106.    serial_output();                //允許輸出控制
  107.    HC138_scan(k);                  //對(duì)應(yīng)行
  108.   }
  109. }


  110. void main()
  111. {  
  112. UartInit(); //串口1初始化        //9600bps@11.0592MHz
  113.   UART1_fs(0x88);
  114.   while(1)
  115.    {
  116.    if(dyjs_1){
  117.          dyjs_1=0;
  118.              UART1_fs(0x99);
  119.              }
  120.          display(dzx4);    //1個(gè)單元控制
  121. //                 display1(dzx1,dzx2);   //1個(gè)單元控制
  122. //                   display2(dz2);
  123. //                   display3(dz1);
  124.     }
  125. }
復(fù)制代碼



Keil代碼下載:
p3.75單紅半板.zip (58.04 KB, 下載次數(shù): 32)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:373 發(fā)表于 2022-12-19 14:43 | 只看該作者
還沒(méi)有做過(guò),不知道能不能講解一下驅(qū)動(dòng)思路
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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