<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于stc51單片機的電子時(shí)鐘設計

基于stc51單片機的電子時(shí)鐘設計

作者: 時(shí)間:2012-10-17 來(lái)源:網(wǎng)絡(luò ) 收藏

硬件資源

焊接電路板中使用STC系列單片機,一個(gè)四位一體數碼管、一個(gè)二極管,以及一些必要輔助子電路。數碼管的位選端口為P3^0、P3^1、P3^2、P3^3,段選端口為P1的8個(gè)端口;調節小時(shí)、分鐘端口分別為P0^0、P0^4,二極管指示燈接P2^2口。

由于使用的數碼管為共陽(yáng)極數碼管,因此根據數碼管結構圖可知,P3口必須置高電平選通其中一位,P0口低電平點(diǎn)亮相應的斷碼,這和共陰極數碼管0x3f代表0不一樣,這里表示為0xc0,編程時(shí)應該注意。

在數碼管的段碼連接上,我用的是a、b、c、d、e、f、g、h所對應的管腳11、7、4、2、1、10、5、3分別接P1^0、P1^1、P1^2、P1^3、P1^4、P1^5、P1^6、P1^7。因此,如果要顯示一個(gè)數字3的話(huà),由排列 hgfe dcba 得到 1011 0000 就是0xb0,但是不太確定P1口高低位是如何的,因此必須經(jīng)過(guò)測試程序進(jìn)行確定。

#include reg52.h>
#define uint unsigned int
void delay(uint cnt) //延時(shí)(cnt)ms
{
uint i;
while(cnt--)
{
for(i=0;i 110;i++);
}
}

main()
{
while(1)
{
P2=0x00;
P3=0xaa; //選通其中的兩位
P1=0xc0; //段碼賦值1100 0000
delay(20);
}

}


通過(guò)測試,得到的結果為0000,且指示燈亮。由于段碼:h、g、f、e、d、c、b、a對應著(zhù)斷碼之P3=hgfedcba,所以低位對低位,a、b、c、d、e、f、g、h分別接P1^0、P1^1、P1^2、P1^3、P1^4、P1^5、P1^6、P1^7是正確的。

當P1=0xc0時(shí),P1=1100 0000,也就對應著(zhù)a=b=c=d=e=f=0點(diǎn)亮(低電平),g=h=1熄滅(高電平)。兩外對于選位P3=0xaa,實(shí)際只接了P3的前4個(gè)端口,即低4位端口,也就是1010,其中P3^0=P3^2=0,而P3^1=P3^3=1。再根據數碼管選位端口12—9—8—6,我把12接P3^0、9接P3^1、8接P3^2、6接P3^3。

12

------------------------------------------------------------------------

A B C D E F G H

11 7 4 2 1 10 5 3

------------------------------------------------------------------------

9

------------------------------------------------------------------------

A B C D E F G H

11 7 4 2 1 10 5 3

------------------------------------------------------------------------

8

------------------------------------------------------------------------

A B C D E F G H

11 7 4 2 1 10 5 3

------------------------------------------------------------------------

6

------------------------------------------------------------------------

A B C D E F G H

11 7 4 2 1 10 5 3

------------------------------------------------------------------------

選位這里和硬件的連接方式有關(guān),這里不再多說(shuō),不過(guò)做時(shí)鐘的時(shí)候只可能一次掃描一個(gè)位的段碼值,這里為了直觀(guān)起見(jiàn),可以采用一一映射方式對選位的四個(gè)值進(jìn)行編碼。

tab[4]={0x01,0x02,0x04,0x8}; //從左至右第n個(gè)數碼管點(diǎn)亮需要向P3口送入的值;

tab1[4]={tab[0],tab[1],tab[2],tab[3]}; //從左至右選通第幾個(gè)數碼管?

這樣,只需要關(guān)注第幾個(gè)點(diǎn)亮就可以,不需要關(guān)注點(diǎn)亮時(shí)具體該向P3口輸出的值。我使用的數碼管并非標注的四位一體七段數碼管,中間含有兩個(gè)連體的二極管組成的兩點(diǎn),可以做時(shí)鐘的小時(shí)同分鐘的分隔符,它由8號管腳選通,由h管腳也就是3號管腳置低電平點(diǎn)亮。

小結:
選段選位怎么選不用太多關(guān)注,因為這和硬件的鏈接方式有關(guān),再設計硬件的時(shí)候,盡量直觀(guān)。根據寄存器P1 的值,比如01111111,這里有個(gè)高位低位的問(wèn)題,當把這個(gè)值送至寄存器P1時(shí),是按照高地位匹配的方式進(jìn)行分配的,當然要知道P1^0時(shí)低位,而P1^7是高位,于是有P1^7=0。

51單片機相關(guān)文章:51單片機教程




關(guān)鍵詞: stc51單片機 電子時(shí)鐘

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>