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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于AT89c51的16×16點陣設計原理圖+程序

[復制鏈接]
跳轉到指定樓層
樓主
使用四塊8×8的點陣拼成16×16的點陣,用了兩個譯碼器,只設置了三個字(改字可以用字模轉換器)按鍵控制左移、右移、暫停、啟動。

電路原理圖如下:


單片機源程序如下:
  1. /************************************************
  2. 16x16點陣漢字滾動顯示
  3. ************************************************/
  4. #include <reg51.h>
  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. sbit LA=P1^0;                                    //138譯碼器地址選擇引腳
  8. sbit LB=P1^1;
  9. sbit LC=P1^2;
  10. sbit LD=P1^3;
  11. sbit k1=P3^6;                                    //啟動或暫停按鍵
  12. sbit k2=P3^7;                                    //改變方向按鍵
  13. bit  fx=0;                                       //滾動方向
  14. uint index=0;                                    //列掃描索引

  15. uchar code hztab[]={
  16.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空格
  17.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  18.    
  19.     0x08,0x04,0x10,0x04,0x20,0x24,0x40,0x24,0xfc,0x24,0xa2,0x24,0x22,0xfd,0x22,0x26, //老
  20.     0x42,0x24,0x42,0x2c,0x42,0x14,0x82,0x24,0x1e,0x44,0x00,0x04,0x00,0x04,0x00,0x00,
  21.    
  22.     0x00,0x00,0xe1,0x3f,0x02,0x00,0x0c,0x00,0xf0,0xff,0x00,0x00,0x00,0x40,0xf8,0x47, //師
  23.     0x00,0x44,0x00,0x44,0xff,0x7f,0x10,0x44,0x08,0x44,0xf0,0x47,0x00,0x40,0x00,0x00,
  24.    
  25.     0x02,0x08,0x44,0x08,0xa8,0x0f,0x10,0xf8,0x68,0x08,0x86,0x0f,0x00,0x00,0x00,0x01, //好
  26.     0x02,0x41,0x01,0x41,0xfe,0x47,0x00,0x49,0x00,0x51,0x00,0x61,0x00,0x01,0x00,0x00,
  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. };

  31. //===================函數聲明====================
  32. void T0_Init();                                  //定時器0初始化
  33. void delayus(uint us);                           //延時函數
  34. void keyscan();                                  //按鍵掃描函數

  35. //====================主程序=====================
  36. void main()
  37. {
  38.     uchar i,j;
  39.     T0_Init();                                   //定時器0初始化
  40.     while(1)
  41.     {
  42.         keyscan();                               //按鍵掃描
  43.         for(i=0;i<16;i++)                        //點陣16列
  44.         {
  45.             LA=i&0x01;                           //用級聯138進行列選
  46.             LB=i&0x02;
  47.             LC=i&0x04;
  48.             LD=i&0x08;
  49.             j=index+i;                           //定位當前要顯示的列
  50.             P0=hztab[j*2+1];                     //發送點陣數據
  51.             P2=hztab[j*2];                       //共兩個字節
  52.             delayus(100);                        //延時
  53.             P0=P2=0x00;                          //消影
  54.         }
  55.         delayus(100);                            //延時
  56.     }
  57. }

  58. //=================定時器0初始化=================
  59. void T0_Init()
  60. {
  61.     TMOD=0x01;                                   //定時器0,工作方式1
  62.     TH0=(65536-10000)/256;                       //定數器初值
  63.     TL0=(65536-10000)%256;                       //10ms定時
  64.     ET0=1;                                       //打開定時器0中斷允許
  65.     EA=1;                                        //打開總中斷允許
  66.     TR0=0;                                       //暫不啟動定時器0
  67. }

  68. //===============定時中斷0服務程序===============
  69. void timer0() interrupt 1
  70. {
  71.     static uchar tick=0;                         //嘀嗒計時
  72.     TH0=(65536-10000)/256;                       //重裝裝初值
  73.     TL0=(65536-10000)%256;                       //10ms定時
  74.     tick++;                                      //計數
  75.     if(tick==5)                                  //5次
  76.     {
  77.         tick=0;                                  //清0
  78.         if(fx==0)index=(index+1)%64;             //若方向為左移,則掃描線加1
  79.         else index=(index-1+64)%64;              //否則掃描線減1
  80.     }
  81. }

  82. //===================延時函數====================
  83. void delayus(uint us)
  84. {
  85.     while(us--);
  86. }

  87. //=================按鍵掃描函數==================
  88. void keyscan()
  89. {
  90.     if(k1==0)                                    //檢測k1是否按下
  91.     {
  92.         delayus(100);                            //延時消抖
  93.         if(k1==0)                                //確認k1被按下
  94.         {
  95.             TR0=~TR0;                            //定時器啟停反轉
  96.             while(k1==0);                        //等待按鍵松開
  97.         }
  98.     }
  99.     if(k2==0)                                    //檢測k2是否按下
  100.     {
  101.         delayus(100);                            //延時消抖
  102.         if(k2==0)                                //確認k2被按下
  103.         {
  104.             fx=~fx;                              //方向反轉
  105.             while(k2==0);                        //等待按鍵松開
  106.         }
  107.     }
  108. }
復制代碼

所有資料51hei提供下載:
16×16點陣.zip (22.41 KB, 下載次數: 59)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一级免费电影 | 国产一级视频 | 国产1区2区| 蜜桃视频一区二区三区 | 综合久久综合久久 | 91精品亚洲 | 亚洲视频 欧美视频 | 男人午夜视频 | www久久 | 日韩精品人成在线播放 | 毛片a区 | 91在线观看免费 | 日韩免费视频一区二区 | 国产探花在线观看视频 | 亚欧午夜| 中文视频在线 | 成年男女免费视频网站 | 永久精品 | 国产午夜在线观看 | 日韩中文在线 | 一级毛片免费视频观看 | 中文字幕亚洲一区二区三区 | 久久久国产一区二区三区 | 范冰冰一级做a爰片久久毛片 | 国产一区二区在线免费观看 | 亚洲欧美日韩精品久久亚洲区 | 国产高清免费视频 | 国产一区免费视频 | 国产清纯白嫩初高生在线播放视频 | 日本又色又爽又黄又高潮 | 成人激情视频免费观看 | 毛片免费在线 | 亚洲免费精品 | 精品一区二区三区四区五区 | 欧美黄视频 | 欧美日韩高清在线观看 | 亚洲精品乱码 | 99re在线视频观看 | 亚洲三区视频 | 亚洲精品视频免费 | 精品国产伦一区二区三区观看说明 |