日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机8×8点阵显示简单汉字的程序_干货 | 浅析单片机制作贪吃蛇游戏

發布時間:2025/3/11 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机8×8点阵显示简单汉字的程序_干货 | 浅析单片机制作贪吃蛇游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為了讓大家更深入地了解底層的原理,在講解時特意選擇了51單片機(而非STM系列),另外16*16點陣由譯碼器和移位緩存器直接驅動(而非MAX系列芯片),搖桿也利用ADC功能判斷方向。

那如何讓單片機驅動這256個點呢?直接用IO口驅動顯然不夠且十分浪費。為了解決這個問題,我們要引入動態掃描的方法,它利用了人類的視覺暫留現象:如果讓點陣的每一行分別輪流顯示,當掃描速度足夠高時,我們并不會看到一行一行地閃動,而是一幅完整的圖像。

在驅動這個16*16點陣時,單片機會首先選中一行,然后將16位的數據輸出以顯示一行,在做短時間的停頓后接著再選擇下一行輸出,如此往復對這16行進行高速掃描就可以在點陣上看到要顯示的圖像。

先來講解一下16*16點陣的原理。為了方便大家理解,我們先來看一下8*8點陣的電路圖。它實際上由64個LED組成,每行共陰,每列共陽,當某行輸出信號為低電平時,整一行LED陰極均為低電平,當在列上分別輸入不同的電平信號時,交叉點的LED就會有不同的亮滅情況,以此不斷循環掃描,就可以顯示完整的圖像。

8*8點陣的原理圖

16*16點陣實質上為4個8*8點陣組合而成,對它的控制和8*8點陣也是大同小異,同樣是分別掃描所有的行并輸出列的數據,以此輸出完整的16*16圖像。

我們首先來考慮點陣行的控制,由于要節省單片機的引腳,我們使用74HC138譯碼器來控制不同的行,這里采用兩個譯碼器分別對16行進行選擇。

74HC138引腳圖

VDD和GND分別為電源正負極,A0,A1,A2負責數據輸入,Y0到Y7進行譯碼輸出,E1,E2,E3為使能引腳,只有當E1和E2均為低電平,E3為高電平時,譯碼器才會正常輸出,否則只會全部輸出高電平。在使用時,只需要輸入3位二進制加權地址,就能提供8個互斥的低有效輸出。

74HC138架構圖

由于2^3=8,那3位的二進制數據剛好能用于輸出8位的互斥數據,我們正是借用這個特性來對點陣進行行掃描。根據譯碼器數據手冊提供數據,我們可以得知使用3位二進制加權地址來輸出8位的互斥信號的真值表。

74HC138真值表

由于譯碼器輸出電流較低,必須借助三極管分別放大輸出信號才能正常驅動LED。此處將譯碼器的輸出接口分別連接到PNP三極管的基極,然后發射極連接點陣的行引腳,由于所有三極管的發射極均連接在VCC上,當輸入低電平時,集電極就會輸出高電平,否則就輸出低電平,以此放大譯碼器的控制信號。

74HC138輸出的原理圖

兩個74HC138的連接圖對比

兩個譯碼器的連接圖稍有不同,對比一下可以發現它巧妙地利用了74HC138的使能特性,當G為高電平時,兩個譯碼器均無輸出,當G為低電平且D為低電平時,第一個譯碼器使能而第二個譯碼器關閉,反之第二個譯碼器使能而第一個譯碼器關閉;所以這里就可以直接使用A B C D對16行進行選擇控制,G使能全部輸出。

同樣是為了節省IO口,我們使用了兩個74HC595級聯進行列輸出,由于列輸出內容是不確定的,所以我們要借助位移緩存器將串行數據轉化為并行數據。

74HC595引腳圖

這里VCC和GND分別為電源正負極,Q0到Q7為輸出接口,DS為數據輸入口,SHCP為數據輸入時鐘,STCP為輸出存儲器鎖存時鐘線,MR用于清零移位寄存器,OE為輸出使能,Q7S可以連接到下一級位移緩存器的DS。

查閱數據手冊可知,當SHCP產生一個上升沿的時候,移位寄存器讀入DS上的電平信號,并且所有的數據都向后移動了一位。當數據輸入完畢時,在STCP上發送一個上升沿可以讓移位寄存器的數據鎖存輸出,由于有移位寄存器的存在,進行數據輸入的時候可以有效避免“鬼影”問題。此處為了方便大家理解引入了IC的架構圖。

74HC595架構圖

在這個制作中我們不需要對移位緩存器進行單獨操作,因此將OE接地,MR接VCC即可。把SHCP和STCP分別合并同時引出為CLK和LATCH輸入線;第二個IC的DS接到第一個IC的級聯輸出端上,以實現多個74HC595的級聯;再將第一個IC的DS端引出為DATA輸入線,這樣子我們用三根線就可以實現16位數據的串行輸出。

兩個74HC595的連接圖

