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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

大屏幕信息顯示系統實驗

[復制鏈接]
跳轉到指定樓層
樓主
ID:354113 發表于 2018-6-19 10:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實驗目的
通過仿真搭建和實物搭建相結合,完成LED大屏幕顯示的單片機系統設計。
一、      實驗內容
(1) 設計一個16*64個LED長方形顯示點陣屏幕,顯示“重慶交通大學歡迎您”,顯示方方式:i.實現固定顯示“重慶交大”;ii.從右到左移動“重慶交通大學歡迎您”字符串。
(2) 用Proteus仿真軟件搭建仿真硬件電路圖。驗證編制軟件。
(3) 用prote199s布原理圖、建PCB板圖。
(4) 實物器件焊接搭建。
二、      電路設計圖
(1)   元件清單
  
AT89C51 [1]
        
74HC595 [8]
        
MATRIX-8X8-GREEN [16]
  
  
74HC154 [1]
        
普通電容  [22pF][2]
        
電解電容 [10uF][1]
  
  
晶振 [12MHZ][1]
        
電阻 [10K][1]
        
電源
  
(2)   元件使用
                      i.           74HC595
Figure 1 74HC595引腳圖
             74HC595是一個8位串行輸入、并行輸出的位移緩存器:并行輸出為三態輸出。說明如下:
Q0~Q7      8位并行數據輸出端
GND         接地
Q7’           串行數據輸出
MR           復位引腳,低電平有效
SH_CP 數據輸入時鐘線,上升沿有效
ST_CP        輸出存儲器鎖存時鐘線,上升沿有效
OE              輸出使能端,低電平有效
DS              串行數據輸入
VCC           電源
在74HC595工作時,也就是OE為低電平時,如果這個時候需要將送到74HC595的DS端口的數據發送出去,需要端口SH_CP來一個上升沿信號,那么它將把DS上的數據移入移位寄存器中,先送低位,后送高位。
如果此時ST_CP再來一個上升沿,那么74HC595就會把移位寄存器中的數據送入鎖存器發送。從SH_CP產生一上升沿(移入數據)和ST_CP產生一上升沿(輸出數據)是二個獨立過程,實際應用時互不干擾。即可輸出數據的同時移入數據。
在本次實驗中,用AT89C51的P20、P21和P22口去控制級聯的74HC595,級聯的方式是:
P20、P21和P22口分別連接第一個74HC595的SH_CP、DS以及ST_CP端,由P21口發送串行數據。之后將第一個74HC595的Q7’端再和第二個74HC595的DS端相連,第二個74HC595的SH_CP和ST_CP是和第一個74HC595的接法一致。
之后的6個74HC595都是這種接法,就實現了74HC595的級聯。
級聯之后,整個74HC595模塊的輸出引腳共64個,分別控制一行的哪一個燈的亮滅。
              
                     ii.           74HC154
             Figure 2 74HC154引腳圖
            
         74HC154譯碼器可接受4位高電平有效二進制地址輸入,并提供16個互斥的低低電平有效輸出。
         它的引腳說明如下:
         Y0非~Y15非           輸出端
         GND                           接地
         G1非,G2非           使能端,二者同為低,器件才工作
         A,B,C,D                     地址輸入端
         VCC                           電源
         
         這個器件的A,B,C,D端接AT59C51的P30~P33端,用來位選,即用來選擇哪一行可以被點亮。
(3)   電路圖
Figure 3 74HC595模塊搭建圖
Figure 4 74HC154連線
Figure 5 AT59C51連線圖
Figure 6 總覽
Figure 7 LED模塊布線圖
       如圖7,段選和位選交錯相連,并不會造成混亂,反而能夠大大減少使用的引腳,原因在于程序一列一列的選擇,前一列所用到的位選碼輸入以后,即特定的LED燈亮了之后,下一列的段選碼輸入,此時由于上一列的位選碼已經作用過了,就算此時下一列的段選碼會覆蓋掉上一列的位選碼造成偏差,可是由于人眼的輝光效應,只要列掃描的速度足夠快,人眼也是無法分辨的。
三、     軟件設計
      具體的思路是先將第一時刻關于整個屏幕需要點亮的LED的16進制碼共64位全部通過一個for循環使其進入74HC595模塊的各個寄存器待命。
而后跳出這個for循環之后,進行位選,。雖然我的LED模塊接線是位選與段選端復用了,但是正如前面所說的,由于是一列一列的選擇,前一列所用到的位選碼輸入以后,即特定的LED燈亮了之后,下一列的段選碼輸入,此時由于上一列的位選碼已經作用過了,就算此時下一列的段選碼會覆蓋掉上一列的位選碼造成偏差,可是由于人眼的輝光效應,只要列掃描的速度足夠快,人眼也是無法分辨的。
(1)程序流程圖
Figure 8 靜態顯示流程
Figure9 動態顯示流程
(2)程序代碼
              1. 靜態顯示
