久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

單片機課程設計電子鐘

時間:2019-05-15 09:26:00下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《單片機課程設計電子鐘》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《單片機課程設計電子鐘》。

第一篇:單片機課程設計電子鐘

課程設計任務書

(指導教師填寫)

課程設計名稱電子技術課程設計學生姓名專業班級設計題目數字鐘

一、課程設計的任務和目的任務:設計一臺能顯示“時”、“分”、“秒”的數字鐘,周期為24小時;具有校時、正點報時功能。

目的:培養學生綜合運用所學知識的能力,綜合設計能力,培養動手能力及分析問題、解決問題的能力。

二、設計內容、技術條件和要求

1.數字鐘可顯示“時”、“分”、“秒”,且“時”、“分”、“秒”分別用兩個數碼管顯示,計滿23小時60分鐘60秒,則全部清零。

2.具有校時功能,時、分校時用1HZ的信號進行,而秒較時用2HZ時鐘信號進行。

3.整點能自動報時。要求報時聲響為四低一高,最后一響為整點,前四聲用500HZ信號讓喇叭發聲,最后一聲用1000HZ信號。

4.根據上述要求,畫出電路總框圖,簡述各部分工作原理。

5.進行各部分電路的設計,要求有分析過程、原理圖表示。

6.對原理圖進行仿真。

7.在實驗箱上組裝、調試。

8.撰寫設計總結報告。

三、時間進度安排

第一周:理論設計。

周一上午布置設計任務,講解設計要求,安排答疑、實驗時間;

周三、周四下午課程設計答疑,其他時間學生查資料,做初步理論設計;

周五交設計初稿,由指導教師審查;

第二周:仿真和安裝調試、撰寫設計總結報告

周一、二學生進實驗室做仿真實驗,并根據實驗情況修正設計圖;

周三至周五做插接線實驗,最后根據實驗情況總結、撰寫設計說明書。

四、主要參考文獻

1.各種版本的數字電子技術基礎教材

2.各種版本的電子技術課程設計指導書

3.集成電路手冊

指導教師簽字:年月日

第二篇:單片機課程設計電子鐘設計

單片機課程設計電子鐘設計

目錄

一、摘要

二、設計任務

三、基本原理

數碼管顯示可以用靜態顯示或動態顯示方法。靜態顯示需要數據鎖存器等硬件,接口復雜,時鐘顯示用四個數碼管。動態顯示相對簡單,但需動態掃描,掃描頻率要大于人視覺暫留頻率,信息看起來才穩定。譯碼方式可分為軟件譯碼和硬件譯碼,軟件譯碼通過譯碼程序查的顯示信息的字段碼;硬件譯碼通過硬件譯碼器得到顯示信息的字段碼,實際中通常采用軟件譯碼。

在具體處理時,定時器計數器采用中斷方式工作,對時鐘的形成在中斷服務程序中實現。在主程序中只需對定時器計數器初始化、調用顯示子程序和控制子程序。另外,為了使用便,設計了簡單的按鍵,可以通過按鍵實現時、分的調整,這樣在主程序中就加入了按鍵設置子程序。

四、編程算法思路

五、程序流程圖

六、硬件單元設計

七、軟件單元設計

八、調試結果分析

九、設計總結及心得體會

十、參考文獻

一設計任務

1、基本任務:利用定時器/計數器中斷和靜態顯示或動態顯示,實現電子時鐘的時分秒精確走時和校準

。時間顯示用四個數碼管分別顯示時、分、秒用點表示,在時和分的中間閃動,時間顯示格式(18:49)

時間校準用2個鍵實現:一個鍵K1作移位選擇(選中要修改的位,選中的位用閃爍指示),一個鍵K2做加1(對選中的位進行加1修改)。

2、功能增強型任務:在基本任務的基礎上加上日歷功能、準時報時功能和跑表功能

(1)日歷功能:能實現時、分、秒和年、月、日計時,增加1個按鍵控制分3屏例如顯開始的第1屏默認顯示“時、分、秒”四位+秒點,按下K3鍵顯示“月和日”四位,再按下課K3鍵顯示“年份”四位,再按下K3鍵顯示“時、分、秒”,依次類推。程序要能處理閏年、閏月功能。

(2)準點報時功能:可以在增加一個按鍵K4設計具有鬧鐘功能,實現定點報時。具體操作是:按下

K4鍵,進入鬧鐘設置功能,再通過K1、K2鍵來完成定點報警時間的設置。

(3)跑表功能:再增加一個按鍵K5設計跑表功能,實現啟動毫秒計數,相當與田徑運動比賽的跑

表工作。

三基本原理

軟件時鐘時利用單片機內部的定時器/計數器來實現的,它的過程如下:首先定單片機內部的一個定時器/計數器工作于定時方式,對機器周期形成基準時間,然后用另一個定時器/計數器或軟件計數的方法對基準時間計數形成秒,秒計60次形成分,分計60次形成小時,小時計24次則計滿一天。然后通過數碼管把它們的內容在相應位置顯示出來即可。

四編程算法思路

