微控制器課程設計數字鐘

2023-01-21 04:54:04 字數 2990 閱讀 9873

課程設計報告

課程名稱: 微控制器原理與應用技術

實驗專案: 數字電子鐘

實驗地點: 電機館跨越機房

專業班級: 學號:

學生姓名

指導教師

2023年6月 15日

太原理工大學資訊工程學院

課程設計任務書

注:課程設計完成後,學生提交的歸檔檔案應按,封面—任務書—說明書—圖紙的順序進行裝訂上交(大張圖紙不必裝訂)

指導教師簽名日期:2015.3.1

課程設計說明書

一設計任務與要求

1、設計任務:

運用所學的微控制器原理知識,在keil c51和protues軟體平台上編寫出24小時標準計時制的時鐘電路程式

2、設計要求:

1、程式的首位址應使目標機可直接執行,即從0000h開始;在主程式的開始部分必須設定乙個合適的棧底;程式放置的位址必須連續且靠前,不要在中間留下大量的空閒位址,以使目標機可以使用較少的硬體資源。

2、6位led數碼管從左到右分別顯示時、分、秒(各占用2位),採用24小時標準計時制。開始計時時,顯示為00 00 00,到23 59 59後又變成00 00 00。

3、在鍵盤上選定3個鍵分別作為小時、分、秒的調校鍵。每按一次鍵,對應的顯示值便加1。 分、秒加到59後再按鍵即變為00,小時加到23後再按鍵即變為00。

在調校時均不向上一單位進製 (例如分位加到59後變為00,但小時位不發生改變)。

4、軟體設計時必須使用mcs-51片內定時器,採用定時中斷結構,不得使用軟體延時法。

5、上機除錯通過。

3、擴充功能:

另設乙個鍵,完成時間與日期的轉換,按一次鍵,跳轉為日期,再按一次鍵,跳轉為時間。

二系統設計

1 硬體結構概述

本設計基於at89c51微控制器為核心完成的。

本時鐘設計以at89c51微控制器為核心,外加少量其他輔助器件,硬體結構簡單。電路中使用的另乙個晶元為74hc573八位鎖存器,它是乙個普通的常用鎖存器,在本電路中主要起增加驅動能力的作用。 由於本電路結構簡單,微控制器i/o口完全夠用,故我們將6位8段led直接和微控制器相連。

硬體結構中的6位8段led顯示器,採用動態方式驅動。即使一位led顯示器顯示內容一段時間,然後下一位led顯示器顯示內容一段時間,周而復始。只要重新整理頻率不小於50hz,就可以獲得清晰穩定的顯示效果。

為了增加和位選相連線的i/o口的驅動能力,直接接上上拉電阻。在本設計中,只使用了4個按鍵。分別是時間日期轉換鍵、調節控制鍵、2個上下調節鍵。

2 程式流程圖:

3、定時器中斷程式:

設定定時器中斷時間,當中斷時間到達時,主程式轉入執行該中斷程式並保護現場,對定時器重送初值。判斷是否到1s、60s、60min,若是則對相應的時間顯示位進行處理。不是則恢復現場,中斷返回。

三程式清單

#include <>

#define uchar unsigned char

#define uint unsigned int

sbit dula=p2^0;

sbit wela=p2^1;

sbit s1=p1^0;

sbit s2=p1^1;

sbit s3=p1^2;

sbit s4=p1^3;

sbit g_56=p2^5;

sbit g_34=p2^6;

sbit g_12=p2^7;

uchar nian,yue,ri,shi,fen,miao,leap,flag,num;

uint t;

uchar code table=;

uchar code table1[2][13]=,};

void delay(uint z);

void time0_init(void);

void display_sfm(uchar shi_,uchar fen_,uchar miao_);

void init_time();

void display_nyr();

void keyscan();

void main()

if(num==2)

g_56=0;

g_34=~g_34;

g_12=0;

delay(10); }

if(num==3)

g_56=0;

g_34=0;

g_12=~g_12;

delay(10); }

if(num==0)

g_56=0;

g_34=0;

g_12=0; }

if(t>=3120)

t=0;

miao++;

if(miao==60)

miao=0;

fen++;

if(fen==60)

fen=0;

shiif(shi==24)

shi=0;

ri++; if(ri==(table1[leap][yue]+1))} }}}}

if(flag==0)

display_sfm(shi,fen,miao);

else

display_sfm(nian,yue,ri);

keyscan();}}

void delay(uint z)

void time0_init(void)

void init_time()

void time0() interrupt 1

void display_sfm(uchar shi_,uchar fen_,uchar miao_)

{ wela=1;

p0=0xfe;

wela=0;

dula=1;

p0=table[shi_/10];

dula=0;

delay(1);

wela=1;

p0=0xfd;

wela=0;

dula=1;

p0=table[shi_%10];

dula=0;

微控制器實習報告 數字鐘

at89s52晶元數字鐘 實習報告 課程名稱 專業姓名 班級學號 指導教師 目錄一 題目及設計要求 3 二 實驗內容 3 三 實驗原理 3 一 硬體介紹 3 二 實驗線路 6 三 流程圖 7 四 程式設計 9 五 除錯過程及測試結果 14 六 實習心得 14 七 參考文獻 15 一 題目及設計要求 ...

微控制器課程設計

課程設計報告 題目微控制器控制步進電機 課程名稱微控制器原理及接 術 院部名稱 專業自動化 班級 m10自動化 學生姓名 學號課程設計地點 課程設計學時 指導教師高峰 金陵科技學院教務處制 注 根據課程設計大綱第四項具體要求撰寫課程設計報告 目錄1設計任務和要求 3 2設計思路 4 3系統硬體設計 ...

微控制器課程設計

微控制器課程設計 第一章 設計題目 第二章 目的意義 第三章 要求和方案 第四章 設計內容 3.1 a d轉換電路的製作 3.2 微控制器序列口收發電路的製作 3.3 基本人機介面設計 3.4 基本專案知識 第五 設計步驟 4.1 理解並確定設計要求 4.2 確定整體控制方案 4.3 編寫程式 第六...