欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機74hc595串行數碼管時鐘顯示程序+Proteus仿真
[打印本頁]
作者:
skcxks
時間:
2019-6-1 00:06
標題:
單片機74hc595串行數碼管時鐘顯示程序+Proteus仿真
分享給大家 簡要:本文主要內容是用8051系列和74HC595構成的的數字鐘的電路設計。
一、硬件設計
利用8951的端口進行控制74HC595的RCK,SCK和/G腳,控制顯示部分的內容。為了節約89X51的端口,采用兩片74HC595級聯的方式,一片595控制八位數碼管的段碼端,一片595控制八位數碼管的片選端,因此我們在選不同位數碼管的同時,加以輸入不一樣的內容,這樣我們采用動態顯示的方法,可以利用八位數碼管進行時鐘顯示的目的。因為595采用級聯的方式,我們在給595數據的時候,應該先進行后聯一片595的數據傳輸。舉個例子,比方說我們采用第一片進行位選的控制,然后級聯的一片595進行段碼的輸出。那么我們在向兩片595采用數據傳輸的時候,就應該先進行數據顯示的傳輸,而不是進行位選數據的傳輸?傊覀円鶕䞍善595的硬件設計不一樣,在軟件控制部分做好軟件部分的設計。
0.png
(74.05 KB, 下載次數: 70)
下載附件
2019-6-1 03:22 上傳
圖中共由三個部分構成,即:單片控制部分,數據傳輸顯示部分和按鍵調整部分。
單片控制部分核心器件由8051系列構成,外圍部分這里不給出。
數據傳輸顯示部分又由兩片74HC595和兩個四位的數碼管組成。
按鍵調整部分主要是三個按鍵,對秒,分,小時的校準和調節。
二、軟件部分
#include <AT89X51.H>
unsigned int tcount;
unsigned char m;
static unsigned char second,minute,hour;
unsigned char code fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char disbuf[8]={0,0,0,0,0,0,0,0};
//數據傳輸//
void sdata(void)
{unsigned char b,c,num;
if(b==0)
{
b++;
num=segbit[m];
for(c=0;c<8;c++)
{P3_2=0;
P3_3=num&0x80;
num<<=1;
P3_2=1;
}
}
if(b==1)
{
b--;
if(m==2||m==5)
{num=0xbf;}
else
{num=fseg[disbuf[m]];}
for(c=0;c<8;c++)
{ P3_2=0;
P3_3=num&0x80;
num<<=1;
P3_2=1;
}
}
m++;
if(m==8)
{m=0;
}
}
//數據傳輸//
//延時單位//
void delay (unsigned char h)
{ while(h--);
}
//延時單位//
//數據輸出//
void out(void)
{P3_4=0;
delay(50);
P3_4=1;
}
//數據輸出//
//按鍵控制//
void bcon(void)
{if(P3_5==0)
{delay(100);
if(P3_5==0)
{second=0;
while(P3_5==0);
}
}
disbuf[0]=second%10;
disbuf[1]=second/10;
if(P3_6==0)
{delay(100);
if(P3_6==0)
{minute++;
while(P3_6==0);
if(minute==60)
{minute=0;
}
}
}
disbuf[3]=minute%10;
disbuf[4]=minute/10;
if(P3_7==0)
{delay(100);
if(P3_7==0)
{hour++;
while(P3_7==0);
if(hour==24)
{hour=0;
}
}
}
disbuf[6]=hour%10;
disbuf[7]=hour/10;
disbuf[0]=second%10;
disbuf[1]=second/10;
disbuf[3]=minute%10;
disbuf[4]=minute/10;
disbuf[6]=hour%10;
disbuf[7]=hour/10;
}
//鍵盤控制//
//主函數//
void main(void)
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
while(1)
{
bcon();
復制代碼
五、小結
本文主要利用74HC595芯片構成數字顯示的一個例子,在硬件設計和軟件控制部分,只要二者互相結合,可以得到不同的電路,效果也可以不一樣,這主要給讀者自己去發揮。
0.png
(13.52 KB, 下載次數: 83)
下載附件
2019-6-1 03:23 上傳
全部資料51hei下載地址:
595串行時鐘顯示.rar
(72.67 KB, 下載次數: 284)
2019-6-1 00:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
Nilo
時間:
2019-6-1 22:33
謝謝分享。。。!
作者:
236131948
時間:
2019-6-18 10:05
新手,剛好想實現595的時鐘電路軟件,下來學習
作者:
歐陽云天
時間:
2019-6-18 18:45
請教一下,595寫數據的時候是寫最后一片再倒回來嗎?
作者:
dong123d
時間:
2019-6-18 20:32
請教一下,595寫數據的時候是寫最后一片再倒回來嗎
作者:
iaskall
時間:
2019-12-27 20:45
值得參考
作者:
jxdianqi
時間:
2020-4-12 23:05
收下啦,謝謝分享
作者:
1401372496
時間:
2020-4-13 10:32
有匯編版的嗎
作者:
elec_hangzhou
時間:
2021-11-2 16:34
某一個寶上的都沒有C51的程序, 剛好又買了595模塊,學習一下,謝謝分享。
作者:
kz0018
時間:
2022-11-13 11:46
驅動數碼管還是7219比較方便好用,但595有價格優勢,線路布局也方便點兒。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1