1、主程序的設計:串行口工作方式0,定時器/計數器1工作在方式1進行初始化,然后通過循環(調用顯示子程序)等待定時中斷的到來。

2、按鍵的控制:KEY1控制時的調節,kEY2控制分的調節,KEY3控制時、分定型

3、中斷服務程序的設計:中斷服務程序主要功能是實現時、分、秒的計時處理。

4、時、分、秒計時的實現:秒計時時采用中斷方式進行溢出次數的累計得到的。從秒到分,從分到時可通過軟件的累加和比較到位方法來實現。要求每滿1秒,則“秒”單元中的內容加1;“秒”單元每滿60,則“秒”單元清0,同時“分”單元中的內容加1;“分”單元每滿60,則“分”單元清0,同時“時”單元加1。“時”單元每滿24,則將“時”單元清0。

5、顯示子程序:采用數碼管靜態顯示來顯示時鐘的走動

6,延時子程序:用來實現按鍵操控延時和實現整點12時報時

五程序流程圖

六硬件單元設計

1、電路總設計圖

2、AT89C51芯片

七軟件單元設計

1、資源分配:定時器T1,P1.6為調整時鐘,P1.5為調整分鐘,P1.4為控制調整

30H秒顯示單元,31H分顯示單元,32H時顯示單元,08H放分調整標

志,09H放時調整標志,0AH放閃爍標志

2、程序清單(加注釋)

八調試結果分析

在實驗操作過程中,將所寫好的程序打入計算機內,通過編譯檢查其是否有錯誤,如有錯誤將其改正,直至無誤后下載仿真器,實現運行。觀察實驗箱上的數碼管顯示,判斷其是否為所需結果,如果與所要求的有差別,需繼續調試,重新修改程序,檢查硬件設施不斷地調試,不斷地檢查直至得到所要的結果。在調試過程中,開始運行時能夠實現時鐘的顯示,但是無法實現其閃爍功能,后經不斷調試修改及同學的幫助最終實現該功能,能夠達到時鐘顯示調節的基本要求,還可以實現整點報時。但在增加其功能顯示年月時又出現一定的問題,未能實現該功能,程序存在一定的不足性,需繼續完善,實現更多的功能

九設計總結及心得體會

經過兩天的單片機課程設計,終于完成了我的電子時鐘的設計,雖然沒有完全達到設計要求,但從心底里說,還是高興的,畢竟這次設計把一些基本功能都做了出來,只是一些增強型功能未能實現。

在本次設計的過程中,我發現很多的問題,雖然以前還做過一些實驗但這次設計真的讓我長進了很多單片機課程設計重點就在于軟件算法的設計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個程序并不是一件簡單的事,要有通篇的全局思想考慮問題。在操作的過程中,出現許多錯誤,都是在連接處不能夠上下連貫正確運行,還需繼續努力。有好多的東西,只有我們去試著做了,才能真正的掌握,只學習理論有些東西是很難理解的,更談不上掌握。

從這次的課程設計中,我真真正正的意識到,在以后的學習中,要理論聯系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經常的寫與讀的過程中才能提高,這就是我在課程設計中的最大收獲,同時,要把所學只是靈活應用才能真正領悟其中的意義,加深對它的理解與掌握。還有,通過此次的操作也使我的實踐操作能力得到了進一步的提高。

十參考文獻

【1】張毅剛,彭喜元,董繼成。單片機原理及應用。北京:高等教育出版社,2003

【2】周航慈。單片機應用程序設計技術(修訂版)。北京:北京航空航天大學出版社,2002

【3】萬光毅等。單片機實驗與實踐教程。北京:北京航空航天大學出版社,2003

【4】何立民,I2C總線應用系統設計。北京:北京航空航天大學出版社,2002

【5】周航慈,朱兆優,李躍忠。智能儀器原理與設計。北京:北航大學出版社,2005

第三篇:單片機課程設計-電子鐘-完整

單片機課程設計

題目

專業 通信工程 班級 11級1班 學號 姓名

電 子 鐘 設 計

單片機原理與應用課程設計

電子鐘設計

功能要求:

1、設計一個電子時鐘,要求可以顯示時、分、秒,用戶可以設置時間。

2、實現秒表功能。

功能描述

(1)

時鐘。初始界面是時鐘顯示,按鍵S1是調時選位,按鍵S2是加數。根據不同的閃爍位置進行調節。

(2)

年與日,星期。在初始狀態下,按下S2,則跳轉,顯示年月日,5S后跳回初始界面。若在年月日界面再次按下S2,則再次跳轉,顯示星期,幾秒后跳轉回初始界面。

(3)

秒表。在初始界面下,按下S3,則跳轉,進入秒表。秒表功能鍵如下:S1 退出秒表;S2 停止開始計時;S3 秒表清零。

(4)

鬧鐘。在設置中設置好時間,最高位設為“1”則打開鬧鐘。最高位設為“0”則關閉鬧鐘。在鬧鐘響是,按S3進行關鬧鐘。

工作原理 ? 硬件

