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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于單片機16x32點陣左右移動的程序問題

[復制鏈接]
跳轉到指定樓層
樓主
50黑幣
最近自己在學習點陣,點陣顯示也可以顯示自己想要的,可是左右移動實在是搞得不明不白,參考了許多的網上資料,還是丈二的和尚摸不著頭腦,自己的知識水平還是欠缺,自己寫的程序還是有問題的,希望大神給予文獻資料幫助,不勝感激!!!
MCU;STC12C5616AD晶振24.576MHZ,行列使用的是74HC595級聯,


單片機源程序如下:
  1. #include<STC12C5630AD.H>
  2. #include<intrins.h>


  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5.         
  6. #define  SP   5 //移動速度,數字越小越快,數字越大越慢

  7. sbit HSER=P1^4;     //14數據
  8. sbit HSCK=P1^3;     //12鎖存                //行
  9. sbit HRCK=P1^2;     //11時鐘

  10. sbit LSER=P1^7;     //14數據
  11. sbit LSCK=P1^6;     //12鎖存                        //列
  12. sbit LRCK=P1^5;     //11時鐘

  13. uchar code tah[]={

  14. 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  15. 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

  16. };
  17. uchar code tal[]={
  18. 0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"0",0*/

  19. 0xFF,0xFF,0xFF,0xF7,0xF1,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xC1,0xFF,0xFF,/*"1",1*/

  20. 0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDF,0xDF,0xEF,0xF7,0xFB,0xBD,0x81,0xFF,0xFF,/*"2",2*/

  21. 0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xDF,0xE7,0xDF,0xBF,0xBF,0xBD,0xDD,0xE3,0xFF,0xFF,/*"3",3*/

  22. 0xFF,0xFF,0xFF,0xDF,0xCF,0xD7,0xDB,0xDB,0xDD,0xDD,0x81,0xDF,0xDF,0x87,0xFF,0xFF,/*"4",4*/

  23. 0xFF,0xFF,0xFF,0x81,0xFD,0xFD,0xFD,0xE5,0xD9,0xBF,0xBF,0xBD,0xDD,0xE3,0xFF,0xFF,/*"5",5*/

  24. 0xFF,0xFF,0xFF,0xC7,0xDB,0xFD,0xFD,0xE5,0xD9,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"6",6*/

  25. 0xFF,0xFF,0xFF,0x81,0xDD,0xDD,0xEF,0xEF,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xFF,0xFF,/*"7",7*/

  26. 0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,/*"8",8*/

  27. 0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0x9B,0xA7,0xBF,0xBF,0xDB,0xE3,0xFF,0xFF,/*"9",9*/

  28. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  29. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  30. };
  31. void H959(uchar num,uchar num1)        //行
  32. {
  33.         uchar i,k;
  34.         for(i=0;i<8;i++)
  35.         {
  36.                 HSER=num&0x80;
  37.                 num<<=1;
  38.         _nop_();
  39.                 HRCK=0;
  40.         _nop_();
  41.                 HRCK=1;
  42.         HRCK=0;
  43.         }
  44.     for(k=0;k<8;k++)
  45.         {
  46.                 HSER=num1&0x80;
  47.                 num1<<=1;
  48.         _nop_();
  49.                 HRCK=0;
  50.         _nop_();
  51.                 HRCK=1;
  52.         HRCK=0;
  53.         }
  54.     _nop_();
  55.         HSCK=0;
  56.     _nop_();
  57.         HSCK=1;
  58.     HSCK=0;
  59. }
  60. void L959(uchar num,uchar num1,uchar num2,uchar num3)        //列
  61. {
  62.         uchar i,k,j,n;
  63.         for(i=0;i<8;i++)
  64.         {
  65.                 LSER=num&0x80;
  66.                 num<<=1;
  67.         _nop_();
  68.                 LRCK=0;
  69.         _nop_();
  70.                 LRCK=1;
  71.         LRCK=0;
  72.         }
  73.     for(k=0;k<8;k++)
  74.         {
  75.                 LSER=num1&0x80;
  76.                 num1<<=1;
  77.         _nop_();
  78.                 LRCK=0;
  79.         _nop_();
  80.                 LRCK=1;
  81.         LRCK=0;
  82.         }
  83.     for(j=0;j<8;j++)
  84.         {
  85.                 LSER=num2&0x80;
  86.                 num2<<=1;
  87.         _nop_();
  88.                 LRCK=0;
  89.         _nop_();
  90.                 LRCK=1;
  91.         LRCK=0;
  92.         }
  93.     for(n=0;n<8;n++)
  94.         {
  95.                 LSER=num3&0x80;
  96.                 num3<<=1;
  97.         _nop_();
  98.                 LRCK=0;
  99.         _nop_();
  100.                 LRCK=1;
  101.         LRCK=0;
  102.         }
  103.     _nop_();
  104.         LSCK=0;
  105.     _nop_();
  106.         LSCK=1;
  107.     LSCK=0;
  108. }
  109. void delay1ms(void)   //誤差 0us
  110. {
  111.     unsigned char a,b;
  112.     for(b=195;b>0;b--)
  113.         for(a=30;a>0;a--);
  114. }
  115. void main()   
  116. {
  117.     HRCK=0;LRCK=0;

  118.         while(1)
  119.         {
  120.         uchar k,j,i,n;
  121.         for(j=0;j<96;j++)
  122.         {
  123.             for(n=0;n<SP;n++)
  124.             {
  125.         for(k=0;k<16;k++)
  126.         {
  127.             i=j+k;
  128.             L959(tal[i+48],tal[i+32],tal[i+16],tal[i]);
  129.            delay1ms();
  130.             H959(tah[k+8],tah[k]);
  131.         }    }
  132.     }
  133.   }
復制代碼

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

使用道具 舉報

沙發
ID:592807 發表于 2021-2-20 13:55 | 只看該作者
這東西要看硬件才知道怎么改軟件
回復

使用道具 舉報

板凳
ID:709561 發表于 2021-2-21 10:45 | 只看該作者
黃youhui 發表于 2021-2-20 13:55
這東西要看硬件才知道怎么改軟件

行是兩個74HC595級聯,列是4個74HC595級聯,點陣是16x32的,行是陽極列是陰極,自己對程序還不是很理解無法寫出左右移動程序,望請大神給予幫助!!!
回復

使用道具 舉報

地板
ID:332444 發表于 2021-2-21 11:16 | 只看該作者
程序位置不對引起的,上一半與下一半對調試看
回復

使用道具 舉報

5#
ID:709561 發表于 2021-2-21 14:21 | 只看該作者
xianfajushi 發表于 2021-2-21 11:16
程序位置不對引起的,上一半與下一半對調試看

按你說的已經嘗試過了,但還是不對出現了錯誤,還請大神給予幫助!!!
回復

使用道具 舉報

6#
ID:785191 發表于 2021-2-21 23:28 | 只看該作者
1、程序中定義函數變量應該在第一行。2、你的點陣沒有消隱。(用數碼管消隱的方法)3、個人覺得學習點陣只是為了了解一下其工作原理,了解595的用法。4、如果你想實現左移右移有許多其它好用的外設(例如OLED)5、個人建議不要學51太長時間,學會定時器、中斷、串口通信、就行了,至于外設主要的是它的思想,程序上問題是自己的問題需要積累,個人建議買本C primier Plus,學著查著,慢慢就會了。之后就直接上手ARM內核的芯片(個人推薦STM32),你會對單片機有全新的理解。
回復

使用道具 舉報

7#
ID:592807 發表于 2021-2-22 08:31 | 只看該作者
1P1P 發表于 2021-2-21 10:45
行是兩個74HC595級聯,列是4個74HC595級聯,點陣是16x32的,行是陽極列是陰極,自己對程序還不是很理解無 ...

你定義一個二維數組記錄每一個每一個燈的狀態,根據燈的改變數組,然后再讀出數組給595賦值,這是最簡單有效的方法。可能延時會比較大。
復雜點的方法就是,你左右移動也就是Y軸不變LED在X軸移動,這時候你Y軸的595可以變,然后計算你的X軸的595要移動幾個單位。
回復

使用道具 舉報

8#
ID:592807 發表于 2021-2-22 09:25 | 只看該作者
黃youhui 發表于 2021-2-22 08:31
你定義一個二維數組記錄每一個每一個燈的狀態,根據燈的改變數組,然后再讀出數組給595賦值,這是最簡單 ...

說錯了,Y軸不變X變
回復

使用道具 舉報

9#
ID:390416 發表于 2021-2-22 17:12 | 只看該作者
回復

使用道具 舉報

10#
ID:390416 發表于 2021-2-22 17:19 | 只看該作者
回復

使用道具 舉報

11#
ID:839835 發表于 2021-2-23 09:46 | 只看該作者
讓上一次的燈光等于要移動的燈光的數組就可以實現移動。比如lcd[i+1]=lcd[i]
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 草比av| 久久精品中文字幕 | 国产精品污www一区二区三区 | 男女免费在线观看视频 | 亚洲国产精品一区二区三区 | 二区三区视频 | 黄a在线播放 | 久久久久久免费免费 | 羞羞视频免费观看 | 精品国产乱码久久久 | 欧美九九九| 成人免费观看男女羞羞视频 | 中文字幕在线观看日韩 | 神马影院一区二区三区 | 亚洲国产成人精品久久久国产成人一区 | 日韩电影一区 | 中文区中文字幕免费看 | 亚洲视频在线观看 | 一区二区国产在线观看 | 亚洲成人在线免费 | 成人黄色在线观看 | 欧美一级在线 | 欧美日韩不卡合集视频 | 久久激情五月丁香伊人 | 中文字幕精品一区二区三区在线 | 欧美aⅴ| 午夜精品视频 | 毛片在线免费 | 欧美一级片黄色 | 国产精品一区二区视频 | 久久久久久国模大尺度人体 | 欧美久久一区 | 久久久久91| 成人午夜免费网站 | 一本色道久久综合亚洲精品高清 | 人人干人人超 | 就操在线 | www国产亚洲精品 | 国产一区二区 | 99热这里都是精品 | 色资源站|