#include<reg52.h>
sbit SH_CP = P2 ^ 0;
sbit DS = P2 ^ 1;
sbit ST_CP = P2 ^ 2;
unsigned char code display[] = {
    0x10,0x40,0x10,0x40,0x14,0x50,0xD4,0x57,0x54,0x55,0x54,0x55,0x54,0x55,0xFC,0x7F,
    0x52,0x55,0x52,0x55,0x52,0x55,0xD3,0x57,0x12,0x50,0x10,0x40,0x10,0x40,0x00,0x00,/* "重"*/

    0x00,0x40,0x00,0x30,0xFC,0x0F,0x04,0x80,0x84,0x40,0x84,0x20,0x84,0x18,0x85,0x06,
    0xF6,0x01,0x84,0x06,0x84,0x18,0x84,0x20,0x84,0x40,0x84,0x80,0x04,0x80,0x00,0x00,/* "慶"*/

    0x08,0x80,0x08,0x81,0x88,0x40,0x68,0x40,0x08,0x21,0x08,0x22,0x09,0x14,0x0E,0x08,
    0x08,0x14,0x08,0x22,0x88,0x41,0x28,0x40,0x48,0x80,0x88,0x81,0x08,0x80,0x00,0x00,/* "交"*/

    0x20,0x80,0x20,0x80,0x20,0x40,0x20,0x20,0x20,0x10,0x20,0x0C,0x20,0x03,0xFF,0x00,
    0x20,0x03,0x20,0x0C,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x80,0x20,0x80,0x00,0x00,/* "´大"*/
};
void hc595_senddat(unsigned char dat)
{
    unsigned char i;
    for (i = 0; i<8;i++)
    {
         DS = dat & 0x80;
         SH_CP = 1;
         SH_CP = 0;
         dat <<= 1;
    }
}
int main()
{
    unsigned char i;
    char j;
    SH_CP = 0;
    ST_CP = 0;
    while (1)
    {
         for (i = 0; i<16;i++)
         {
             for (j = 3; j >= 0;j--)
             {
                  hc595_senddat(display[32* j + 2 * i + 1]);
                  hc595_senddat(display[32* j + 2 * i]);
             }
             P3 = i;
             ST_CP =1;
             ST_CP =0;
         }
    }
}
              2. 動態顯示
#include<reg52.h>
sbit SH_CP=P2^0;
sbit DS=P2^1;
sbit ST_CP=P2^2;

unsigned char code display[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//32

0x10,0x40,0x10,0x40,0x14,0x50,0xD4,0x57,0x54,0x55,0x54,0x55,0x54,0x55,0xFC,0x7F,
0x52,0x55,0x52,0x55,0x52,0x55,0xD3,0x57,0x12,0x50,0x10,0x40,0x10,0x40,0x00,0x00,/* "重"*///64

0X00,0x40,0x00,0x30,0xFC,0x0F,0x04,0x80,0x84,0x40,0x84,0x20,0x84,0x18,0x85,0x06,
0XF6,0x01,0x84,0x06,0x84,0x18,0x84,0x20,0x84,0x40,0x84,0x80,0x04,0x80,0x00,0x00,/* "慶"*///96

0X08,0x80,0x08,0x81,0x88,0x40,0x68,0x40,0x08,0x21,0x08,0x22,0x09,0x14,0x0E,0x08,
0X08,0x14,0x08,0x22,0x88,0x41,0x28,0x40,0x48,0x80,0x88,0x81,0x08,0x80,0x00,0x00,/* "交"*/

0X40,0x80,0x42,0x40,0xCC,0x3F,0x00,0x40,0x00,0x80,0xE2,0xFF,0x22,0x89,0x2A,0x89,
0X2A,0x89,0xF2,0xBF,0x2A,0x89,0x26,0xA9,0x22,0xC9,0xE0,0xBF,0x00,0x80,0x00,0x00,/* "通"*/

0X20,0x80,0x20,0x80,0x20,0x40,0x20,0x20,0x20,0x10,0x20,0x0C,0x20,0x03,0xFF,0x00,
0X20,0x03,0x20,0x0C,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x80,0x20,0x80,0x00,0x00,/* "大"*/

0X40,0x04,0x30,0x04,0x11,0x04,0x96,0x04,0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E,
0X90,0x06,0x90,0x05,0x98,0x04,0x14,0x04,0x13,0x04,0x50,0x04,0x30,0x04,0x00,0x00,/* "學"*/

0X04,0x10,0x24,0x08,0x44,0x06,0x84,0x01,0x64,0x82,0x9C,0x4C,0x40,0x20,0x30,0x18,
0X0F,0x06,0xC8,0x01,0x08,0x06,0x08,0x18,0x28,0x20,0x18,0x40,0x00,0x80,0x00,0x00,/* "歡"*/

0X40,0x00,0x40,0x40,0x42,0x20,0xCC,0x1F,0x00,0x20,0x00,0x40,0xFC,0x4F,0x04,0x44,
0X02,0x42,0x00,0x40,0xFC,0x7F,0x04,0x42,0x04,0x44,0xFC,0x43,0x00,0x40,0x00,0x00,/* "迎"*/

0X20,0x40,0x10,0x30,0x08,0x00,0xFC,0x77,0x23,0x80,0x10,0x81,0x88,0x88,0x67,0xB2,
0X04,0x84,0xF4,0x83,0x04,0x80,0x24,0xE0,0x54,0x00,0x8C,0x11,0x00,0x60,0x00,0x00,/* "您"*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* " " */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* " " */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* " " */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* " " */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* " " */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* " " */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* " " */
};
void hc595_senddat(unsigned char dat)
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
         DS=dat&0x80;// 1000 0000
         SH_CP=1;
         SH_CP=0;//上升沿,DS端數據移入寄存器
         dat<<=1;
    }   
}