采用80C51系列單片機作為CPU,P0口作為數據線,通過鎖存器進行段選和位選,是數碼管不斷地顯示數字。數碼管的顯示是掃描式。(1)

本電子鐘用的單片機型號是STC89C516RD+。P0口作為段選和位選的數據線。P10口為段選寄存器的使能端。P11口為位選寄存器的使能端。晶振采用的12MHz晶振。要求頻率穩定。

(2)

本電子鐘用的是共陰極數碼管。從左到右,第1,2位是秒位;第4,5位是分位;第7,8位是時位。第3,6位是“--”。

(3)

通過單片機的P0口,先對數碼管進行位選,即在位鎖存器使能是將P0口數據進行鎖存。再通過段鎖存器將P0口送來的段數據進行鎖存。此時數碼管的第一位顯示數字。同樣的步驟進行第二位顯示。以非常快的速度進行,由于人眼的余輝效應,會看到8位數碼管一起亮。即可以顯示時間。通過單片機的內部TO,T1的計數。即可以實現時鐘,秒表等功能。(4)電路圖如下:

? 軟件

程序代碼包括三部分:1.bujian(部件庫)2.main(主函數)3.H(頭文件庫)。一 .bujian(部件庫)(1)xianshi.c #include #include #define m 2 Unsigned char code t[]={0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void led_s(unsigned int s){ p10=1;p10=0;p11=1;P0=0x7f;

//數碼管秒個位

P0=t[s%10];p11=0;P0=0xff;delay(m);p10=1;p10=0;p11=1;P0=0xbf;p11=0;

//消隱

P0=t[s/10];

//消隱 //數碼管秒十位

P0=0xff;delay(m);} void led_f(unsigned int s){ p10=1;// P0=t[s%10];p10=0;p11=1;P0=0xef;

p11=0;

P0=0xff;delay(m);p10=1;

P0=t[s/10];p10=0;p11=1;P0=0xf7;p11=0;

P0=0xff;delay(m);} void led_h(unsigned int s){

// p10=1;P0=t[s%10];p10=0;p11=1;P0=0xfd;

p11=0;// P0=0xff;delay(m);p10=1;

P0=t[s/10];p10=0;p11=1;P0=0xfe;p11=0;

數碼管分個位 //消隱

//數碼管分十位

//消隱

數碼管時個位

消隱

//數碼管時十位

//消隱

P0=0xff;delay(m);}

void line(void){ p10=1;P0=0x40;p10=0;p11=1;P0=0xfb;delay(m);p11=0;

p10=1;P0=0x40;p10=0;p11=1;P0=0xdf;p11=0;delay(m);}

//消隱

P0=0xff;

//數碼管“---”

//消隱

P0=0xff;

//數碼管“---”

(2)miaobiao.c #include #include

#include extern mms,ms,mf,ss;void miaobiao(void){ TR1=1;while(1){ led_s(mms);led_f(ms);line();led_h(mf);if(s2==0){ while(!s2){led_s(mms);led_f(ms);line();led_h(mf);} if(ss==1){TR1=0;ss=!ss;}else {TR1=1;ss=!ss;} } if(s1==0){ while(!s1){led_s(mms);led_f(ms);line();led_h(mf);} TR1=0;break;} if(s3==0)

{ while(!s3){led_s(mms);led_f(ms);line();led_h(mf);} TR1=0;mms=0;ms=0;mf=0;} } }

(3)Delay.c #include

void delay(unsigned int a)

{ unsigned char l;

while(a--)

{for(l=0;l<100;l++);} }

(4)gongneng.c #include

#include #include extern h,f,s,n,y,r,nian,xing;extern ns,nf,nh;void gongneng(){ unsigned int aa=0,shanshuo=0,x=1,bb;

if(s2==0){ delay(3);if(s2==0)while(!s2){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);}

// while(1){ led_s(r);delay(2);led_f(y);delay(2);line();led_h(nian);delay(2);aa++;if(s2==0)

{ while(!s2)

{

led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);}

//星期顯示

while(1)

{led_f(xing);delay(2);

bb++;

if(bb==100){bb=0;break;}

日期顯示 }

}

if(aa==100)

