日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 技術(shù)中心 >> 單片機(jī)入門 >> 51單片機(jī)--LED類編程技巧續(xù)

51單片機(jī)--LED類編程技巧續(xù)

關(guān)鍵字:51單片機(jī) LED編程 作者:admin 來源:不詳 發(fā)布時(shí)間:2018-05-18  瀏覽:6

 上一篇說了一點(diǎn)點(diǎn)關(guān)于8X8點(diǎn)陣的驅(qū)動(dòng)編寫技巧以及寫LED燈時(shí)應(yīng)注意的一些小細(xì)節(jié),那么這次我就繼續(xù)補(bǔ)上上次挖的坑吧,說一下16X16點(diǎn)陣的編寫技巧,主要講一下思路,因?yàn)樵趯?6X16點(diǎn)陣驅(qū)動(dòng)時(shí),很多人一上來大腦一片空白啊,根本無從下手,我這里舉一個(gè)例子講下思路,以后大家可以按照我下面的思路來寫程序。

首先要看一下16X16點(diǎn)陣的驅(qū)動(dòng)電路,以這個(gè)電路為例我寫一下自己編寫16X16點(diǎn)陣驅(qū)動(dòng)時(shí)的小經(jīng)驗(yàn),勿噴勿噴哈,O(∩_∩)O,上電路圖:

1.jpg

16X16點(diǎn)陣原理圖

(注:圖中我加了一些注釋,可能有的人不喜歡,所以想看原圖的人可以去找我在單片機(jī)貼吧發(fā)的帖子里找,有PDF文件,很清晰!)

從圖片中我們可以看出74HC138芯片控制列,74HC595芯片控制行,我們都知道在同一時(shí)間內(nèi)74HC138芯片只能有一個(gè)引腳輸出有效(不知道74HC138和后面要提到的74HC595的人也不要著急,文章后面也會(huì)講74HC138和74HC595),也就是說同一時(shí)間內(nèi)只能選中一行,而74HC595是“串入并出”,八個(gè)引腳可以同時(shí)有效,這樣就會(huì)導(dǎo)致16X16點(diǎn)陣驅(qū)動(dòng)編寫時(shí)的第一個(gè)易錯(cuò)點(diǎn):掃描方式。

注意點(diǎn)一:掃描方式

這個(gè)16X16點(diǎn)陣的驅(qū)動(dòng)掃描方式是由電路圖決定的(我僅僅指這個(gè)16X16點(diǎn)陣),不像8X8點(diǎn)陣,8X8點(diǎn)陣的掃描方式是任意的。

上面說了,74HC138只能一個(gè)引腳有效,且74HC138控制行,所以此次驅(qū)動(dòng)編寫只能用行掃描,列送入數(shù)據(jù)。行掃描的原理上一篇已經(jīng)說了,這里就不重復(fù)了,免得大家嫌我啰嗦......~\(≧▽≦)/~喵

還有這里我要糾正一個(gè)自己犯的錯(cuò)誤哈,剛剛才發(fā)現(xiàn),不要打我!【o(>﹏<)o不要啊】

上一篇里我說,呃......直接上圖吧:

2.jpg

上一篇文章里的8X8點(diǎn)陣代碼編寫思路

上次我說思路一代碼實(shí)現(xiàn)簡單,思路二不好實(shí)現(xiàn),當(dāng)時(shí)寫學(xué)習(xí)筆記的我還僅僅只是編過一些小程序,數(shù)據(jù)量不大,但是今天寫16X16點(diǎn)陣驅(qū)動(dòng)的時(shí)候,用了比較多的數(shù)據(jù),發(fā)現(xiàn)思路一在數(shù)據(jù)很多的時(shí)候根本實(shí)現(xiàn)不了(我僅僅指容量很小的51系列里面),51單片機(jī)的容量太小,根本無法同時(shí)處理這么多數(shù)據(jù),所以這里糾正一下哈。

注意點(diǎn)二:滾動(dòng)效果的實(shí)現(xiàn)

剛才說了,數(shù)據(jù)比較多時(shí),我們就不能用改變數(shù)據(jù)的方式實(shí)現(xiàn)滾動(dòng)效果了,只能通過修改掃描函數(shù)讀取數(shù)據(jù)的起始位置來實(shí)現(xiàn)滾動(dòng)效果。(如果您有更好的思路,請務(wù)必告訴小弟一下,先謝謝啦^_^)下面我說一下我的代碼編寫思路:

