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

QQ登錄

只需一步,快速開始

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

求一個(gè)點(diǎn)陣鎖的范例~

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:27368 發(fā)表于 2010-12-17 22:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
         我在驅(qū)動(dòng)51hei板子上的LED發(fā)光管的時(shí)候~  八段數(shù)碼管和8*8的點(diǎn)陣都亮了~使得電路電流很大~八位譯碼管我會(huì)鎖了~求一個(gè)點(diǎn)陣鎖法~
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2010-12-17 23:42 | 只看該作者
首先我們來了解一下為什么點(diǎn)陣他會(huì)亮?看下面的電路圖
 


 點(diǎn)陣亮的條件有2個(gè):1.
陰極為0,2.陽(yáng)極為1

  先說第一個(gè)條件因?yàn)辄c(diǎn)陣的陰極是接在u1 74hc573上的,而這個(gè)573是接在p0口的,與數(shù)碼管和流水燈的控制端口重復(fù),所以我們?cè)隍?qū)動(dòng)數(shù)碼管或者流水燈的時(shí)候也會(huì)有可能把點(diǎn)陣的陰極置為了0,這時(shí)候一旦點(diǎn)陣陽(yáng)極的某個(gè)腳為1,第2個(gè)條件也成立了點(diǎn)陣就會(huì)立刻出現(xiàn)亮條,
  那么為什么陽(yáng)極會(huì)出現(xiàn)1呢?因?yàn)槲覀儧]有對(duì)74hc164進(jìn)行初始化,他輸出的是一個(gè)隨機(jī)值

  那么如何不讓他亮呢?其實(shí)我們只要在程序的開頭將74hc164的所有輸出引腳初始化為0,則點(diǎn)陣將不會(huì)再亮

1.c語(yǔ)言的解決辦法:

這個(gè)功能我已經(jīng)寫在51hei.h 這個(gè)頭文件里了

你只需要在程序的開頭寫一行#include"51hei.H"  并且把51hei.h文件復(fù)制到當(dāng)前目錄
然后在main主函數(shù)的開頭加入下面2個(gè)函數(shù)即可

guanled(); //關(guān)8個(gè)數(shù)碼管 

guandz();  //關(guān)8*8點(diǎn)陣

關(guān)于這兩個(gè)函數(shù)的原理51hei.h里有非常詳細(xì)的注釋你可以看看.

51hei.h這個(gè)文件及其使用范例http://www.torrancerestoration.com/f/流水燈_c語(yǔ)言.rar
你在"程序"文件夾中搜索一下便可找到很多.

 

2.匯編語(yǔ)言的解決辦法:
      ;以下5行的功能是關(guān)閉8*8點(diǎn)陣的輸出,也就是把所有的行置0,這樣不管列為任何電平點(diǎn)陣都不會(huì)亮了.
         MOV     R2,#8   ;輸出數(shù)據(jù)8位
hei:     CLR     P2.4     ;拉低SCL,以便下次拉高便可產(chǎn)生上升沿
         CLR     P2.5      ;數(shù)據(jù)先送入74hc164,等待clk上升沿的到來
         SETB    P2.4     ;低電平到高電平邊沿觸發(fā)到來,并行數(shù)據(jù)輸出至164的Q0-Q7
         DJNZ    R2,hei   ;判斷輸出完畢了沒有

 

總結(jié):
 雖然流水燈,數(shù)碼管,8*8點(diǎn)陣這3個(gè)設(shè)備都是接在p0口上的,但因其各自都具有使能端(可令其有效或失效) ,使得我們能獨(dú)立的控制其中的某一個(gè)設(shè)備,互不干擾,這樣設(shè)計(jì)的好處就是節(jié)約了單片機(jī)有限的端口資源

[此貼子已經(jīng)被作者于2011-1-29 17:50:38編輯過]
回復(fù)

使用道具 舉報(bào)

板凳
ID:27368 發(fā)表于 2010-12-18 19:49 | 只看該作者
多謝指點(diǎn)
回復(fù)

使用道具 舉報(bào)

地板
ID:27368 發(fā)表于 2010-12-22 23:21 | 只看該作者
為什么我這樣用LED燈也不亮??
回復(fù)

使用道具 舉報(bào)

5#
ID:1 發(fā)表于 2010-12-22 23:36 | 只看該作者
你只調(diào)用 guandz() //關(guān)8*8點(diǎn)陣 這一句  不要調(diào)用guanled() 
回復(fù)

使用道具 舉報(bào)

6#
ID:27368 發(fā)表于 2010-12-23 22:39 | 只看該作者
  我沒有調(diào)用不要調(diào)用guanled()   這句啊~~~~~~~~~~ 也不亮~
回復(fù)

使用道具 舉報(bào)

7#
ID:1 發(fā)表于 2010-12-24 02:32 | 只看該作者

你把51hei.h 中的guandz()  中有操作P0的語(yǔ)句統(tǒng)統(tǒng)刪掉就行了哦

回復(fù)

使用道具 舉報(bào)

8#
ID:27368 發(fā)表于 2010-12-24 18:40 | 只看該作者
   頭文件在哪里可以修改???? 我怎么找不到?
回復(fù)

使用道具 舉報(bào)

9#
ID:1 發(fā)表于 2010-12-24 20:09 | 只看該作者
51hei.h 你要打開這個(gè)文件就看到了
回復(fù)

使用道具 舉報(bào)

10#
ID:27368 發(fā)表于 2010-12-26 12:33 | 只看該作者
我輸入頭文件~它提示無法打開
回復(fù)

使用道具 舉報(bào)

11#
ID:1 發(fā)表于 2010-12-26 13:04 | 只看該作者
提示找不到文件那肯定是你沒有把51hei.h頭文件復(fù)制到 當(dāng)前的文件夾里啊,我提供的例程里有幾百個(gè)這樣的程序,你隨便復(fù)制一個(gè)完整的目錄出來按照樣子一模一樣的搞然后修改就行了。這很簡(jiǎn)單的
回復(fù)

使用道具 舉報(bào)

12#
ID:39662 發(fā)表于 2012-5-24 14:23 | 只看該作者
謝謝 指 點(diǎn),很有用!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表