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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

【詳解】51hei板子單個(gè)數(shù)碼管顯示1到9

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:33640 發(fā)表于 2012-1-7 01:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

數(shù)碼管,其實(shí)就是8個(gè)發(fā)光二極管按順序排列而成的,所以讓數(shù)碼管顯示特定的數(shù)字,只需要將該亮的二極管點(diǎn)亮,不該亮的滅了就好了。為了達(dá)到這個(gè)目的,就得參考電路圖了,51HEI開發(fā)板的電路圖在我的相冊里有,但是整張貼出來就太大了,所以這里只顯示部分。電路圖如下:

乍一看這張圖比較明顯的就是最左邊的單片機(jī)和兩個(gè)鎖存器U1和U2的引腳信息了,從D00到D07,兩個(gè)鎖存器是共用的,D00對應(yīng)輸出Y1和X1,D07對應(yīng)輸出Y8和X8。鎖存器,從它的名字大概就可以知道它的用途了!其作用就是有的引腳輸入改變的時(shí)候輸出保持之前的狀態(tài),達(dá)到鎖和存的效果(我目前的理解是這樣的,不理解的可以上網(wǎng)搜官方解釋)。查查74HC573是怎么用的,表格如下:

圖中引腳1代表輸出使能,11引腳代表鎖存使能。鎖存器嘛,打開鎖存,讓輸出使能引腳處于低電平,鎖存使能引腳輸入高電平,傳入對應(yīng)的D,然后再使鎖存使能引腳處于低電平,這樣就能讓輸出保持不變。使用的過程就是打開鎖,傳數(shù)據(jù),關(guān)鎖保持。

說完了鎖存器,回到第一張電路圖,途中的鎖存器1號引腳都接地,自然是低電平,11號引腳分別對應(yīng)單片機(jī)的D26和D27,所以控制U1和U2就靠這2個(gè)引腳啦!

按道理說,8個(gè)數(shù)碼管,應(yīng)該有8*8=64根線才對啊,而第一張圖中只有24個(gè)引腳,里面肯定有復(fù)用的引腳,所以不知道內(nèi)部電路是沒辦法寫滴,還好51HEI給的資料比較全。

2個(gè)LED管的內(nèi)部電路如下:         ABCDEFG  DP總共8個(gè)二極管,分別由11、7、4、2、1、10、5、3引腳控制,而1這8個(gè)引腳對應(yīng)第一個(gè)圖中的Y1到Y(jié)8,12、9、8、6呢則有兩組,一組是共陰極的數(shù)碼管,一組是共陽極的數(shù)碼管。12、9、8、6呢則對應(yīng)X1到X8,有2個(gè),一組是X1到X4,一組是X4到X8,X1到X4是共陰極的,X5到X8是共陽極的。本實(shí)驗(yàn)只讓共陰極的DIG1那個(gè)數(shù)碼管顯示數(shù)據(jù),把別的都關(guān)掉。那只要12(X1)引腳輸入低電平,986輸入高電平,其他的都不會(huì)亮了,讓DIG1顯示什么數(shù)字,就由Y1到Y(jié)7來決定了。

經(jīng)計(jì)算,讓DIG1顯示0到9還有小數(shù)點(diǎn)的表格如下:

 

 uint8  table[11]={ 0x3f, 0x30, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x80  };
        那么有了這個(gè)表格,只要一秒鐘讓P0換一個(gè)表格中的數(shù)值,就可以動(dòng)態(tài)更新數(shù)碼管的數(shù)值啦!那怎樣才能1秒換一次呢,有兩種方法,一種是些代碼,讓單片機(jī)執(zhí)行一些操作,直到一秒鐘過去,就更新P0,這種方法呢缺點(diǎn)是需要計(jì)算,要計(jì)算每個(gè)操作的指令周期和操作的執(zhí)行總次數(shù),假設(shè)有i種操作(i=1,2…n),對應(yīng)的指令周期Ti,這個(gè)操作執(zhí)行的總次數(shù)Si,那么總的時(shí)間間隔的計(jì)算公式是:單位是秒。各種操作的指令周期在數(shù)據(jù)手冊上都可以查的到。不過一般的也沒上面的公式那么復(fù)雜,一般都是一個(gè)循環(huán),里面進(jìn)行自增或者自減 操作。
        第二種方法呢就是用單片機(jī)內(nèi)部的定時(shí)器,STC89C52內(nèi)部有3個(gè)定時(shí)器,這里只用到一個(gè),先看看定時(shí)器SFR的結(jié)構(gòu)。圖片如下:
      要用到4個(gè)寄存器,TCON,和TMOD,TH0,TL0。TCON的各個(gè)位包含了計(jì)時(shí)器T0和T1的開關(guān)和計(jì)時(shí),尾數(shù)帶1的表示和T1相關(guān),尾數(shù)帶0的表示和T0相關(guān),TF位表示溢出位,就是計(jì)時(shí)器達(dá)到最大值,TF位就為1,TF位為1之后要么軟件手動(dòng)清零,或者時(shí)間中斷自動(dòng)硬件清零;TR呢表示計(jì)時(shí)器的運(yùn)行控制,TR位置1則計(jì)時(shí)器運(yùn)行,置0則停止運(yùn)行。       第二個(gè)寄存器TMOD,這個(gè)寄存器的值不能單位操作,主要功能是設(shè)置計(jì)時(shí)器的工作模式,
