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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機16*16點陣滾動顯示Proteus仿真+代碼

[復制鏈接]
跳轉到指定樓層
樓主
16*16點陣滾動顯示制作出來的實物圖如下:


仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. //宏定義
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define zishu 10        //漢字數,兩個字符是一個漢字,如果有單個字符,那么就加0.5

  5. //包含頭文件
  6. #include <reg51.h>
  7. #include <intrins.h>

  8. //管腳定義
  9. //154
  10. sbit A_=P0^0;                   //74HC154的A
  11. sbit B_=P0^1;                   //74HC154的B
  12. sbit C_=P0^2;                   //74HC154的C
  13. sbit D_=P0^3;                   //74HC154的D
  14. sbit G2=P0^7;                //74HC154的使能        低電平有效
  15. //595
  16. sbit SI=P0^6;//數據腳
  17. sbit SCK=P0^5;//上升沿時數據寄存器的數據移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器數據不變
  18. sbit RCK=P0^4;//上升沿時移位寄存器的數據進入數據存儲寄存器,下降沿時存儲寄存器數據不變。通常我將
  19.                                   //RCK置為低電平,當移位結束后,在RCK端產生一個正脈沖(5V時,大于幾十納秒就行了。我
  20.                                   //通常都選微秒級),更新顯示數據。

  21. //函數聲明
  22. void Init595();
  23. void Write_byte595(uchar temp);
  24. void WriteS(uchar data1,uchar data2);
  25. void Wei_154(uchar W);
  26. void delay(uint z);

  27. //漢字數組
  28. uchar code HanZi[]=
  29. {
  30. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/

  31. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",1*/         //這兩行不要動改字時保留

  32. 0xFF,0xFF,0x80,0x00,0xBF,0xFF,0xB7,0xFF,0xB6,0x07,0xB6,0xEF,0xB6,0xEF,0xB6,0xEF,
  33. 0xB6,0xEF,0xB6,0xEF,0xB6,0x07,0xB7,0xFD,0xBF,0xFE,0x80,0x01,0xFF,0xFF,0xFF,0xFF,/*"同",0*/

  34. 0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,
  35. 0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFC,0xFF,0xFE,0xFF,0xFF,0xFF,/*"一",1*/

  36. 0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xCF,0xFF,0x38,0x01,
  37. 0xDF,0xFF,0xEF,0xFF,0xF7,0xFF,0xFB,0xFF,0xF9,0xFF,0xFC,0xFF,0xFD,0xFF,0xFF,0xFF,/*"個",2*/

  38. 0xFB,0xFF,0xFB,0xFF,0xFB,0xFF,0x80,0x03,0xFB,0xFB,0xFB,0xFB,0x80,0x1B,0xFB,0xBB,
  39. 0xFB,0xBB,0xFB,0xBB,0xFB,0xBB,0x80,0x1B,0xFB,0xF3,0xFB,0xFB,0xFB,0xFF,0xFF,0xFF,/*"世",3*/

  40. 0xFF,0xFF,0xFF,0xEF,0xFF,0xEF,0x00,0xDE,0x6D,0xDD,0x6D,0xBB,0x6D,0x47,0x00,0xFF,
  41. 0x6C,0xFF,0x6D,0x40,0x6D,0xBF,0x6D,0xBF,0x00,0xDF,0xFF,0xCF,0xFF,0xDF,0xFF,0xFF,/*"界",4*/

  42. 0xFF,0xFF,0x80,0x00,0xBF,0xFF,0xB7,0xFF,0xB6,0x07,0xB6,0xEF,0xB6,0xEF,0xB6,0xEF,
  43. 0xB6,0xEF,0xB6,0xEF,0xB6,0x07,0xB7,0xFD,0xBF,0xFE,0x80,0x01,0xFF,0xFF,0xFF,0xFF,/*"同",5*/

  44. 0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,
  45. 0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFC,0xFF,0xFE,0xFF,0xFF,0xFF,/*"一",6*/

  46. 0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xCF,0xFF,0x38,0x01,
  47. 0xDF,0xFF,0xEF,0xFF,0xF7,0xFF,0xFB,0xFF,0xF9,0xFF,0xFC,0xFF,0xFD,0xFF,0xFF,0xFF,/*"個",7*/

  48. 0xFD,0xFF,0xDD,0xFE,0xDB,0xEE,0xD7,0xEE,0x00,0x9D,0xD6,0x5D,0xD9,0x6B,0xFD,0x73,
  49. 0xDB,0x77,0xD7,0x6F,0x00,0x5F,0xCF,0x3F,0xD3,0x7F,0xD9,0xFF,0xDB,0xFF,0xFF,0xFF,/*"夢",8*/

  50. 0xEF,0x7F,0xEC,0xFD,0xE3,0xF1,0x00,0x7F,0xE7,0xE3,0xE9,0xFD,0xEF,0xFD,0xFF,0xDD,
  51. 0x80,0x65,0xAB,0x7D,0xAB,0x7D,0xAB,0x79,0xAB,0x7F,0x80,0x6F,0xFF,0xF3,0xFF,0xFF,/*"想",9*/

  52. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",10*/

  53. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",11*/                //這兩行不要動改字時保留
  54. };
  55. //主函數
  56. void main()
  57. {
  58.         uchar i=1,j=0;
  59.         uint X=0;
  60.         //595c初始化
  61.         Init595();
  62.         //循環演示
  63.         while(1)          //循環
  64.         {
  65.                 for(j=0;j<10;j++)                                                                                        //更改j<10為j<5,可以加速
  66.                 {
  67.                         for(i=1;i<17;i++)                                                                                 //一個for循環,分別選中16個列
  68.                         {
  69.                                 WriteS(0xff,0xff);                                                                        //消影
  70.                                 Wei_154(i);                                                                                        //選中列數據
  71.                                 WriteS(HanZi[i*2-2+2*X],HanZi[i*2-1+2*X]);                        //顯示內容
  72.                                 Wei_154(i);                                                                                        //再選中列數據
  73.                                 delay(7);                                                                                        //延時的時間就是顯示的時間
  74.                                 G2=0;                                                                                                //打開列選
  75.                         }
  76.                 }
  77.                 X++;                                                                                                                //顯示左移
  78.                 if(X==8*((zishu+1)*2))                                                                                                        //左移到最后一個字--更改字時,8*n中的n的取值為:字符數+2(一個漢字=兩個字符,字母數字為1個字符)
  79.                         X=0;                                                                                                        //重頭開始
  80.         }
  81. }

  82. //初始化595
  83. void Init595()
  84. {
  85.         SI=1;
  86.         SCK=0;
  87.         RCK=0;
  88. }

  89. void Write_byte595(uchar temp)                //寫數據到595
  90. {
  91.         uchar i,data_=temp;
  92.         G2=1;                                                        //關閉列選
  93.         for(i=0;i<8;i++)                                //傳值8位
  94.         {
  95.                 if(data_&0x01==0x01)                //判斷低位為1
  96.                 {
  97.                         SI=1;                                        //數據腳就寫入1
  98.                 }
  99.                 else                                                 //判斷低位為0
  100.                 {
  101.                         SI=0;                                        //數據腳寫入0
  102.                 }
  103.                 //產生一個上升沿
  104.                 SCK=0;
  105.                 SCK=1;
  106.                 SCK=0;
  107.                 data_>>=1;                                        //將要寫入的數據右移一位
  108.         }
  109.         RCK=0;//顯示數據
  110.         RCK=1;
  111.         RCK=0;
  112. }

  113. //595寫入一行的字節
  114. void WriteS(uchar data1,uchar data2)
  115. {
  116.         Write_byte595(data2);                        //寫入高8位數據
  117.         Write_byte595(data1);                        //寫入低8位數據                 一共是一行16個數據
  118. }

  119. //154位選驅動
  120. void Wei_154(uchar W)
  121. {
  122.         G2=0;//使能
  123.         switch(W)                //判斷W的值,選中不同的列線
  124.         {
  125.                 case 16:        //如果W=16
  126.                 {
  127.                         A_=1;
  128.                         B_=1;
  129.                         C_=1;
  130.                         D_=1;        //1111:選中第16列
  131.                         break;               
  132.                 }
  133.                 case 15:
  134.                 {
  135.                         A_=0;
  136.                         B_=1;
  137.                         C_=1;
  138.                         D_=1;        //1110:選中第15列
  139.                         break;               
  140.                 }
  141.                 case 14:
  142.                 {
  143.                         A_=1;
  144.                         B_=0;
  145.                         C_=1;
  146.                         D_=1;        //1101:選中第14列       
  147.                         break;               
  148.                 }
  149.                 case 13:
  150.                 {
  151.                         A_=0;
  152.                         B_=0;
  153.                         C_=1;
  154.                         D_=1;        //1100:選中第13列       
  155.                         break;               
  156.                 }
  157.                 case 12:
  158.                 {
  159.                         A_=1;
  160.                         B_=1;
  161.                         C_=0;
  162.                         D_=1;        //1011:選中第12列       
  163.                         break;               
  164.                 }
  165.                 case 11:
  166.                 {
  167.                         A_=0;
  168.                         B_=1;
  169.                         C_=0;
  170.                         D_=1;        //1010:選中第11列       
  171.                         break;               
  172.                 }
  173.                 case 10:
  174.                 {
  175.                         A_=1;
  176.                         B_=0;
  177.                         C_=0;
  178.                         D_=1;        //1001:選中第10列       
  179.                         break;               
  180.                 }
  181.                 case 9:
  182.                 {
  183.                         A_=0;
  184.                         B_=0;
  185.                         C_=0;
  186.                         D_=1;        //1000:選中第9列       
  187.                         break;               
  188.                 }
  189.                 case 8:
  190.                 {
  191.                         A_=1;
  192.                         B_=1;
  193.                         C_=1;
  194.                         D_=0;        //0111:選中第8列       
  195.                         break;               
  196.                 }
  197.                 case 7:
  198.                 {
  199.                         A_=0;
  200.                         B_=1;
  201.                         C_=1;
  202.                         D_=0;        //0110:選中第7列       
  203.                         break;               
  204.                 }
  205.                 case 6:
  206.                 {
  207.                         A_=1;
  208.                         B_=0;
  209.                         C_=1;
  210.                         D_=0;        //0101:選中第6列       
  211.                         break;               
  212.                 }
  213.                 case 5:
  214.                 {
  215.                         A_=0;
  216.                         B_=0;
  217.                         C_=1;
  218.                         D_=0;        //0100:選中第5列       
  219.                         break;               
  220.                 }
  221.                 case 4:
  222.                 {
  223.                         A_=1;
  224.                         B_=1;
  225.                         C_=0;
  226.                         D_=0;        //0011:選中第4列       
  227.                         break;               
  228.                 }
  229.                 case 3:
  230.                 {
  231. ……………………

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

所有資料51hei提供下載:
42-16乘16點陣滾動顯示.7z (1.04 MB, 下載次數: 70)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久国产精品 | a欧美| 国产免费色 | 亚洲精品电影在线观看 | 日韩精品 电影一区 亚洲 | 九九久久精品 | 欧美日韩在线电影 | 精品国产一区二区三区久久久蜜月 | 国产精品精品视频一区二区三区 | 一道本一区二区 | 午夜精品91| 伊人成人免费视频 | 综合久久久久 | 欧美xxxx色视频在线观看免费 | 噜噜噜噜狠狠狠7777视频 | 最近中文字幕在线视频1 | 999www视频免费观看 | 欧洲一区在线观看 | 亚洲免费精品 | 狠狠的干狠狠的操 | 天天av综合 | 亚洲精品久久久一区二区三区 | 欧美a级成人淫片免费看 | 亚洲 欧美 日韩 在线 | 国产网站在线播放 | 精品无码久久久久久国产 | 久久久久国| 97精品一区二区 | 久久青青 | 福利视频日韩 | 国产精品中文字幕在线 | 色香婷婷 | 国产欧美精品一区二区色综合朱莉 | 午夜精品一区二区三区在线观看 | 色永久| 亚洲第一成年免费网站 | 久久国产精品视频免费看 | 中文字幕第一页在线 | 中文字幕成人在线 | 亚洲精品一区国产精品 | 免费看黄色片 |