line();led_f(y);delay(1);led_h(nian);delay(1);

} } if(s1==0){ delay(3);if(s1==0){

switch(x){ case 1 : if(shanshuo==1){led_s(s);} line();led_f(f);delay(2);led_h(h);delay(2);break;case 2 :led_s(s);if(shanshuo==1){led_f(f);} delay(2);line();led_h(h);delay(2);break;case 3 : led_s(s);led_f(f);delay(2);line();if(shanshuo==1){led_h(h);} delay(2);break;case 4 : if(shanshuo==1){led_s(r);} led_f(y);delay(2);line();led_h(nian);delay(2);break;case 5 : led_s(r);if(shanshuo==1){led_f(y);} delay(2);line();led_h(nian);delay(2);break;case 6 :led_s(r);led_f(y);delay(2);line();if(shanshuo==1){led_h(nian);} delay(2);break;case 7 :if(shanshuo==1){led_f(xing);delay(5);} break;case 8 :if(shanshuo==1){led_s(nf);} line();led_f(nh);delay(2);led_h(ns);delay(2);break;case 9 :led_s(nf);if(shanshuo==1){led_f(nh);} delay(2);line();led_h(ns);delay(2);break;case 10:led_s(nf);led_f(nh);delay(2);line();if(shanshuo==1){led_h(ns);} delay(2);break;default : break;}

aa++;if(s2==0){ while(!s2){if(x==1||x==2||x==3){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);} if(x==4||x==5||x==6){ led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);} if(x==7){ led_f(xing);} if(x==8||x==9||x==10){led_s(nf);led_f(nh);delay(2);line();led_h(ns);delay(2);} }

switch(x)

{ case 1 : s++;if(s>59)s=0;break;

while(!s1);while(1)

{ if(x==1||x==2||x==3)TR0=0;else TR0=1;if(aa==20){shanshuo=!shanshuo;aa=0;}

{ break;} { led_s(r);delay(1);

} if(s1==0)

case 2 :

}

f++;if(f>59)f=0;break;

case 3 : h++;if(h>23)h=0;break;case 4 : r++;if(r>31)r=1;break;case 5 : y++;if(y>12)y=1;break;case 6 : case 7 :

nian++;if(nian>20)nian=10;break;xing++;if(xing>7)xing=1;break;

case 8 : nf++;if(nf>59)nf=0;break;case 9 : nh++;if(nh>23)nh=0;break;case 10: ns=!ns;break;

default: break;{while(!s1){if(x==1||x==2||x==3){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);} if(x==4||x==5||x==6){ led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);} if(x==7){ led_f(xing);} if(x==8||x==9||x==10){led_s(nf);led_f(nh);delay(2);line();led_h(ns);delay(2);} }

x++;if(x>10){ x=0;TR0=1;break;} } } } } } } 二.H(頭文件庫)(1)Delay.h #ifndef _DELAY_H__

void led_s(unsigned int s);void led_h(unsigned int s);#define _DELAY_H__ void delay(unsigned int a);#endif(2)xianshi.h #ifndef _XIANSHI_H__ #define _XIANSHI_H__

void led_f(unsigned int s);void line(void);#endif(3)gongneng.h

#ifndef _DONGNENG_H__ #define _GONGNENG_H__ void gongneng(void);#endif(4)miaobiao.h

#ifndef _MIAOBIAO_H__ #define _MIAOBIAO_H__ void miaobiao(void);#endif(5)dingyi.h #ifndef _DINGYI_H__ #define _DINGYI_H__ sbit s1=P2^4;

sbit s2=P2^5;

sbit s3=P2^6;sbit p10=P1^0;sbit p11=P1^1;sbit p12=P1^2;#endif

//流水燈使能端 //按鍵1 //按鍵2 //按鍵3 sbit p37=P3^7;//蜂鳴器時能

三.Main(主函數)(1)main.c #include #include #include #include #include unsigned int h,m,f,s,n,y=10,r=12,nian=13,xing=2,mms,ms,mf;unsigned int ns=0,nf,nh,ll=0;unsigned int ss=1;void main(){ P0=0xff;p12=0;TMOD=0x12;EA=1;

ET0=1;TH0=6;TR0=1;

//關閉流水燈

ET1=1;TH1=(65535-5000)/256;TL1=(65535-5000)%256;TR1=0;while(1){ if((s3==0)&&(ns==0)){while(!s3);miaobiao();} if(s1==0||s2==0)gongneng();else { led_s(s);line();led_f(f);line();led_h(h);} if((f==nf)&&(h==nh)&&(ns==1))ll=1;else ll=0;} } void zhongduan(void)interrupt 1 {

if((ll==1)&&(ns==1))

{ p37=!p37;if((s3==0)&&(ns==1)){ while(!s3)ns=0;p37=1;} } n++;if(n==5000){n=0;s++;if(s==60){ s=0;f++;} if(f==60){ f=0;h++;}

if(h==24){ h=0;r++;xing++;} switch(r){ case 29 : if(nian/4==0){if(y==2)r=0;} y++;case 31 : if(y==4||y==6||y==9||y==11){ } if(xing>7)xing=1;if(y==13){ y=1;nian++;} } } default : break;

break;case 30 : if((nian/4)!=0){if(y==2){ r=0;y++;}} break;

r=0;y++;} break;case 32 : if(y==1||y==3||y==5||y==7||y==8||y==10||y==12){r=0;y++;} break;void zhongduan1(void)interrupt 3

{

TH1=(65535-5000)/256;

m++;TL1=(65535-5000)%256;if(m==2){mms++;m=0;if(mms>=100){ mms=0;ms++;} if(ms==60){ ms=0;mf++;} if(mf==60){ mf=0;} } }

參考文獻:

單片機中級教程(第2版)、單片機語言C51程序設計(趙文博)感想: 這次課程設計整體來說是成功的,但我也發現了自己許多錯漏和不足之處。譬如,最簡單的程序沒寫好就想著寫更復雜的程序,做事還是缺乏耐性和細心,當有時遇到問題時,總覺得無從下手,對于課本上的知識不能很好的組織起來。在編寫各功能程序時,特別是后來增添的比較復雜的程序