? ? 總結一下,這個16*16點陣需要兩根電源線和八根數據線進行驅動,其中A B C D和G進行選擇,DATA,CLK和LATCH串行輸出16位的列顯示數據。在選通一行后,74HC595輸出該行數據,總共16行依次循環進行動態掃描,讓16*16的點陣顯示出來需要的文字或者圖形。

? ? 接著,我們用搖桿來控制蛇的走向。搖桿的本質是X軸和Y軸的兩個電位器,在搖桿運動的時候,通過讀取兩個電位器的輸出電壓就可以分別得到X軸和Y軸的坐標。由于得到是模擬數據,利用單片機的ADC功能來獲取電壓大小即可得到前后左右的運動數據。

? ? 目前國內大部分51單片機為STC的產品,因此我們選用了STC8單片機作為控制中心來驅動整個游戲。鑒于貪吃蛇程序在系統平臺上編寫過于簡單,這里就不再贅述游戲邏輯的編程。下面的C語言代碼用Keil編譯后通過串口燒錄進單片機即可。

頭文件及常量定義

全局變量定義

定義八個數據線的引腳位置

全局初始化

向74HC595發送8bits的數據的函數

借助位運算進行行選

驅動整個點陣

對搖桿的掃描及響應

定時器中斷

生成隨機點

貪吃蛇的游戲邏輯

簡易的main函數

以上就是整個貪吃蛇游戲的主要代碼,分為從硬件上驅動IC和在軟件上進行游戲的過程,雖然很簡單但能讓初學者了解51單片機對74系列IC的使用和ADC的讀取,也能對單片機的編程加強認知。謝謝大家!

圖文:林鉅聰

排版:劉楊

審核:梁慶鏵

總結

以上是生活随笔為你收集整理的单片机8×8点阵显示简单汉字的程序_干货 | 浅析单片机制作贪吃蛇游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 韩国一区二区三区在线观看 | 国产不卡在线播放 | 人人干人人干人人干 | 波多野结衣大片 | 在线成年人视频 | 久久精品国产亚洲AV无码男同 | 美女av片| 天堂在线亚洲 | 精产国产伦理一二三区 | 国产人妻人伦精品1国产盗摄 | 日韩欧美在线中文字幕 | 成人精品视频一区二区三区尤物 | 欧美激情一二三 | 超碰av免费 | 丰满人妻一区二区三区53号 | 久久久久亚洲av成人片 | 久久久久久不卡 | 日本寂寞少妇 | 国产女上位 | 丁香色婷婷 | 黄色a级大片 | 69式视频| 久久久久麻豆v国产精华液好用吗 | 一区二区在线观看免费 | 99久久久国产精品免费蜜臀 | 久久精品屋| 美女羞羞动态图 | 91抖音在线观看 | www性欧美 | 五月婷婷视频在线观看 | 日韩免费av网站 | 狠狠操2019 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 人人舔人人 | 精品人妻在线一区二区三区 | 乌克兰极品av女神 | 久射网 | 欧美精品一区二区不卡 | 精品久久久999 | 中文在线a√在线 | 天天操天 | 中文字幕+乱码+中文字幕一区 | 性视频黄色 | 国产成人精品亚洲日本在线观看 | 东方av在线免费观看 | 尹人综合在线 | 色综合日韩 | 森泽佳奈在线播放 | 欧美日韩高清一区 | 伊人365影院| 人妖一级片 | 在线观看色视频 | 国模小丫大尺度啪啪人体 | 久久精品美乳 | 人人亚洲 | 青青草97国产精品免费观看 | 久久蜜桃av一区二区天堂 | 青青成人网| 黄色av电影网站 | 免费级毛片 | 一区二区三区精品免费视频 | juliaann欧美二区三区 | 国产a一级 | 老司机午夜精品 | 天堂av网站 | 日本黄视频在线观看 | 中文字幕线人 | 午夜视频免费在线观看 | 亚洲AV无码一区二区三区性 | 久久亚洲综合国产精品99麻豆精品福利 | 久久艹精品 | av成人免费观看 | 一级a性色生活片久久毛片 爱爱高潮视频 | 俺去久久 | 亚洲精品www久久久久久广东 | 国产综合第一页 | 色多多视频网站 | 波多野结衣精品 | 美女福利视频导航 | 亚洲黄色影院 | 精品黑人一区二区三区久久 | 人人搞人人干 | 变态另类一区二区 | 亚洲va国产va天堂va久久 | 狠狠干成人 | 国产成人无码一区二区在线观看 | 91一区二区三区在线观看 | 国产午夜三级一区二区三 | 亚洲情在线 | 91超碰免费在线 | 欧美日韩国产在线 | 91成人免费在线观看视频 | 日本老太婆做爰视频 | 宅男噜噜噜666在线观看 | 超碰日韩| 日韩在线第二页 | wwww欧美 | 国产精品国语自产拍在线观看 | www日本视频|