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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機POV的旋轉LED燈程序

[復制鏈接]
跳轉到指定樓層
樓主
最近剛結束旋轉LED燈的設計,先來說說什么是POV:
視覺暫留(POV)即視覺的短暫停留。人眼觀看物體時,物體的像會成到視網膜上。視網膜上的光感細胞將光信號轉換為生物電信號通過視神經傳給大腦。然而,當物體移去后,視神經對物體的印象不會立刻消失。現代醫學已經證明,人眼看到一個物體后,在1/24秒內不會消失。這種現象叫做視覺暫留,也叫人眼的惰性。這種惰性會使人的視覺產生重疊,使物體“變靜為動”.所以,以每秒超過24幀畫面以上連續呈現靜態畫面時,我們會看到平滑連續的動態畫面。

基于視覺暫留的旋轉線陣LED顯示屏指的是利用人眼的視覺暫留效應[1],通過機械掃描的方式讓一列線陣LED在正確的位置上使特定的LED發光而形成圖形、文字等的一種顯示屏。按其機械結構,旋轉線陣LED顯示屏主要有圓形[2~3]和圓柱面兩種基本類型(另外還有球形、漏斗形等顯示屏,它們實質上只是圓柱形顯示屏的一種特例)。
設計采用2塊89C52單片機,一塊用于減速電機控制,另一塊用于LED顯示掃描,廢話不多說,先上proteusLED部分原理圖:


接下來是proteus電機控制部分

整個項目包括原理圖和程序都在壓縮包,個人認為作為51單片機練手項目挺合適,希望大家指正。
貼一部分程序:

1、接線說明
sbit HR_Sensor  = P3^2;   //接一個固定脈沖(原本是霍爾傳感器)
sbit Beep = P2^0;         //蜂鳴器 NPN三極管開關電路
sbit Key_Wake = P2^1;     //停止開啟切開關換  按鍵以這個命名
sbit Led_H = P0;          //P0、P1口各接8個LED燈(記得串接1K分壓電阻)
sbit Led_L = P1;

