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

QQ登錄

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

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

16x64-M2點(diǎn)陣屏完整資料包(含單片機(jī)源碼與電路)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
16*64點(diǎn)陣完整資料包
電路原理圖如下:


注意事項(xiàng):
1、提供的電源要插在擴(kuò)展板的電源接口
2、下載程序用USB線通過(guò)stc-isp軟件下載程序
3、提供2個(gè)測(cè)試程序,不做其他技術(shù)支持
4、由于版權(quán)問(wèn)題,keil編程軟件現(xiàn)在不提供,請(qǐng)自己百度下載,抱歉
5、發(fā)貨收到的貨,我們內(nèi)置了程序,直接插上電源會(huì)有現(xiàn)象,一般燒寫(xiě)的是全亮的現(xiàn)象,請(qǐng)記住線是怎么接的,以免回頭拆了忘記了


單片機(jī)源程序如下:
  1. /*-----------------------------------------------
  2.   名稱:IO口高低電平控制
  3.   修改:無(wú)
  4.   內(nèi)容:點(diǎn)亮P1口的1個(gè)LED燈閃爍
  5.         該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的,
  6.                 通過(guò)程序了解如何控制端口的高低電平
  7. ------------------------------------------------*/
  8. #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),
  9. //頭文件包含特殊功能寄存器的定義
  10. sfr AUXR = 0x8e;
  11. sfr P3M1=0xB1;
  12. sfr P3M0=0xB2;

  13. sfr P1M1=0x91;
  14. sfr P1M0=0x92;

  15. sbit KEY = P3^2;

  16. sbit T_STR = P3^7;      //鎖存引腳,一般標(biāo)識(shí)位STR
  17. sbit T_IO  = P1^4;       //數(shù)據(jù)引腳,屏上標(biāo)識(shí)R1或者G1
  18. sbit T_CLK = P3^6;      //時(shí)鐘引腳,標(biāo)識(shí)位CLK
  19. sbit T_OE  = P3^5;

  20. unsigned char MoveBitNum,MoveBitNumtemp,IncNum;//移動(dòng)位數(shù),臨時(shí)移動(dòng)位數(shù),大于一個(gè)字節(jié)增加字節(jié)數(shù)
  21. unsigned int HzNum;//漢字個(gè)數(shù)
  22. unsigned char buff[10];

  23. /*-----------------------------------------------
  24.              16x16漢字取模數(shù)據(jù)
  25. ------------------------------------------------*/
  26. unsigned char code hztest[]=    //取模選擇字節(jié)倒序 ,正序得出的字是反的,可以在軟件中設(shè)置自動(dòng)倒敘
  27. {

  28. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  29. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,


  30. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  31. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  32. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  33. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  34. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  35. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //前面一屏大小的空字符,不顯示,這里根據(jù)屏的大小修改,這個(gè)是4個(gè)漢字屏
  36.                                                                                  //所以寫(xiě)入4個(gè)漢字
  37.         
  38. …………
  39. …………
  40. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………

  41. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  42. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  43. };

  44. /*-----------------------------------------------
  45.              向595寫(xiě)入一個(gè)字節(jié)
  46. ------------------------------------------------*/
  47. void InputByte(unsigned  char dat) //寫(xiě)一個(gè)字節(jié)
  48. {
  49.   unsigned char i;
  50.         
  51.    for(i=0;i<8;i++)
  52.         {
  53.          
  54.          T_IO=!(dat&0x01);
  55.          dat>>=1;
  56.          T_CLK=0;
  57.          T_CLK=1;
  58.          }
  59. }
  60. /*-----------------------------------------------
  61.                     延時(shí)程序
  62. ------------------------------------------------*/
  63. void Delay(unsigned int t)
  64. {
  65. while(--t);
  66. }


  67. /*------------------------------------------------
  68.                     主函數(shù)
  69. ------------------------------------------------*/
  70. void main (void)
  71. {
  72.         unsigned char count;//16行掃描數(shù)據(jù),范圍0-15
  73.         unsigned int i,  j;
  74.         unsigned char temp;
  75.         P3M0=0xff;//推挽
  76.         P1M0=0xff;
  77.         P3M1=0;
  78.         P1M1=0;

  79.         AUXR |= 0x80;                         //1T
  80.   //AUXR &= 0x7f;                        //12T

  81.                 while (1)         //主循環(huán)
  82.                 {

  83.                 i++;
  84.                 if(i==100)//更改流動(dòng)速度,1T單片機(jī)和12T單片機(jī)速度大約5-8倍,注意更改參數(shù)
  85.                 {
  86.                                 i=0;
  87.                                 MoveBitNum++;
  88.                                 if(MoveBitNum==16)//每次移動(dòng)完一個(gè)漢字大小后循環(huán)
  89.                                 {
  90.                                                 MoveBitNum=0;
  91.                                                 HzNum+=32;    //調(diào)用下一個(gè)漢字
  92.                                                 if(HzNum>=800)//需要顯示的漢字個(gè)數(shù)乘以32,包括前面的一屏空字符的個(gè)數(shù),后面清屏的空字符不包含在內(nèi),這里是(漢字個(gè)數(shù)+4)x32
  93.                                                 HzNum=0;   //完全顯示完后循環(huán)調(diào)用
  94.                                 }
  95.                 }


  96.                         Delay(1);//控制掃描頻率
  97.                         T_OE =0;
  98.                         for(j=0;j<5;j++) //取每個(gè)漢字的前2個(gè)字節(jié),4個(gè)漢字組成一行,數(shù)據(jù)傳輸完成后鎖存輸出即可,這里需要多取出一個(gè)漢字作為緩沖
  99.                         {                //原來(lái)j=4,現(xiàn)在j=5.
  100.                                         buff[2*j]=hztest[HzNum+j*32+count*2];  //每次移動(dòng)完一個(gè)漢字后,選擇下一個(gè)漢字
  101.                                         buff[2*j+1]=hztest[HzNum+j*32+count*2+1];
  102.                         }

  103.                         if(MoveBitNum<8)                   //  判讀移動(dòng)距離是大于一個(gè)字節(jié)還是小于一個(gè)字節(jié),因?yàn)橐粋(gè)字節(jié)左移右移最大只能8位
  104.                                 { IncNum=0; MoveBitNumtemp=MoveBitNum; }
  105.                         else
  106.                                 { IncNum=1; MoveBitNumtemp=MoveBitNum-8;}//大于8就減去8得到的數(shù)值還是小于8
  107.                         T_STR=0;       //鎖存無(wú)效
  108.                         for(j=0;j<8;j++)          //按bit的方式移動(dòng)緩沖區(qū)的內(nèi)容,然后輸出到595,即取出的數(shù)值每個(gè)字節(jié)左移一定的位數(shù),
  109.                         {                                     //后面左移出的數(shù)據(jù)整合到前面的字節(jié)中,保持?jǐn)?shù)據(jù)的連續(xù)性            
  110.                                         temp=(buff[j+IncNum]>>MoveBitNumtemp)|(buff[j+1+IncNum]<<(8-MoveBitNumtemp));//這句比較重要,需要自行拿出2個(gè)字節(jié)的數(shù)據(jù)模擬分析
  111.                                         InputByte(temp);//輸出到595
  112.                         }//8個(gè)字節(jié)傳輸完鎖存輸出
  113.                         P1=count;//用P1口的前4位控制16行,屏內(nèi)部通過(guò)4-16譯碼器工作,循環(huán)掃描16行
  114.                         T_STR=1;      //鎖存有效,此時(shí)一行的數(shù)據(jù)顯示到屏上

  115.                         T_OE =1;
  116.                         count++;
  117.                         if(count==16)
  118.                         count=0;
  119.                 }
  120. }

復(fù)制代碼

所有資料51hei提供下載:

16x64-M2點(diǎn)陣屏資料.rar (1.02 MB, 下載次數(shù): 94)



評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:239985 發(fā)表于 2018-5-10 15:50 | 只看該作者
用一下 課設(shè)需要 謝謝樓主
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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