T1和T0分別代表單片機(jī)兩個(gè)計(jì)數(shù)器
GATE:該位被置位時(shí)為門控位。僅當(dāng)TR1被置位并且INT1腳為高,定時(shí)器開始計(jì)數(shù)。當(dāng)該位被清零時(shí),只要TR1被置位,定時(shí)器1馬上開始計(jì)數(shù)。
C/T:該位為0的時(shí)候,用作定時(shí)器,該位為1的時(shí)候,用做計(jì)數(shù)器。
00        01       10          11
模式0 模式1 模式2 模式3模式1:16位的計(jì)數(shù)器。(TH0,TL0)
模式2:自動(dòng)裝載8位計(jì)數(shù)器。主要應(yīng)用在串口波特率發(fā)生器。
模式0&模式3:幾乎不用。
TCON和TMOD復(fù)位后都會(huì)自動(dòng)變成0×00.

TH0和TL0呢分別代表計(jì)數(shù)器的高8位和低8位,加起來剛好16位,可以最大值是0~65535,總共65536個(gè)數(shù),當(dāng)TH0和TL0組成16位數(shù)等于65535時(shí)TF0就會(huì)被置1,也就是溢出,這種方法的計(jì)時(shí)公式是:12*X/晶振頻率=y;    X=65536- z;    y代表計(jì)時(shí)器溢出一次的時(shí)間,z表示設(shè)置TH0和TL0組成的16位數(shù)的值,而X則代表從z到65536總共有多少個(gè)數(shù),一般的晶振頻率有:6MHz,11.059MHz,12MHz,20MHz,        令X取極值,將上述晶振頻率代入式中,得出從計(jì)時(shí)開始到溢出最多能記錄的時(shí)間分別為130ms,71.1ms,65.5ms,39.3ms,明顯這些時(shí)間都比較短(相對1s),而且不規(guī)則,1s=1000ms=20*50ms=1000*1ms=40*25ms這種整數(shù)我們比較容易接受,也更容易計(jì)算,所以應(yīng)該令y為50等整數(shù),然后再去計(jì)算出z的值,讓TH0為z的高八位,TL0為z的第八位。假設(shè)晶振頻率是12MHz,讓y=50ms,計(jì)算得出z=15536=0x3CB0,則將TH0設(shè)為0x3C,TL0設(shè)為0xB0,TR0設(shè)為1,TMOD設(shè)為0×01,則到了50ms之后TF0就會(huì)變?yōu)?,通過判斷TF0溢出知道過了50ms,判斷完了之后要軟件(也就是代碼)對TF0清零,溢出之后TH0和TL0都會(huì)被清零,所以再將TH0和TL0設(shè)成0x3C和0xB0,每次溢出都記錄一次,記錄二十次之后就是過了1秒啦!1秒的定時(shí)就是這么來!額,估計(jì)被我繞暈了吧·····這個(gè)表達(dá)可能是有點(diǎn)問題,想看原版的,去看金沙灘工作室的視頻吧,我也是從那學(xué)的。

計(jì)時(shí)器的使用步驟總結(jié)如下:

一、設(shè)置TMOD

二、     設(shè)置TH0和TL1(事先計(jì)算好值。)

三、設(shè)置TR0

