久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2223|回復: 0
打印 上一主題 下一主題
收起左側

單片機16X32點陣左移顯示白居易的《長恨歌》源程序

[復制鏈接]
跳轉到指定樓層
樓主
       閑時就準備一些外設,編個程序練練C語言。春節是個大好時光
   買了16X32的點陣套件,動手焊了一塊顯示屏,配合一個單片機開發板,搭了一個顯示系統。
   這個系統關鍵是程序。買套件時有附了一些示范程序。感覺太復雜,自己動手編了一個。調試
  成功,拿出來大家分享一下。視頻



單片機源程序如下:
  1. /*        白居易  長恨歌
  2. 標準08接口點陣屏管腳定義
  3. GND     A     ABCD是行掃描信號
  4. GND     B
  5. GND     C
  6. OE      D          OE是屏的使能端  低有效
  7. R1      G1          上半屏綠色
  8. R2      G2          下半屏綠色  本板由于沒有使用R2 G2,故把這兩腳改接為VCC,方便大家接線。
  9. GND            STR          鎖存信號
  10. GND     SCK         時鐘信號
  11. */
  12. /*接口說明*/
  13. //A B C D 是138行掃描信號
  14. // SCK   是595的移位信號
  15. // STR  是595的鎖存信號
  16. // OE    是屏的使能端 可以控制亮度
  17. // R     是紅色信號線
  18. // G     是綠色信號線
  19. // 本板由于沒有使用R2 G2,故把這兩腳改接為VCC,方便大家接線。   

  20. #include<reg52.h>
  21. #include<intrins.h>
  22. #include<stdio.h>
  23. #define u8 unsigned char
  24. #define u16 unsigned int
  25.                  
  26. /*****************************接口定義********************************/
  27. sbit sck=P0^1;//595的移位信號         
  28. sbit str=P0^2;//是595的鎖存信號            
  29. sbit sda_r=P2^7;//紅數據  
  30. sbit sda_g=P0^4;//綠數據   
  31. sbit OE=P0^5;//輸出使能
  32. sbit sign=P0^7;//檢測用LED
  33. sbit IA=P2^0;//行控制線A          
  34. sbit IB=P2^1;//行控制線B
  35. sbit IC=P2^2;//行控制線C
  36. sbit ID=P2^3;//行控制線D

  37. /********************************************************************/


  38. #define  scan0    {IA=0;IB=0;IC=0;ID=0;}
  39. #define  scan1    {IA=1;IB=0;IC=0;ID=0;}
  40. #define  scan2    {IA=0;IB=1;IC=0;ID=0;}
  41. #define  scan3    {IA=1;IB=1;IC=0;ID=0;}
  42. #define  scan4    {IA=0;IB=0;IC=1;ID=0;}
  43. #define  scan5    {IA=1;IB=0;IC=1;ID=0;}
  44. #define  scan6    {IA=0;IB=1;IC=1;ID=0;}
  45. #define  scan7    {IA=1;IB=1;IC=1;ID=0;}
  46. #define  scan8    {IA=0;IB=0;IC=0;ID=1;}
  47. #define  scan9    {IA=1;IB=0;IC=0;ID=1;}
  48. #define scan10    {IA=0;IB=1;IC=0;ID=1;}
  49. #define scan11    {IA=1;IB=1;IC=0;ID=1;}
  50. #define scan12    {IA=0;IB=0;IC=1;ID=1;}
  51. #define scan13    {IA=1;IB=0;IC=1;ID=1;}
  52. #define scan14    {IA=0;IB=1;IC=1;ID=1;}
  53. #define scan15    {IA=1;IB=1;IC=1;ID=1;}

  54. u16 adj,kk;
  55. u8 x,y;//
  56. u8 line,k; //line變量被多個函數調用
  57. u8 code ziku[];
  58. u8 buff_all[16][6];//對字庫里面的字重新排序緩存,           
  59. u8 buff[4];         //行緩存
  60. u8 buff_1[6];//數據移位緩存
  61. /******************************************************/

  62. u16 zishu=977;// 輸入目前字庫中字的個數!!!!!!!!!!!!!!!!!!!!!!!!!

  63. /********************************************************/
  64. void   rxd_data();                                   // 發送數據
  65. void   load_data();
  66. void scan(u8 Value)
  67. {switch(Value)
  68.         {case  0: scan0;break;
  69.                   case  1: scan1;break;
  70.                    case  2: scan2;break;
  71.                     case  3: scan3;break;
  72.              case  4: scan4;break;
  73.                       case  5: scan5;break;
  74.                        case  6: scan6;break;
  75.                         case  7: scan7;break;
  76.                  case  8: scan8;break;
  77.                        case  9: scan9;break;
  78.                       case 10:scan10;break;
  79.                      case 11:scan11;break;
  80.             case 12:scan12;break;
  81.                   case 13:scan13;break;
  82.                  case 14:scan14;break;
  83.             case 15:scan15;break;
  84.            default:break;
  85.         }
  86. }
  87. /*******************************************************************************
  88. * 函 數 名         : delay
  89. * 函數功能                   : 延時函數,i=1時,大約延時10us
  90. *******************************************************************************/
  91. void delay(u16 i)
  92. {
  93.         while(i--);       
  94. }
  95. /****************字庫字按顯示順序調序放入2維數組緩存中,便于顯示時調取 */
  96. void adj_ziku()
  97.       {

  98.            u8 w,v;
  99.            v=zishu*2;

  100.            for(y=0;y<16;y++)
  101.                {

  102.                            for(x=0;x<6;x++) //zhuang 3 ge zi
  103.                           {         
  104.                             w=x/2;//除2取整
  105.                            buff_all[y][x]=ziku[adj*32+2*y+32*w+x%2];
  106.                           }
  107.                    }
  108.           
  109.           }                   //ok
  110.    

  111. /*主函數*/
  112. void main()
  113. {           
  114.      u8 del;
  115.          u16        count ;//字庫輸入后要更改,循環次數=(zishu/2-1 )*16         

  116.           
  117.                 while(1)
  118.         {   
  119.                   adj=0;//這個很重要,否則不會從0開始??原因不明       
  120.         count=zishu*16+1-32 ;
  121.                   delay(50000);
  122.                 delay(50000);
  123.   for(kk=0;kk<zishu-2;kk++)
  124.           {
  125.           for(k=0;k<16;k++) //走完一個字
  126.                 {

  127.                  for(del=0;del<1;del++)        //一幀停留時間控制
  128.                    {
  129.                          adj_ziku();
  130.                     for(line=0;line<16;line++)
  131.                          {

  132.                          load_data();

  133.                           rxd_data();
  134.                           scan(line);
  135.                           str=1; //595鎖存
  136.                           str=0;
  137.                            OE=0;        //各相應位輸出
  138.                           delay(15); //數值大,亮度高,但會閃爍
  139.                            OE=1;//關閉595輸出(都為HIGH)

  140.                            }

  141.                   }
  142.                   //           delay(501);
  143.             }
  144.                                           adj++;

  145.           }
  146.         adj=0;
  147. }         
  148. }          
  149. /**********************************************************/
  150. void load_data(void)   //裝每行的4個字節到緩存buff中
  151.    {  u8 q1,q3,q4,n;
  152.    q3=k/8; q4=k%8;
  153.      for(q1=0;q1<6;q1++)        //預裝3個字
  154.               {                       
  155.                         buff_1[q1]=buff_all[line][q3+q1];          
  156.                   }
  157.     if(q4==0)
  158.          {
  159.                              for(n=0;n<4;n++)
  160.                             {buff[n]=buff_1[n];        }
  161.          }
  162.          else
  163.            {
  164.                           for(n=0;n<4;n++)
  165.                           {          
  166.                           buff[n]=(buff_1[n]<<q4)|(buff_1[n+1]>>(8-q4));
  167.                           }         
  168.           }           
  169.    }

  170. /***********************發送數據****************************/
  171. void rxd_data(void)                            //串行發送數據
  172. {
  173.   u8 s;
  174.   u8 temp,k;
  175.   
  176.   for(s=0;s<4;s++)                   //發送4字節數據
  177.         {
  178.          temp=buff[s];
  179.          temp=~temp;//取反才能字亮背景暗       

  180.              for(k=0;k<8;k++)//一個字節8位 發送給595
  181.                {
  182.                        sck=0; //上升沿移位595                          

  183.                sda_g=temp>>7;  //先送最高位,
  184.                            temp<<=1;                  
  185.                   sck=1;

  186.                }
  187.     }


  188.    }
  189. //字庫
  190. u8 code ziku[]={
  191. /*--  文字:  《  --*/
  192. /*--  新宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
  193. 0x00,0x10,0x00,0x24,0x00,0x48,0x00,0x90,0x01,0x20,0x02,0x40,0x04,0x80,0x09,0x00,
  194. 0x04,0x80,0x02,0x40,0x01,0x20,0x00,0x90,0x00,0x48,0x00,0x24,0x00,0x10,0x00,0x00,

  195. /*--  文字:  長  --*/
  196. ……………………

  197. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有程序51hei提供下載:
多字左移測試.rar (19.4 KB, 下載次數: 20)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久精品 | 天堂久 | 亚洲精品一区二区二区 | 久久看片 | 色视频网站免费 | 91美女在线| 黄片毛片免费观看 | 久久久久久久99 | 精品国产一区二区三区久久久蜜月 | 久久一区精品 | 国产精品美女久久久久久免费 | 精品一区二区三区在线观看国产 | 又爽又黄axxx片免费观看 | 在线欧美一区二区 | 日韩精品视频在线观看一区二区三区 | 久久男人| 一区二区影视 | 日本久久久影视 | 超碰97免费观看 | 中文字幕免费在线 | 国产精品久久久久久久久免费高清 | 国产精品国产a级 | 久草新视频 | 成人在线观看免费爱爱 | 国产高清精品一区二区三区 | 在线观看黄色电影 | 久久久亚洲一区 | 亚洲国产精品久久久久婷婷老年 | 在线a视频 | 欧美高清dvd| 日韩色在线 | 18成人在线观看 | 国产精品欧美一区二区 | 欧美激情欧美激情在线五月 | 久久精品一区二区三区四区 | 国产福利资源在线 | 99re在线视频免费观看 | 中文字幕成人在线 | 国产欧美精品 | 精品在线播放 | 欧美另类视频 |