用一個(gè)for循環(huán)就可以實(shí)現(xiàn)修改每次的數(shù)據(jù)讀取位置,for循環(huán)里面不是有一個(gè)變量嘛(一般都叫 i),將這個(gè)變量 i 加到讀取數(shù)據(jù)時(shí)的數(shù)據(jù)數(shù)組下標(biāo)里就行了。我只寫文字的話你們一般不明白什么意思,所以就....上圖:

3.jpg

滾動(dòng)效果的代碼實(shí)現(xiàn):思路一

for循環(huán)里我之所以寫兩個(gè) i++ 的原因是:16X16點(diǎn)陣嘛,一次要傳輸兩個(gè)字節(jié),所以每移動(dòng)一個(gè)LED位,掃描的起始位置就要移動(dòng)兩個(gè)字節(jié),所以要寫兩個(gè);另外不用 i = i + 2是因?yàn)?i++ 的運(yùn)行速度快;還有就是 i 之所以取385,是因?yàn)槲矣昧?86個(gè)字節(jié)的數(shù)據(jù),0開頭嘛,所以就寫385啦!扯遠(yuǎn)了哈,讓我們再回歸正題。

從圖中可以看出,我把 i 加在了83、88、93等行的數(shù)組StreamData的下標(biāo)里面,這樣每次掃描時(shí)讀取數(shù)據(jù)的位置就會(huì)后移兩個(gè)字節(jié),這樣就不用再寫數(shù)據(jù)處理函數(shù)了。

再來就該說一下16X16點(diǎn)陣的數(shù)據(jù)了:8X8點(diǎn)陣好說,就算自己算也不難啊,但是16X16點(diǎn)陣呢?難道還要自己一行一行得算嗎?

注意點(diǎn)三:數(shù)據(jù)的獲取

獲取數(shù)據(jù)也就是獲取字模,現(xiàn)在有很多獲取字模的軟件,所以這里我就介紹我用的一款軟件:

先上圖:

4.jpg

漢字取模軟件

下面是這款軟件的界面:

5.jpg

漢字取模軟件的界面

軟件使用方法:(我就不敲字了,敲字不直觀,直接上圖)

第一步:(此用法僅僅針對于16X16點(diǎn)陣的漢字取模,其實(shí)這個(gè)軟件還有其他很多功能,這個(gè)以后用到的時(shí)候再說)

6.jpg

第一步

第二步:

7.jpg

第二步

第三步:

8.jpg

第三步

這樣,我們就可以很快獲取想要顯示的漢字的字模了。對于這個(gè)軟件在使用前還要進(jìn)行適當(dāng)?shù)脑O(shè)置,在: 參數(shù)設(shè)置—> 其他選項(xiàng) 里面,軟件自身也有相當(dāng)詳細(xì)的說明,自己看就行了。

這樣16X16點(diǎn)陣的注意事項(xiàng)基本就說完了,但是你們是不是會(huì)有這種感覺:“雖然聽你說了那些注意事項(xiàng),但是我現(xiàn)在還是大腦一片空白啊,不知道該怎么下手啊?”有這種感覺很正常(讀這篇文章之前就會(huì)16X16點(diǎn)陣的人除外),畢竟整體思路我還沒講呢,還有上面提到的74HC595和74HC138我也還沒講,所以不要失去信心哈,下面我們繼續(xù):(慣例:分割線)

9.jpg

《刀劍神域》主人公:桐谷和人

講整體思路之前先講一下上面提到的兩個(gè)芯片,最后將前面講的全部串起來。

注意點(diǎn)四:74HC138芯片

下面是我自己用Altium Designer畫的一個(gè)74HC138元件圖(Altium Designer我剛學(xué)完,才過了一個(gè)周,不怎么會(huì)用),一共有16個(gè)引腳。

整體功能:138(后面都簡稱138)主要功能是用一個(gè)三位的二進(jìn)制數(shù)控制八位輸出引腳中的一個(gè)引腳,經(jīng)常用于動(dòng)態(tài)顯示。

A0、A1、A2就組成了那個(gè)三位的二進(jìn)制數(shù)。

Y0~Y7就是那八位輸出引腳。

E1、E2、E3用于控制當(dāng)前的138是否工作,當(dāng)要控制多個(gè)138的時(shí)候就要用到這三個(gè)引腳了。

再詳細(xì)的包括真值表啊、具體電路接法啊什么的我就不說了,我這里只是講技巧的嘛,最基本的基礎(chǔ)知識(shí)還是靠自己學(xué)才能記得最扎實(shí)!

10.jpg

我自己畫的74HC138原理圖,網(wǎng)上沒找到好的

注意點(diǎn)五:74HC595芯片