2、Key_Wake按下會切換運行狀態
  1. /**************************************************************************************
  2. *Name:旋轉LED
  3. *Version:1.0
  4. *Date:
  5. *BY:C
  6. ***************************************************************************************/
  7. #include <reg52.h>                            //此文件中定義了單片機的一些特殊功能寄存器

  8. typedef unsigned int uint;           //對數據類型進行聲明定義
  9. typedef unsigned char uchar;

  10. sbit HR_Sensor  = P3^2;   //霍爾傳感器
  11. sbit Beep = P2^0;         //蜂鳴器
  12. sbit Key_Wake = P2^1;     //喚醒按鍵
  13. sbit Led_H = P0;          //所有Led正極接一起接VCC
  14. sbit Led_L = P1;

  15. uchar Select = 0;

  16. //陽碼
  17. uchar code ASCII0[32] = {0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x00,0xFE,0xFD,0xFE,0x7B,0xFA,
  18.                          0xB7,0xF6,0xDF,0xEE,0xEF,0xDE,0xF7,0xBE,0xFB,0xFE,0xFB,0xFE,0xFD,0xFE,0xFD,
  19.                          0xFF,0xFF};   //“長”

  20. uchar code ASCII1[32] = {0xFD,0xDF,0xDD,0xDF,0xD5,0xBF,0xD5,0x7F,0xD4,0x80,0xD5,0xB6,0xD1,0xB6,0x05,
  21.                          0xB6,0xD5,0xB6,0xD5,0xB6,0xD4,0x80,0xD5,0x7F,0xD5,0xBF,0xDD,0xDF,0xFD,0xDF,
  22.                          0xFF,0xFF};    // “春”

  23. uchar code ASCII2[32] = {0xDF,0xFB,0xDE,0xF9,0xDE,0xFB,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xFF,0xFD,0x80,
  24.                          0xDD,0xB6,0xDD,0xB6,0xDD,0x80,0x01,0xB6,0xDD,0xB6,0xDD,0x80,0xDD,0xFF,0xFD,
  25.                          0xFF,0xFF};   //“理”

  26. uchar code ASCII3[32] = {0xFF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xC0,
  27.                          0x03,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xFF,0xFB,
  28.                          0xFF,0xFF};   //“工”

  29. uchar code ASCII4[32] = {0xFB,0xFE,0xFB,0xFE,0xFB,0xFD,0xFB,0xFB,0xFB,0xF7,0xFB,0xCF,0xFB,0x3F,0x00,
  30.                          0xFF,0xFB,0x3F,0xFB,0xCF,0xFB,0xF7,0xFB,0xFB,0xFB,0xFD,0xFB,0xFE,0xFB,0xFE,
  31.                          0xFF,0xFF};   //“大”

  32. uchar code ASCII5[32] = {0xFD,0xDF,0xF3,0xDF,0x77,0xDF,0x96,0xDF,0xF6,0xDF,0xF6,0xDD,0x76,0xDE,0x96,
  33.                          0x81,0xF6,0x9F,0xF6,0x5F,0xE6,0xDF,0xD7,0xDF,0x37,0xDF,0xF5,0xDF,0xF3,0xDF,
  34.                          0xFF,0xFF};   //“學”



  35. /*******************************************************************************
  36. * 函 數 名         : delayxms
  37. * 函數功能                     : 延時函數
  38. * 輸入             :
  39. * 輸出             :
  40. *******************************************************************************/
  41. void Delayxms(uint xms)
  42. {
  43.          uchar a = 0,b = 0;
  44.          uint i = 0;
  45.         
  46.    for(i=xms;i>0;i--)
  47.         {
  48.                  for(b=199;b>0;b--)
  49.                                         for(a=1;a>0;a--)
  50.                                     ;
  51.         }
  52. }

  53. /*******************************************************************************
  54. * 函 數 名         : delayxms
  55. * 函數功能                     : 延時函數
  56. * 輸入             :
  57. * 輸出             :
  58. *******************************************************************************/
  59. void Beep_Test(uint xms)
  60. {
  61.         Beep = 1;
  62.         Delayxms(xms);
  63.         Beep = 0;
  64. }

  65. /*******************************************************************************
  66. * 函 數 名         : Key_Scan
  67. * 函數功能                     : 延時函數
  68. * 輸入             :
  69. * 輸出             :
  70. *******************************************************************************/
  71. void Key_Scan()
  72. {
  73.         if(Key_Wake==0)
  74.         {
  75.                 Delayxms(12);
  76.                 if(Key_Wake==0)
  77.                 {
  78.                         Beep_Test(200);
  79.                   Select++;
  80.                         if(Select>1)
  81.                         {
  82.                                 Select = 0;     //清零
  83.                         }
  84.                 }
  85.         }
  86. }

  87. /*******************************************************************************
  88. * 函 數 名         : Int0_Init()
  89. * 函數功能                     : 設置外部中斷0
  90. * 輸    入         : 無
  91. * 輸    出         : 無
  92. *******************************************************************************/
  93. void Int0_Init()
  94. {
  95.         IT0 = 1;//跳變沿出發方式(下降沿)
  96.         EX0 = 1;//打開INT0的中斷允許。        
  97.         EA = 1;//打開總中斷        
  98. }


  99. void main()
  100. {        
  101.         uchar i,j;
  102.         
  103.         Int0_Init();    //打開外部中斷0
  104.         Beep_Test(1000); //啟動測試
  105.         P0 = 0X00;      //全亮測試
  106.         P1 = 0X00;
  107.         Delayxms(3000);
  108.         
  109.         while(1)
  110.         {
  111.                  Key_Scan();
  112.                  if(Select==0)//顯示字符
  113.                 {
  114.                         for(i=0;i<6;i++)
  115.                         {
  116.                                 switch(i)
  117.                                 {
  118.                                         case 0:    //第一個字
  119.                                         {
  120.                                                 for(j=0;j<31;j++)
  121.                                                 {
  122.                                                         P0 = ASCII0[j];
  123.                                                         P1 = ASCII0[j+1];
  124.                                                 }
  125.                                                 break;
  126.                                         }
  127.                                        
  128.                                         case 1:    //第二個字
  129.                                         {
  130.                                                 for(j=0;j<31;j++)
  131.                                                 {
  132.                                                         P0 = ASCII1[j];
  133.                                                         P1 = ASCII1[j+1];
  134.                                                 }
  135.                                                 break;
  136.                                         }
  137.                                 
  138.                                         case 2:   
  139.                                         {
  140.                                                 for(j=0;j<31;j++)
  141.                                                 {
  142.                                                         P0 = ASCII2[j];
  143.                                                         P1 = ASCII2[j+1];
  144.                                                 }
  145.                                                 break;
  146.                                         }
  147.                                        
  148.                                         case 3:   
  149.                                         {
  150.                                                 for(j=0;j<31;j++)
  151.                                                 {
  152.                                                         P0 = ASCII3[j];
  153.                                                         P1 = ASCII3[j+1];
  154.                                                 }
  155.                                                 break;
  156.                                         }
  157.                                        
  158.                                         case 4:   
  159.                                         {
  160.                                                 for(j=0;j<31;j++)
  161.                                                 {
  162.                                                         P0 = ASCII4[j];
  163.                                                         P1 = ASCII4[j+1];
  164.                                                 }
  165.                                                 break;
  166.                                         }
  167.                                        
  168.                                         case 5:   
  169.                                         {
  170.                                                 for(j=0;j<31;j++)
  171.                                                 {
  172.                                                         P0 = ASCII5[j];
  173.                                                         P1 = ASCII5[j+1];
  174.                                                 }
  175.                                                 break;
  176.                                         }
  177.                                 }
  178.                         }
  179.                 }
  180.                         
  181.                 if(Select==1)      //待機模式
  182.                 {
  183.                         P0 = 0;     
  184.                         P1 = 0;               
  185.                 }
  186.                                        
  187.         }
  188.                
  189. }

  190. /*******************************************************************************
  191. * 函 數 名         : Int0()        interrupt 0
  192. * 函數功能                     : 外部中斷0的中斷函數
  193. * 輸    入         : 無
  194. * 輸    出         : 無
  195. *******************************************************************************/

  196. void Int0()        interrupt 0                //外部中斷0的中斷函數
  197. {
  198.         P0 = 0XFF;     //消影
  199.         P1 = 0XFF;
  200. }
