日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]一:電路原理和器件選擇制作電路:單片機(AT89S52)實現(xiàn)多功能數(shù)字鐘性能指標:該數(shù)字鐘實現(xiàn)時鐘運行,調(diào)整,倒計時,秒表功能,且精確度經(jīng)調(diào)試一天的誤差在2S內(nèi)。實現(xiàn)原理:利用單片機定時器及計數(shù)器產(chǎn)生定時效果通過

一:電路原理和器件選擇

制作電路:單片機(AT89S52)實現(xiàn)多功能數(shù)字鐘

性能指標:該數(shù)字鐘實現(xiàn)時鐘運行,調(diào)整,倒計時,秒表功能,且精確度經(jīng)調(diào)試一天的誤差在2S內(nèi)。

實現(xiàn)原理:利用單片機定時器及計數(shù)器產(chǎn)生定時效果通過編程形成數(shù)字鐘效果,再利用數(shù)碼管動態(tài)掃描顯示單片機內(nèi)部處理的數(shù)據(jù)。同時通過端口讀入當前外部控制狀態(tài)來改變程序的不同狀態(tài),實現(xiàn)不同功能。

電路主要模塊及原理圖:

1.數(shù)碼顯示硬件驅(qū)動

數(shù)碼管驅(qū)動電路

2.單片機最小系統(tǒng):

單片機最小系統(tǒng)

3.LED及單片機電源原理圖

LED及單片機電源

4.外部控制狀態(tài)輸入模塊原理圖

外部控制狀態(tài)輸入模塊原理圖

主要元器件選擇:

單片機:AT89S52采用市場上比較常用的AT89S52,這里采用AT89S52而不是AT89S51是為了最大限度減小誤差,因為要實現(xiàn)多功能(例如秒表,時鐘,倒計時)為了相互之間不干擾而要用到3個定時/計數(shù)器,而51系列只有2個,而52系列有3個,故采用52系列

三極管:用來進行數(shù)碼管顯示的位選,這里采用PNP管

數(shù)碼管:采用共陽級四位數(shù)碼管

晶振:采用的是11.0592MHZ的晶振

電源部分:采用5V電壓供電,采用的是L7805穩(wěn)壓芯片供電(加濾波)

電阻:大部分時限流電阻,阻值為4.7K或10K,1K

端口分配及連接:

P0:LED數(shù)碼管顯示內(nèi)容通過P1口從單片機傳送到數(shù)碼管

P2.4-P2.7:數(shù)碼管位選控制端口

P2.0-P2.3:分別連接開關(guān)K0,K1,K2,K3通過不同的組合實現(xiàn)外部控制程序狀態(tài)

P1.0:蜂鳴器,倒計時完畢產(chǎn)生鳴響

P1.2-P1.5:四個發(fā)光二極管,顯示當前時鐘狀態(tài)

完整的源程序如下:

附程序源代碼及注釋

#include

#include

#define uint unsigned int

#define uchar unsigned char

/*定義P2口各管腳*/

sbit K0=P2^2;

sbit K1=P2^1;

sbit K2=P2^0;

sbit K3=P2^3;

sbit D0=P2^4;

sbit D1=P2^5;

sbit D2=P2^6;

sbit D3=P2^7;

/*定義P1口各管腳*/

sbit beep=P1^0;

sbit L0=P1^5;

sbit L1=P1^4;

sbit L2=P1^3;

sbit L3=P1^2;

uchar data BUFFER[4]={0,0,0,0}; //顯示緩沖區(qū)(依次從低位到高位,共四位數(shù)碼管)

uchar data CLOCK[4]={0,0,0,0}; //存放時鐘時間(依次是百分秒,秒,分,時)

uchar data SECOND[3]={0,0,0}; //存放秒表時間(依次時百分秒,秒,分)

uchar data SEVER[4]={0,0,0,0}; //存放倒計時時間(依次是百分秒,秒,分,時)

/*定義程序運行狀態(tài)*/

uchar data STATE=0;

/*STATE=0;時鐘運行*/

/*STATE=1;時鐘分調(diào)整*/

/*STATE=2;未定義狀態(tài),可添加*/

/*STATE=3;時鐘時調(diào)整*/

/*STATE=4;倒計時分調(diào)整*/

/*STATE=5;倒計時時調(diào)整*/

/*STATE=6;秒表*/

/*STATE=7;倒計時運行*/

/*定義輔助計時全局變量*/

uchar m=60;

/*共陽數(shù)碼管顯示"0"-"9","-" */

uchar code TABLE[]={0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98,0xbf};

/*自定義子函數(shù)*/

void display(); //顯示函數(shù)

void delay(); //顯示延時函數(shù)

void intsvr(); //調(diào)整時間時加1子函數(shù)

void delay10ms(); //延時函數(shù)

/*主函數(shù)體*/

void main(void)

{

EA=1;ET0=1; //開總中斷源,開T0中斷

TMOD=0x61; //T1方式2計數(shù),T0方式1計時

TH0=-9460/256;TL0=-9460%256; //初始化計數(shù)器初值

TH1=0xff;TL1=0xff;

T2CON=0;TH2=-9452/256;TL2=-9452%256;

K0=1;K1=1;K2=1; //初始化控制狀態(tài)位

STATE=P2&0x07;

for(;;)

{

switch(STATE)

{

case 1: //時鐘分調(diào)整程序

{

TR0=0;ET0=0;EX0=0;TR2=0; //關(guān)閉定時器,時鐘停止運行,同時關(guān)閉外中斷IT0

L3=0;L1=0;L2=0;L0=1;

intsvr(); //調(diào)用加1函數(shù)

BUFFER[0]=CLOCK[2]%10; //數(shù)碼管顯示分鐘個位

BUFFER[1]=CLOCK[2]/10; //數(shù)碼管顯示分鐘十位

BUFFER[2]=10; //顯示"-"

BUFFER[3]=10; //顯示"-"

}break;

case 3: //時鐘時調(diào)整程序

{

TR0=0;ET0=0;EX0=0;TR2=0; //關(guān)閉定時器,時鐘停止運行

L3=0;L1=0;L2=0;L0=1;

intsvr(); //調(diào)用加1函數(shù)

BUFFER[0]=CLOCK[2]%10; //數(shù)碼管顯示分鐘個位

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