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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1755|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

大屏幕信息顯示系統(tǒng)實(shí)驗(yàn)

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

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端數(shù)據(jù)移入寄存器
         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;//上升沿,寄存器中的數(shù)據(jù)送鎖存器
                          }
    }
}
四、      實(shí)驗(yàn)步驟
打開Kei1程序,執(zhí)行菜單命令“Project"->“New Project" 創(chuàng)建“大屏幕顯示”項(xiàng)目,并選擇單片機(jī)型號(hào)為AT89C51。
執(zhí)行菜單命令“File"->"New"創(chuàng)建文件,輸入源程序,保存為“大屏幕顯示.c”。在“Projec t"欄的Fi le項(xiàng)目管理窗口中右擊文件組,選擇“Add Fi les to Group'Source Group1'" 將源程序“大屏幕顯示.c”添加到項(xiàng)目中。
執(zhí)行菜單命令“Project”->“Options for Target'Target 1”,在彈出的對(duì)話框中選擇“ Output  選項(xiàng)卡,選中“Greate HEX File”。
執(zhí)行菜單命令“Project" ->“Bui ld Target",編譯源程序。如果編譯成功,則在“OutputWindow" 窗口中顯示沒有錯(cuò)誤,并創(chuàng)建了“大屏幕顯示.HEX”文件。
在proteus仿真平臺(tái)上建立參考圖系統(tǒng),并將程序上載到虛擬芯片上運(yùn)行,
將所得到的正確的顯示結(jié)果截圖。

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人国产精品久久久 | 精品国产乱码久久久久久久久 | 久久成人一区 | 天堂中文在线观看 | 久久久精品一区二区三区 | 国产一级一片免费播放 | 欧美日韩在线精品 | 久久久久久天堂 | 国产精品免费一区二区三区 | 精品永久 | 国产精品久久久久久亚洲调教 | 在线免费中文字幕 | 亚洲精品视频三区 | 成人精品国产一区二区4080 | 国产视频福利在线观看 | 国产一级片一区二区 | 国产目拍亚洲精品99久久精品 | 亚洲男女激情 | 久久久美女 | 久久久久久国产精品免费免费男同 | 欧美一级在线观看 | 国产第一亚洲 | 亚洲成人三级 | 亚洲国产成人在线视频 | 国产精品一区二区不卡 | 国产免费自拍 | 亚洲一区二区在线 | 91精品国产99久久 | 久久精品这里精品 | 免费成人高清在线视频 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 日本精品免费在线观看 | 欧美精品一区二区免费 | 成人福利视频网站 | 男女在线免费观看 | 羞羞视频网 | 人人玩人人干 | aaaaaaa片毛片免费观看 | 欧美一级免费 | 成人福利在线观看 | 国产高清视频在线观看 |