復制代碼

POV___LED.zip

2.69 MB, 下載次數: 31, 下載積分: 黑幣 -5

里面只有源程序哦

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

使用道具 舉報

沙發
ID:328014 發表于 2020-5-14 03:41 | 只看該作者
好東東  仿真工程能分享一下嗎?壓縮包里面沒有呢
回復

使用道具 舉報

板凳
ID:752645 發表于 2020-5-15 15:53 | 只看該作者
包含proteus原理圖么
回復

使用道具 舉報

地板
ID:752645 發表于 2020-5-15 17:21 | 只看該作者
有仿真么,求大佬分享
回復

使用道具 舉報

5#
ID:752645 發表于 2020-5-15 17:25 | 只看該作者
求分享仿真
回復

使用道具 舉報

6#
ID:752645 發表于 2020-5-15 23:06 | 只看該作者
求助樓主呀,能給我個聯系方式嗎
回復

使用道具 舉報

7#
ID:752645 發表于 2020-5-16 19:32 | 只看該作者
51hei團團 發表于 2020-5-14 03:41
好東東  仿真工程能分享一下嗎?壓縮包里面沒有呢

我也想要仿真圖,雖然不能進行仿真
回復

使用道具 舉報

8#
ID:752645 發表于 2020-5-16 22:24 | 只看該作者
這個仿真的截圖不太完整啊,求指導
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲高清在线播放 | 国产一区二区三区视频 | 久久久激情 | 色眯眯视频在线观看 | 一级高清 | 精品日韩电影 | 久久久精品一区二区三区 | 久久久久国产精品 | 久久久久久亚洲精品 | 国产亚洲精品久久久久久牛牛 | 成人在线视频一区 | 天天爱天天操 | 久久国产麻豆 | 亚洲精品精品 | 国产激情免费视频 | 在线高清免费观看视频 | 国产精久久久 | 亚洲精品久久久9婷婷中文字幕 | 一级片在线免费播放 | 日韩人体视频 | 91免费电影| 欧美一区二区三区国产精品 | 精品久久久久久久久久久下田 | 成人久久一区 | 午夜av免费| 国产一区二区三区四区五区加勒比 | 欧美黄色网络 | 日韩一区中文字幕 | 中文字幕成人av | 99精品国产一区二区三区 | 亚洲综合色视频在线观看 | 午夜tv免费观看 | 7777在线视频| 久久亚洲欧美日韩精品专区 | 情侣酒店偷拍一区二区在线播放 | 久久综合久 | 一区二区三区四区在线视频 | 亚洲天堂中文字幕 | 免费在线一区二区 | 羞羞视频在线观免费观看 | 欧美一区二区三区在线看 |