main()
{
    unsigned char i,n;
    unsigned int k,m;
    char j;
    m=sizeof(display);
    SH_CP=0;
    ST_CP=0;
    while(1)
    {
         for(k=0;k<m;k=k+2)
                  for(n=0;n<2;n++)
                          for(i=0;i<16;i++)
                          {   
                               for(j=3;j>=0;j--)
                               {
                                   hc595_senddat(display[(32*j+2*i+1+k)%m]);
                                   hc595_senddat(display[(32*j+2*i+k)%m]);
                               }
                               P3=i;
                               ST_CP=1;
                               ST_CP=0;//上升沿,寄存器中的數據送鎖存器
                          }
    }
}
四、      實驗步驟
打開Kei1程序,執行菜單命令“Project"->“New Project" 創建“大屏幕顯示”項目,并選擇單片機型號為AT89C51。
執行菜單命令“File"->"New"創建文件,輸入源程序,保存為“大屏幕顯示.c”。在“Projec t"欄的Fi le項目管理窗口中右擊文件組,選擇“Add Fi les to Group'Source Group1'" 將源程序“大屏幕顯示.c”添加到項目中。
執行菜單命令“Project”->“Options for Target'Target 1”,在彈出的對話框中選擇“ Output  選項卡,選中“Greate HEX File”。
執行菜單命令“Project" ->“Bui ld Target",編譯源程序。如果編譯成功,則在“OutputWindow" 窗口中顯示沒有錯誤,并創建了“大屏幕顯示.HEX”文件。
在proteus仿真平臺上建立參考圖系統,并將程序上載到虛擬芯片上運行,
將所得到的正確的顯示結果截圖。

五、      實驗結果
Figure 10 靜態顯示效果圖
Figure 11 動態顯示效果圖
六、      實驗總結
這次實驗做的不足之處在于對動態掃描的速度控制不到位,在“重慶交通大學歡迎您”的那個您結束之前,后面的“重”又跟上了。
原先的想法本來是用一個74HC154來控制位選,再用4個74HC154去控制段選,但是這么做的確定也顯而易見,那就是引腳使用得太多了,這只是一次實驗,這么做是可以的,但是真正的工程這么做,怕是會被人吐槽。后來我聽了同學的意見,拋棄了這種接線方案。LED模塊的接線改用為如圖7,這樣一來,所使用的引腳就大大減少,不過這么做就提高了程序的復雜度。
在這次實驗中,收獲得最大的就是對兩個主要器件74HC595和74HC154有了一個深入的理解。其中74HC595比較有意思,需要兩次上升沿信號才能將信號發送出去,而且,他這個原件的Q7’就是專門為級聯而生的,這個引腳的存在使得這個元件的使用非常靈活。

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

使用道具 舉報

沙發
ID:359744 發表于 2018-6-26 21:51 | 只看該作者
老鐵,可以發下仿真圖嗎
回復

使用道具 舉報

板凳
ID:359744 發表于 2018-6-26 21:52 | 只看該作者
老鐵,可以發下仿真圖嗎
回復

使用道具 舉報

地板
ID:359744 發表于 2018-6-26 22:45 | 只看該作者
求proteus仿真圖
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品视频99 | 玖玖操| 日韩一区二区在线视频 | 欧美日韩福利 | 国产黄视频在线播放 | 亚洲欧美中文日韩在线v日本 | 亚洲精品成人在线 | 成年人在线观看视频 | 成人三级在线观看 | 不卡一二区 | h在线免费观看 | 999久久久久久久久6666 | 久久精品福利视频 | 五月天国产视频 | 色综合久久久久 | 亚洲一区二区在线播放 | 欧美激情精品久久久久 | 亚洲成人在线免费 | 久久久久免费精品国产小说色大师 | 国产伦一区二区三区视频 | 成年视频在线观看福利资源 | 成人av电影在线 | 亚洲精品免费在线观看 | 亚洲一区在线日韩在线深爱 | 黄视频在线网站 | 亚洲精品福利视频 | 一区二区av| 免费av直接看| 久久久久久久久久久久一区二区 | 国产精品美女久久久久久免费 | 99re6在线视频精品免费 | 91网视频 | av在线免费观看网站 | 色网站在线免费观看 | 欧美久久精品一级c片 | 欧美日韩一区在线播放 | 欧美1区2区 | 国产亚洲精品久久久久动 | 久久免费资源 | 成人做爰69片免费观看 | 久久久久久久国产精品影院 |