最終代碼如下:
#include <reg52.h>
typedef unsigned char uint8;
typedef unsigned int  uint16;

 sbit   D24 = P2^4;
 sbit   D25 = P2^5;
 sbit   U1 = P2^6;              //U1鎖存器的開關(guān)
 sbit   U2 = P2^7; 		//U2鎖存器的開關(guān)
 sbit 	LINX1  = P0^0;
 sbit   LINY5  = P0^4;
 sbit   LINY6  = P0^5;

 uint8  table[11]={ 0x3f, 0x30, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x80  };

 void main(void)
 {	

   uint8 counter = 0;
   uint8 offset = 0;
   TH0 = 0x3C;
   TL0 = 0xB0;
   TR0 = 1;

   TMOD = 0x01;	  //計(jì)時(shí)模式選01模式
    U2 = 1;
	P0 = 0xfe;
	U2 = 0;
    P0 = 0xff;

   D24 = 0;                //關(guān)閉8X8點(diǎn)陣LED
   D25 = 0;

    while(1)
	{
	 if(TF0==1)	//每次計(jì)時(shí)是50ms,達(dá)到50ms后計(jì)時(shí)器0的溢出位位1,進(jìn)行軟件清零和計(jì)時(shí)器初始化.
	  {
	     counter++;
		 TF0=0;
		 TH0 = 0x3C;    //12MHZ的晶振算出來是從15536開始計(jì)時(shí),十六進(jìn)制就是 0x3CB0
		 TL0 = 0xB0;    //高位取0x3C,低位取0xB0
	  }
	  if(counter==20)		 //20*50ms=1000ms=1s
	  {
	    counter=0;
		U1 = 1;
		P0 = table[offset++];
		U1 = 0;
		if(offset==11)
		{
		  offset = 0;
		}

	  }

	}

 }
[此貼子已經(jīng)被作者于2012-1-7 1:07:46編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:50654 發(fā)表于 2013-6-30 20:50 | 只看該作者
這程序用匯編怎么寫?尤其是//U1鎖存器的開關(guān)
                                       //U2鎖存器的開關(guān)
再回便利如何開關(guān),51板子的功能選擇不太會(huì),不知道怎么選區(qū)相應(yīng)部件
回復(fù)

使用道具 舉報(bào)

板凳
ID:56623 發(fā)表于 2013-11-4 18:34 | 只看該作者
贊,,,,,,,,,,,,,,,,,,,,,
回復(fù)

使用道具 舉報(bào)

地板
ID:56623 發(fā)表于 2013-11-4 18:35 | 只看該作者
樓主不錯(cuò),,期待更多的作品,,
回復(fù)

使用道具 舉報(bào)

5#
ID:66061 發(fā)表于 2014-10-12 22:11 | 只看該作者
樓主厲害!終于把數(shù)碼管搞明白了,就是不太懂這幾條語句有什么作用?是否多余?
typedef unsigned int  uint16;??????

sbit         LINX1  = P0^0;?????
sbit   LINY5  = P0^4;????
sbit   LINY6  = P0^5;??????
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日日摸日日碰夜夜爽亚洲精品蜜乳 | 亚洲最大成人综合 | 丁香五月缴情综合网 | 欧美日韩综合一区 | 亚州精品天堂中文字幕 | 久久精品国产精品青草 | 99爱国产 | 精品国产乱码久久久久久1区2区 | 黑人精品欧美一区二区蜜桃 | 久久天堂 | 欧美精品区 | 亚洲精品久久嫩草网站秘色 | 99成人在线视频 | 麻豆精品久久久 | 成人影院在线 | 欧洲一区二区三区 | 中文字幕在线免费观看 | 国产一区二区在线播放视频 | 亚洲免费高清 | 91视频在线观看 | 亚洲国产情侣自拍 | 免费的黄色片子 | 亚洲三级av | 狠狠操狠狠搞 | 91电影 | 精品日韩欧美一区二区 | 欧美成人激情视频 | 成人国产在线视频 | h片在线播放 | 久久国产婷婷国产香蕉 | 日韩精品久久久久久 | 九九久久国产 | 欧美成人精品激情在线观看 | 亚洲一二三区在线观看 | 国产精品一级 | 亚洲欧美国产精品一区二区 | 精品毛片在线观看 | 精品亚洲一区二区三区 | www.788.com色淫免费 | a在线视频观看 | 亚洲精品日韩精品 |