第四篇:單片機課程論文設計-電子鐘課程設計

單片機課程論文設計 ——電子鐘

一 課程設計的主要內容 1 設計思想 1.1硬件設計思想 1.1.1電路設計思想

電路原理圖見圖1,由動態數碼顯示組成時、分、秒的顯示。把“單片機系統”區域中的P1.0-P1.7端口用8芯排線連接到“動態數碼顯示”區域中的A-H端口上;把“單片機系統:區域中的P3.0-P3.7端口用8芯排線連接到“動態數碼顯示”區域中S-S8端口上;“單片機系統”區域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分別用導線連接到“獨立式鍵盤”區域中的SP3、SP2、SP1端口上。

1.1.2鍵盤設計思想

鍵盤是微機的主要設備,按鍵的讀取容易引起錯誤動作。可采用軟件去抖動的方法處理,軟件的觸點在閉合和斷開的時候會產生抖動,這時觸點的邏輯電平是不穩定的,如不采取妥善處理的話,將引起按鍵命令錯誤或重復執行,在這里采用軟件延時的方法來避開抖動,延時時間20ms.1.2軟件設計思想

本系統的主程序主要完成時間顯示和修改時間的功能。而時間單元進位,時間設定時,調定時間設定時等功能全部在中斷服務程序中完成。

1.2.1數據與代碼轉換

由前述可知,從P2口輸出位選碼,從P0口輸出段選碼,LED就會顯示出數字來。但P0口的輸出的數據是要BCD碼,各存儲單元存儲的是二進制數,也就是和要顯示出的字符表達的含義是不一致的。可見,將要顯示的存儲單元的數據直接送到P0口去驅動LED數碼管顯示是不能正確表達的,必須在系統內部將要顯示的數據經過BCD碼行轉換后,將各個單元數據的段選代碼送入P0口,給CD4511譯碼后去驅動數碼管顯示。具體轉換過程如下:

我們先將要顯示的數據裝入累加器A中,再將A中的數據轉換成高低兩位 的BCD碼,再放回A中,然后將A中的值輸出。如:有一個單元存儲了45這樣一位數,則需轉換成四位的BCD碼:(0100)(0101)然后放入A中。A中BCD碼,高位四位代表?4?低四位代表?5?同時送給兩個譯碼器中,譯碼后? 45? 字就在兩個LED中顯示出來。

1.2.2計時功能的實現與中斷服務程序

時間的運行依靠定時中斷子程序對時鐘單元數值進位調整來實現的。計數器T0打開后,進入計時,滿100毫秒后,重裝定時。中斷一次,滿一秒后秒進位,滿60秒后即為1分鐘,分鐘單元進位,60分到了后,時單元進位。得到時、分、秒存儲單元的值,并經譯碼后,通過掃描程序送LED中顯示出來,實現時鐘計時功能。累加是用指令INC來實現的。進入中斷服務程序以后,執行PUSH PSW和PUSH A將程序狀態寄存器PSW的內容和累加器A中的數據保存起來,這便是所謂的? 保護現場?.以保護現場和恢復現場時存取關鍵數據的存儲區叫做堆棧。在軟件的控制之下,堆棧可在片內RAM中的任一區間設定,而堆棧的數據存取與一般的RAM存取又有區別,對它的操作,要遵循? 后進先出? 的原則。

1.2.3時間控制功能與比較指令

系統的另一功能就是實現對執行設備的定時開關控制,其主要控制思想是這樣的:先將執行設備開啟的時間和關閉時間置入RAM某一單元,在計時主程序當中執行幾條比較指令,如果當前計時時間與執行設備的設定開啟時間相等,就執行一條CLR指令,將對應的那路P3置為高電位,開啟;如果當前計時時間與執行設備設定的關閉時間相等,就執行SETB對應的P3置低電位,二極管截止。實現此控制功能用到的比較指令為CJNE A,#direct,rel,其轉移條件是累加器A中的值與立即數不等則轉移。

二 課程設計的目的

實現的功能:

①開機時,電子鐘從12:00:00開始自動計時。②設置按鍵,能對時、分、秒進行調整。

三設計方案的論證

3.1電路原理與電路圖 3.1.1電路原理

電路原理圖見圖1,由動態數碼顯示管組成時、分、秒的顯示。P0口的8條數據線P0.0至P0.7分別與兩個CD4511譯碼的ABCD口相接,P2口的P2.0至P2.2分別通過電阻R10至R13與VT1至VT3的基極相連接。這樣通過P0口送出一個存儲單元的高位、低位BCD顯示代碼,通過P2口送出掃描選通代碼輪流點亮LED1至LED6,就會將要顯示的數據在數碼管中顯示出來。從P0口輸出的代碼是BCD碼,從P2口輸出的就是位選碼。這是掃描顯示原理。

電路原理圖