下面我自己用“畫圖”畫了一張74HC595的工作原理圖:(畫一張這么簡單的圖花了我近一個(gè)小時(shí),不想活了....╯﹏╰)

11.jpg

74HC595原理圖

74HC595芯片具體的編程還要涉及到時(shí)序,不是一句兩句就能說完的,所以這些基本知識(shí)我就不說了,我說一下我對74HC595的理解:

74HC595的組成:74HC595呢就好像是一個(gè)水庫,有一個(gè)進(jìn)水口(圖中的DS引腳,就是第一列)、一個(gè)存水箱(圖中的數(shù)據(jù)保存區(qū),就是第二列)、一個(gè)放水閘門(圖中的OE引腳,第三列),八個(gè)出水口(也是第三列)。

74HC595的工作原理:當(dāng)接到進(jìn)水命令時(shí)(SH_CP引腳),開始進(jìn)水,水進(jìn)多了就會(huì)漏出來(下面的 Q7' 引腳),接到存水命令時(shí)(ST_CP引腳),進(jìn)來的水就會(huì)進(jìn)入存水箱,最后當(dāng)接到放水命令時(shí)(OE引腳)就會(huì)放水,8個(gè)出水口同時(shí)放水。

這樣74HC595就講完了(再說一下哈,基礎(chǔ)知識(shí)這里不講,哎呀,不要怪我嘛,我主要是分享經(jīng)驗(yàn)和技巧,基礎(chǔ)知識(shí)可以百度百科嘛,那上面講的更好更詳細(xì)!)

這樣知識(shí)準(zhǔn)備就差不多了,現(xiàn)在我們再來看這張?jiān)韴D:

12.jpg

16X16點(diǎn)陣原理圖

這下我們編寫代碼的整體思路就有了:

掃描方式:行掃描

滾動(dòng)實(shí)現(xiàn):數(shù)據(jù)讀取位置變更(上文已講)

用一個(gè)for循環(huán)控制移動(dòng)的時(shí)間間隔,for里面用兩個(gè)74HC138依次選中每一行,再用兩個(gè)74HC595送入每一行的數(shù)據(jù),這樣直至掃描完一個(gè)屏幕(不是8行了,這次是16行);之后外面再嵌套一個(gè)for循環(huán)用來變更數(shù)據(jù)讀取的位置(后移兩個(gè)字節(jié)),這樣就實(shí)現(xiàn)了16X16點(diǎn)陣的驅(qū)動(dòng)編寫。

注意細(xì)節(jié)不要忽略,這也是LED類的,要進(jìn)行微延時(shí)和消隱操作,當(dāng)然作為一個(gè)有理想的開發(fā)者,規(guī)范的代碼格式也是必須滴!

我這里說一下,我用編程軟件的是TKStudio,挺好用的,我最喜歡的是它的代碼提示功能,這個(gè)很厲害,Keil C51是沒有代碼提示的,但是Keil MDK for ARM是有代碼提示功能的,但是初學(xué)者最開始都是在寫C51的,所以寫C51代碼時(shí)TKStudio還是不錯(cuò)的,新手的福音啊。本來想說一下這個(gè)軟件的,可是好晚了,該睡覺了,明天還要上課呢,那么就在下一篇文章的時(shí)候我再說一下TKStudio這個(gè)軟件吧 ,到時(shí)候會(huì)主要說說怎么改字體和語法高亮,我也會(huì)把我的編輯風(fēng)格文件分享出來,大家直接引用就可以了,不喜歡我的那個(gè)風(fēng)格就自己再改一下就行。

上面的軟件以及PDF格式的原理圖等在單片機(jī)貼吧里我都有分享,大家可以去單片機(jī)貼吧找或者直接百度“LCD1602初始化問題詳解:單片機(jī)貼吧”就行。

好了,這篇文章就到這里了,拜拜( ^_^ )~~

編輯:admin  最后修改時(shí)間:2018-05-18

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

荃湾区| 霍邱县| 和硕县| 祁阳县| 玉田县| 张家口市| 萝北县| 扬州市| 鱼台县| 天长市| 明水县| 天津市| 潮州市| 巴林左旗| 灵寿县| 郸城县| 沙田区| 嘉善县| 衢州市| 红河县| 丰镇市| 富阳市| 黄冈市| 礼泉县| 丘北县| 且末县| 舟曲县| 云龙县| 中宁县| 东乡族自治县| 洛隆县| 嵩明县| 饶平县| 滁州市| 新泰市| 邻水| 美姑县| 全州县| 来安县| 苏州市| 山丹县|