C130pFU1X119CRYSTAL18XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617S-0S-1S-2S-3S-4S-5S-6S-7C230pFXTAL2R210kR310kR410kR110k9RSTC310uF293031PSENALEEARP1987654321RESPACK-***78P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51時分秒S-7S-6S-5S-4S-3S-2S-1S-001234567

圖 1 電路原理圖

3.2 流程圖與算法描述 3.2.1流程圖

3.3軟件設計

SECOND

EQU 30H;MINITE EQU 31H;HOUR

EQU 32H;HOURK

BIT P0.2 MINITEK BIT P0.1 SECONDK BIT P0.0 DISPBUF EQU 40H DISPBIT EQU 48H 流程圖

秒寄存器

分寄存器

時寄存器 圖

T2SCNTA

EQU 49H

T2SCNTB EQU 4AH TEMP

ORG 00H;

程序執行開始EQU 4BH 地址

LJMP

START;

執行

ORG

0BH;T0

LJMP

INT_T0;

;主程序

START: MOV

SECOND,#00H;

得單元

MOV

MINITE,#00H

MOV

HOUR,#12

MOV

DISPBIT,#00H

MOV

T2SCNTA,#00H

MOV

T2SCNTB,#00H

MOV

TEMP,#0FEH

LCALL

DISP;

子程序

MOV

TMOD,#01H

MOV

TH0,#(65536-2000)/ 256;

MOV

TL0,#(65536-2000)/ 256

SETB

TR0;

SETB

ET0;

SETB

EA;

WT:

跳轉到標號START

中斷程序入口

跳至IN-T0執行

清0存放秒分時值

在2KB范圍內長調用 顯示2毫秒

允許TO中斷

開啟T0定時器

總中斷開放

按鍵掃描子程序及校時調整

JB

SECONDK, NK1;SECONDK為1(sp1建按下)時跳到

LCALL

DELY10MS

JB

SECONDK,NK1

INC

SECOND;

對計數器加1

MOV

A,SECOND

CJNE

A,#60, NS60;沒到60秒返回,到60秒清0;判斷計數器是否滿59

MOV

SECOND,#00H NS60:

LCALL

DISP

JNB

SECONDK,$;

NK1: JB

MINITEK,NK2;

LCALL

DELY10MS

JB

MINITEK,NK2;

INC

MINITE

MOV

A,MINITE

CJNE

A,#60, NM60

MOV

MINITE,#00H NM60:

LCALL DISP

JNB

MINITEK, $;

NK2:

JB

HOURK,NK3

LCALL

DELY10MS

JB

HOURK,NK3

INC

HOUR

MOV

A, HOUR

CJNE

A, #24,NH24

MOV

HOUR,#00H

不滿60秒就循環執行 分控制鍵按下時跳轉

分控制鍵按下時跳轉

不滿60分就循環執行

NH24:

LCALL

DIS

JNB

HOURK,$;

不滿24小時就循環執行

NK3 LJMP

WT DELY10MS:;

延時1毫秒的子程序

MOV D1:

MOV

;顯示子程序

DISP:

;

地址

MOV

ADD

DEC

MOV

MOV

MOV

DIV

MOV

DEC

MOV

MOV

DEC

MOV

MOV

DEC

MOV R6, #10 R7, #248 DJNZ

R7, $ DJNZ

R6, D1 RET

A, #DISPBUF;

A, #8 A R1, A A, HOUR;

B, #10;

AB @R1, A;

R1 A, B @R1, A R1;A, #10 @R1, A R1 A, MINITE;

將得出的時間存入40H(DISPBUF)之后的將temp中的十六進制數轉換成10進制 時送A

10進制/10=10進制 累加器送內部RAM單元

分送A

MOV B, #10

DIV

AB;

十進制調整

MOV @R1, A

DEC

R1

MOV

A, B

MOV

@R1, A

DEC

R1

MOV

A, #10

MOV

@R1,A

DEC

R1

MOV

A, SECOND;

MOV

B, #10

DIV

AB;

MOV @R1, A

DEC

R1

MOV A, B

MOV @R1, A

DEC

R1

RET INT_T0:;T0

MOV TH0,#(65536-2000)/ 256;

MOV TL0,#(65536-2000)/ 256

MOV A, #0FFH

MOV P3, A

MOV A, #DISPBUF

ADD

A, DISPBIT;

MOV R0, A

MOV A, @R0;

MOV DPTR, #TABLE;

MOVC A,@A+DPTR;

秒送A

十進制調整 TIME子程序 2毫秒 地址加,并將時間的各位送到p1 取顯示數據到A 取段碼表地址

查顯示數據對應段碼

中斷服務子程序,即計時

MOV

P1, A;

分十位送P1口顯示

MOV

A, DISPBIT

MOV

DPTR, #TAB;

表地址送數據指針

MOVC A,@A+DPTR

MOV

P3, A

INC

DISPBIT

MOV A, DISPBIT

CJNE A, #08H, KNA

MOV

DISPBIT, #00H KNA:

INC

T2SCNTA;

MOV A, T2SCNTA

CJNE

A, #100, DONE

MOV T2SCNTA, #00H

INC T2SCNTB

MOV A, T2SCNTB

CJNE A, #05H, DONE

MOV T2SCNTB,#00H

INC

SECOND;秒加一

MOV A, SECOND;

CJNE A, #60, NEXT;

MOV SECOND, #00H;

INC

MINITE;分加1

MOV A, MINITE;

CJNE A, #60, NEXT;

MOV

MINITE, #00H;

INC

HOUR;

時加1

MOV A, HOUR

CJNE A, #24, NEXT;

MOV

HOUR, #00H

時間的增加與進位 到60秒了嗎? 到60秒清0 到60分了嗎? 到60分清0 到24小時了嗎?

NEXT:

LCALL

DISP DONE:

RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H TAB:

DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07F

四 系統調試

系統由AT89C51、SEG數碼管、按鍵、電容、晶振、電阻等部分構成,能實現時間的調整、時間校對、定時時間的設定,輸出等功能。系統的功能選擇由按鍵‘時’、‘分’、‘秒’、完成。開機時,顯示12:00:00的時間開始計時;按鍵P0.0/AD0控制“秒”的調整,每按一次加1秒;P0.1/AD1控制“分”的調整,每按一次加1分;P0.2/AD2控制“時”的調整,每按一次加1個小時;系統的主程序主要完成時間顯示和定時輸出判斷功能。而時間單元進位,時間設定時,調定時間設定時等功能全部在中斷服務程序中完成。該電子鐘的精確度在仿真軟件中效果良好。

五 心得體會

計算機控制技術是一門很綜合的課程。任何一個計算機系統都是一個復雜的整體,學習計算機控制技術是要涉及到整體的每一部分。討論某一部分原理時又要涉及到其它部分的工作原理。這樣一來,不僅不能在短時間內較深入理解計算機的工作原理,而且也很難孤立地理解某一部分的工作原理。所以,在循序漸進的課堂教學過程中,我總是處于“學會了一些新知識,弄清了一些原來保留的問題,又出現了一些新問題”的循環中,直到課程結束時,才把保留的問題基本搞清楚。

學習該門課程知識時,其思維方法也和其它課程不同,該課程偏重于工程思維,靈活知識運用,具體地說,在了解了計算機編程后,剩下的是如何將它們用于實際系統中,其創造性勞動在于如何用計算機的有關技術和廠家提供的各種芯片,設計實用的電路和系統,再配上相應的應用程序,完成各種實際應用項目。

這次課程設計較為綜合,主要的困難來自對程序的編寫和校對,功夫不負有心人,經過我的虛心求學和查找資料,最終對實驗的原理有了較清晰的認識。但是仍然存在很多的不足,今后需要加強的地方還是很多,所以在今后的求學路上我會更加努力。望老師批評改正。

六 參考文獻:

[1].潘新民,王燕芳編著.微型計算機控制技術[M].北京:電子工業出版社,2003 [2].何立民.單片機應用技術選編(1)[M].北京:北京航空航天大學出版社,1995,6 [3].劉國榮,梁景凱.計算機控制技術與應用[M] .北京:機械工業出版社,1999,5 [4].齊維毅,丁言鎂,齊振國.單片機原理及應用設計實驗[M] .沈陽:遼寧大學出版社,2006,5 [5].李華.MCS-51系列單片機實用接口技術[M].北京:北京航空航天大學出版社,1993,8 [6].潘新民,王燕芳編著.單片微型計算機實用系統設計[M].北京:人民郵電出版社,1992

第五篇:單片機課程設計電子鐘源程序

ORG0000H

LJMPMAIN

ORG001BH

LJMPLOOP

ORG0100H

MAIN:MOV21H,#17H

MOV22H,#3AH

MOV23H,#00H;設定時間初值

MOV36H,#10

MOV39H,#10

MOVR7,#14H;循環20次50*20=1000msMOVDPTR,#0F003H

MOVA,#10000000B;8255命令口地址MOVX@DPTR,A

MOVTMOD,#10H

MOVTH1,#3CH

MOVTL1,#0B0H;設定計時初值

MOVIE,#88H;設定中斷運行位

SETBTR1

LOP:LCALLSTART

LCALLDSN;調用顯示程序

LJMPLOP

LOOP:MOVTH1,#3CH;重裝時間初值

MOVTL1,#0B0H

DJNZR7,LOOP1;循環結束

MOVR7,#14H

INC23H

MOVA,23H

CJNEA,#3CH,LOOP1

MOV23H,#00H

INC22H

MOVA,22H

CJNEA,#3CH,LOOP1

MOV22H,#00H

INC21H

MOVA,21H

CJNEA,#18H,LOOP1

MOV21H,#00H

MOV22H,#00H

MOV23H,#00H

LOOP1: RETI

START: MOVR1,#21H;將小時放在兩個位地址中MOVA,@R1

MOVB,#0AH

DIVAB

MOV3BH,A

MOV3AH,B

INCR1

MOVA,@R1

MOVB,#0AH

DIVAB

MOV38H,A

MOV37H,B

INCR1

MOVA,@R1

MOVB,#0AH

DIVAB

MOV35H,A

MOV34H,B

RET

DSN:MOVR0,#34H;顯示子程序;顯示數據緩沖區首址送R0

MOVR3,#7FH;使顯示器最左邊位亮

LP1:MOVDPTR,#0F000H;數據指針指向A口

MOVA,R3

MOVX@DPTR,A;送掃描值

INCDPTR;數據指針指向B口MOVA,@R0;取欲顯示數據的字形碼表位

PUSHDPH

PUSHDPL;顯示查表指令地址偏移量

MOVDPTR,#TAB

MOVCA,@A+DPTR;取出字形碼

POPDPL

POPDPH

MOVX@DPTR,A;送出顯示

ACALLDELAY;調用延時子程序

INCR0;指向下一個顯示緩沖區地址MOVA,R3

JNBACC.0,LP2;掃描到第八個顯示器?

RRA;未到,掃描碼右移一位

MOVR3,A

AJMPLP1

LP2:RET

TAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H

DB0BEH,0E0H,0FEH,0F6H,02H,0DFH

DELAY: MOVR5,#05H;延時子程序

DL1:MOVR6,#0FFH

DL2:DJNZR6,DL2

DJNZR5,DL1RET

END

下載單片機課程設計電子鐘word格式文檔
下載單片機課程設計電子鐘.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    電子鐘課程設計

    paequ 8002h pbequ 8004h pccequ 8001hORG0000HLJMP STARTORG 001BHLJMP INT START:MOV R0,#71HMOV R1,#06H CLEAR:MOV @R0,#00HINC R0 DEC R1 DJNZ R1,CLEARMOV 6DH,#00MOV......

    LCD電子鐘程序(廣工單片機課程設計)

    #include #define uchar unsigned char #define uint unsigned int #define KEY_IO P3 #define LCD_IO P0 sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2; s......

    長沙理工大學《單片機課程設計》電子鐘單片機實習報告

    目錄 一引言...............................................................................................................................5 二硬件設計..............

    單片機電子鐘設計任務書.

    目 錄 一、 課程設計的主要內容和要求 ……………………………………………… 1 二、 實現原理等知識的介紹 …………………………………………………… 2 2.1電子時鐘的設......

    多功能電子鐘設計 單片機課程設計報告東華理工

    單片機原理及應用設計課程設計報告 課題名稱:多功能電子鐘設計 姓 名: 學 號: 班 級: 指導老師:2017年6月13日 目錄 一、設計任務..................................................

    數字電子鐘課程設計

    課程設計名稱: 電子技術課程設計 題 目: 數字電子鐘課程設計 專 業:班 級:姓 名:學 號: 電氣工程及其自動化 電氣10-5 曹慶春 1 1001150103 目錄 1.綜述…………………………......

    智能儀表課程設計 電子鐘

    目錄 1.設計任務與要求 1 1.1設計目的 1 1.2設計要求 1 2.方案設計原理及方案論證 2 2.1系統整體設計思路 2 2.2系統方案論證 2 2.2.1 時鐘系統方案選擇 2 2.2.2單片機的選......

    數字電子鐘課程設計

    目錄 一. 引言???????????????????????2 二. 課程設計目的???????????????????2 三. 設計所需要的器材?????????????......

主站蜘蛛池模板: 无码专区视频中文字幕| 日韩av无码中文一区二区三区| 欧美性xxxx极品少妇| 野狼av午夜福利在线| 国产精品亚洲一区二区三区在线| 少妇做爰免费视频网站| 国产乱人视频在线播放| 玩弄少妇人妻中文字幕| 国产与黑人在线播放| 国产精品久久久久久久久久久久| 国产破外女出血视频| 肉岳疯狂69式激情的高潮| 国产色视频网站免费| 国产成人无码av大片大片在线观看| 日韩精品中文字幕无码专区| 国产亚洲欧美一区二区三区在线播放| 脱岳裙子从后面挺进去视频| 中文字幕精品久久久乱码乱码| 中文字幕乱码亚洲无线三区| 国产精品99久久久久久人| 精品人妻人人做人人爽夜夜爽| 国产激情无码一区二区app| 日本阿v网站在线观看中文| 亚洲午夜成人精品无码色欲| 色婷婷综合中文久久一本| 国产欧美丝袜在线二区| 激情综合色综合啪啪五月丁香| 美女裸体跪姿扒开屁股无内裤| 中日韩中文字幕无码一本| 国产精品后入内射日本在线观看| 48久久国产精品性色aⅴ人妻| 中文字幕丰满乱孑伦无码专区| 男女18禁啪啪无遮挡网站| 亚洲av无码乱码精品国产| 国产日韩一区二区三免费高清| 亚洲国产成人精品无码区软件| 日本夜爽爽一区二区三区| 色噜噜狠狠成人中文综合| 人妻另类 专区 欧美 制服| 中文字幕乱码亚洲无线码三区| 亚洲欧美另类激情综合区蜜芽|