RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

求一種數(shù)字電子鐘的設計方案

冬至子 ? 來源:學霸知到 ? 作者:學霸知到 ? 2023-11-08 16:01 ? 次閱讀

1 設計任務

電子數(shù)字電子鐘是單片機系統(tǒng)的一個應用,由硬件和軟件相配合使用。硬件由主控器、時鐘電路、顯示電路、鍵盤接口4個模塊組成。主控模塊用STC89C52RC、時鐘電路用時鐘芯片DS1302、顯示模塊用 LCD1602、鍵盤接口電路用普通按鍵接上拉電阻完成;軟件利用C語言編程實現(xiàn)單片機程序控制。單片機通過時鐘芯片DS1302獲取時間數(shù)據(jù),通過1602液晶顯示器進行顯示陽歷年、月、日、時、分、秒、星期。

數(shù)字電子鐘的功能要求:數(shù)字電子鐘能用1602液晶顯示屏第一行顯示年、月、日、星期,第二行顯示秒、分、時。

數(shù)字電子鐘的按鍵要求:四個獨立按鍵的功能分別為:K1對秒、分、時的選擇,K4對年、月、日的選擇,K2加,K3減。

2 系統(tǒng)硬件設計

2.1 器件選擇

本系統(tǒng)以 AT89S52 單片機為控制核心,時鐘芯片DS1302,將得到的數(shù)據(jù)通過 1602液晶顯示出來,同時通過相應的按鍵調(diào)整相應的值。51單片機的硬件資源分配:單片機最小系統(tǒng)模塊:STC89C52RC單片機芯片;復位電路;晶振電路。本模塊AT89C52RC系統(tǒng)控制核心,單片機系統(tǒng)復位由按鍵電平復位電路完成,并設計獨立按鍵調(diào)節(jié)時間,本次設計顯示為6位,采用兩個四位一體數(shù)碼管(共陽極)作為顯示窗口,既可以節(jié)約成本又能簡化電路。STC89C52RC單片機包含中央處理器、程序寄存器(ROM)、數(shù)據(jù)存儲器(ROM)、并行接口、串行接口和舉行鍵盤等幾大單元及數(shù)據(jù)總線、地址總線、和控制總線等三大總線。STC89C52RC共有4組8位I/O口(P0、P1、P2、P3),用于對外部數(shù)據(jù)的傳輸。

2.2 硬件原理圖

STC89C52RC芯片有40個引腳:

(1)電源及時鐘引腳(4個)

Vcc:電源接入引腳。

GND:接地引腳。

XTAL1:晶體振蕩器接入的一個引腳。

XTAL2:晶體振蕩器接入的另一個引腳。

(2)控制線引腳(4個)

RST:復位信號輸入引腳。

ALE/PROG:地址鎖存允許信號輸出/編程脈沖引腳。

EA:內(nèi)外存儲器選擇引腳。

PSEN:外部程序存儲器(ROM)選通信號輸出引腳。

(3)并行I/O引腳(32個,分成4個8位端口

P0.0- P0.7:一般I/O端口引腳或數(shù)據(jù)/低位地址總線復用引腳。

P1.0- P1.7:一般I/O端口引腳。

P2.0- P2.7:一般I/O端口引腳或高位地址總線引腳。

P3.0- P3.7:一般I/O端口引腳或第二功能引腳。

STC89C52RC芯片,如圖2.1所示:

圖片

圖2.1 STC89C52RC芯片

1602 液晶功耗較小可直接與單片機接口相接,電源直接與電源電路相接,使用單片機的P0口和P1口與1602進行通信。1602 相應功能特性介紹 n +5V 電壓,對比度可調(diào) n 內(nèi)含復位電路n 提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能 n有80字節(jié)顯示數(shù)據(jù)存儲器 DDRAM n內(nèi)建有160個 5X7 點陣的字型的字符發(fā)生器 CGROM n 8 個可由用戶自定義的5X7的字符發(fā)生器CGRAM ,如圖2.2所示:

圖片

圖2.2 1602硬件原理圖

DS1302時鐘芯片包括實時時鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過一個簡單的串行接口與微處理器通信。實時時鐘/日歷提供秒、分、時、日、周、月和年等信息。對于小于31天的月和月末的日期自動調(diào)整,還包括閏年校正的功能。時鐘的運行可以采用24h或帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:Vcc1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;Vcc2在雙電源系統(tǒng)中提供主電源,在這種運用方式中,Vcc1連接到備份電,以便在沒有主電源的情況下能保存時間信息以及數(shù)據(jù)。DS1302由Vcc1或Vcc2中較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電;當Vcc2小于Vcc時, DS13026由Vcc1供電。如圖2.3所示:

圖片

圖2.3 DS1302時鐘模塊原理圖

按鍵部分電路采用獨立式按鍵,各按鍵相互獨立,每個按鍵單獨占用一根I/O口線,每根I/O口線的按鍵工作狀態(tài)不會影響其他I/O口線上的工作狀態(tài)。因此,通過檢測輸入線的電平狀態(tài)可以很容易判斷哪個按鍵被按下了。獨立式按鍵接口電路配置靈活,軟件結(jié)構(gòu)簡單。但每個按鍵需占用一根I/O口線,在按鍵數(shù)量較多時,I/O口浪費大。因此,獨立式按鍵主要用于按鍵較少或操作速度較高的場合。本次設計需要按鍵數(shù)較少,故選用獨立式按鍵。獨立式按鍵接口電路如圖2.4所示:

圖片

圖2.4 獨立式按鍵接口電路

3 系統(tǒng)軟件設計

3.1總體方案組成框圖

(1)主程序流程圖如圖3.1所示:

圖片

圖3.1 主程序流程圖

(2)子程序流程圖如圖3.2所示:

圖片圖3.2 時間調(diào)整程序流程圖

3.2軟件清單

void delay()此函數(shù)為延時函數(shù)     
void write_com()此函數(shù)為寫入命令函數(shù)
void write_date()此函數(shù)為寫入數(shù)據(jù)函數(shù)
void init()    此函數(shù)為初始函數(shù)
void write_sfm()此函數(shù)是時間設置地址,將數(shù)據(jù)寫入對應的地址的函數(shù)
void write_riqi()此函數(shù)是日期設置 將數(shù)據(jù)寫入對應的地址的函數(shù)
void keyscan()此函數(shù)是時間按鍵函數(shù)
void riqi_xq() 此函數(shù)是顯示星期的函數(shù)
void keys_riqi()      此函數(shù)是顯示日期的函數(shù)                       
void main()    此函數(shù)為主函數(shù)
下圖中為子函數(shù)
#include#define uchar unsigned char#define uint unsigned int
sbit dula=P2^6;sbit wela=P2^7;sbit lcdrs=P1^0;sbit lcdrw=P1^1;sbit lcden=P2^5;
sbit s1=P3^4;sbit s2=P3^5;sbit s3=P3^6;//sbit s4=P3^0;//sbit s8=P3^1;
//sbit s12=P3^2;sbit s4=P3^7;
uchar tt,s1num,s4num;char shi,fen,miao,shiji,nian,yue,ri,xq;
//string char code tabe2[7]={"MON","TUE","WED","THU","FRI","SAR","SUN"};
uchar code tabe[15]=" 2020_12-12_SAR";uchar code tabe1[14]="   30:30:20   ";
void delay(uint n)
{
while(n--)
{
uchar i;for(i=113;i >0;i--);
}
}
void write_com(uchar com)
{
lcdrw=0;lcdrs=0;P0=com;
delay(5);lcden=1;delay(5);lcden=0;
}
void write_date(uchar date)
{
lcdrw=0;lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;
}
void init()
{
uchar num;dula=0;wela=0;lcden=0;shi=20;fen=30;miao=30;ri=12;yue=12;
nian=20;shiji=20;write_com(0x01);write_com(0x3c);write_com(0x0c);
write_com(0x06);write_com(0x80);for(num=0;num< 15;num++)
{
write_date(tabe[num]);delay(10);
}
write_com(0x80+0x40);for(num=0;num< 14;num++)
{
write_date(tabe1[num]);delay(10);
}
TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;
      TR0=1;
}
void write_sfm(uchar add,uchar date)
{
uchar sh,ge;sh=date%100/10;ge=date%10;write_com(0x80+0x40+add);
write_date(0x30+sh);write_date(0x30+ge);
}
void write_riqi(uchar add,uint date)
{
uchar sh,ge;sh=date%100/10;ge=date%10;write_com(0x80+add);
write_date(0x30+sh);write_date(0x30+ge);
}
void keyscan()
{
if(s1==0)
{
delay(5);if(s1==0)
{
while(!s1);s1num++;if(s1num==1)
{
TR0=0;write_com(0x80+0x40+3);write_com(0x0f);
}
if(s1num==2)
{
write_com(0x80+0x40+6);
}
if(s1num==3)
{
write_com(0x80+0x40+9);
}
if(s1num==4)
{
s1num=0;TR0=1;write_com(0x0c);
}
}
}
if(s1num!=0)
{
if(s2==0)
{
delay(5);if(s2==0)
{
while(!s2);if(s1num==1)
{
miao++;if(miao==60)
miao=0;write_sfm(3,miao);write_com(0x080+0x40+3);
}
if(s1num==2)
{
fen++;if(fen==60)
fen=0;write_sfm(6,fen);write_com(0x080+0x40+6);
}
if(s1num==3)
{
shi++;if(shi==24)
shi=0;write_sfm(9,shi);write_com(0x080+0x40+9);
}
}
}if(s3==0)
{
delay(5);if(s3==0){
while(!s3);if(s1num==1
{
miao--;if(miao==-1)
miao=59;write_sfm(3,miao);write_com(0x80+0x40+3);
}
if(s1num==2)
{
fen--;if(fen==-1)
fen=59;write_sfm(6,fen);write_com(0x80+0x40+6);
}
if(s1num==3)
{
shi--;if(shi==-1)
shi=23;write_sfm(9,shi);write_com(0x80+0x40+9);
}
}
}
}
}
void riqi_xq()
{
switch(xq)
{
case 1:write_com(0x80+12);write_date(0x40+13);write_date(0x40+15);
write_date(0x40+14);write_com(0x80+12);break;
case 2:write_com(0x80+12);write_date(0x50+4);write_date(0x50+5);
write_date(0x40+5);write_com(0x80+12);break;
case 3:write_com(0x80+12);write_date(0x50+7);write_date(0x40+5);
write_date(0x40+4);write_com(0x80+12);break;
case 4:write_com(0x80+12);write_date(0x50+4);write_date(0x40+8);
write_date(0x50+5);write_com(0x80+12);break;
case 5:write_com(0x80+12);write_date(0x40+6);write_date(0x50+2);
write_date(0x40+9);write_com(0x80+12);break;
case 6:write_com(0x80+12);write_date(0x50+3);write_date(0x40+1);
write_date(0x50+2);write_com(0x80+12);break;
case 7:write_com(0x80+12);write_date(0x50+3);write_date(0x50+5);
write_date(0x40+14);write_com(0x80+12);break;
}
}
void keys_riqi()
{
if(s4==0)
{delay(10);if(s4==0)
{while(!s4);s4num++;if(s4num==1)
{TR0=0;write_com(0x80+0x0c);write_com(0x0f);
}
if(s4num==2)
{
write_com(0x80+9);
}
if(s4num==3)
{
write_com(0x80+6);
}
if(s4num==4)
{
write_com(0x80+3);
}
if(s4num==5)
{
write_com(0x80+1);
}
if(s4num==6)
{
s4num=0;TR0=1;write_com(0x0c);
}
}
}
if(s4num!=0)
{
if(s2==0)
{
delay(5);if(s2==0)
{
while(!s2);if(s4num==1)
{
xq++;if(xq==8)
xq=1;riqi_xq();
}
if(s4num==2)
{
ri++;if(ri==32)
ri=1;write_riqi(9,ri);write_com(0x80+9);
}
if(s4num==3)
{
yue++;if(yue==13)yue=1;write_riqi(6,yue);write_com(0x80+6);
}
if(s4num==4)
{
nian++;if(nian==100)
nian=0;write_riqi(3,nian);write_com(0x80+3);
}
if(s4num==5)
{
shiji++;if(shiji==100)
shiji=0;write_riqi(1,shiji);write_com(0x80+1);
}
}
}
if(s3==0)
{
delay(5);if(s3==0)
{
while(!s3);//s4num++;if(s4num==1)
{
xq--;if(xq==0)
xq=7;riqi_xq();
}
if(s4num==2)
{
ri--;if(ri==0)
ri=31;
write_riqi(9,ri);write_com(0x80+9);
}
if(s4num==3)
{
yue--;if(yue==0)
yue=12;write_riqi(6,yue);write_com(0x80+6);
}
if(s4num==4)
{
nian--;if(nian==0)
nian=99;write_riqi(3,nian);write_com(0x80+3);
}
if(s4num==5)
{shiji--;if(shiji==0)
shiji=99;write_riqi(1,shiji);write_com(0x80+1);
                        }                      
}
}
}
}
void main()
{
init();
while(1)
{
keys_riqi();keyscan();if(tt==20)
{
tt=0;miao++;if(miao==60)
{miao=0;fen++;if(fen==60)
{fen=0;shi++;if(shi==24)
{shi=0;ri++;xq++;if(ri==32)
{ri=1;yue++;if(yue==13)
{yue=1;nian++;if(nian==100)
{nian=0;shiji++;if(shiji==100)
{shiji=0;
}
write_riqi(1,shiji);
}
write_riqi(3,nian);
}
write_riqi(6,yue);
}
riqi_xq();write_riqi(9,ri);
}
write_sfm(9,shi);
}
write_sfm(6,fen);
}
write_sfm(3,miao);
}
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 發(fā)生器
    +關注

    關注

    4

    文章

    1368

    瀏覽量

    61677
  • 數(shù)碼管
    +關注

    關注

    32

    文章

    1882

    瀏覽量

    91060
  • 晶體振蕩器
    +關注

    關注

    9

    文章

    617

    瀏覽量

    29105
  • 數(shù)字電子鐘

    關注

    7

    文章

    27

    瀏覽量

    20598
  • STC89C52RC
    +關注

    關注

    15

    文章

    64

    瀏覽量

    38637
收藏 人收藏

    評論

    相關推薦

    數(shù)字電子鐘設計方案

    數(shù)字電子鐘設計方案數(shù)字鐘是一種數(shù)字電路技術實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的
    發(fā)表于 12-17 11:31

    一種數(shù)字信道化IFM接收機的高效實現(xiàn)方案

    本文提出的一種數(shù)字信道化IFM接收機方案結(jié)合了數(shù)字信道化接收機高效結(jié)構(gòu)和相位差分瞬時測頻方法,從而降低了系統(tǒng)復雜度,提高了實時處理能力,仿真結(jié)果表明該方案具有較好的信號檢測能力。用現(xiàn)代
    發(fā)表于 02-23 07:05

    一種數(shù)字微波設備監(jiān)控系統(tǒng)的設計

    本文給出一種數(shù)字微波設備監(jiān)控系統(tǒng)的設計,該系統(tǒng)引入μC/OS-II之后,系統(tǒng)的開發(fā)效率得到提高,整個系統(tǒng)的健壯性得到增強,文中對軟件設計應用中遇到的關鍵問題作了深入討論并給出了相應的解決方案
    發(fā)表于 04-26 06:23

    一種數(shù)字電壓表的設計方案

    一種以CPLD為核心處理電路的數(shù)字電壓表的設計方案
    發(fā)表于 04-28 07:14

    一種多路模擬數(shù)字采集與處理系統(tǒng)的設計方案

    一種多路模擬數(shù)字采集與處理系統(tǒng)的設計方案
    發(fā)表于 04-28 07:04

    一種數(shù)字式溫度測量電路的設計方案

    一種數(shù)字式溫度測量電路的設計方案
    發(fā)表于 05-17 06:16

    一種智能物品清點系統(tǒng)的設計方案

    一種智能物品清點系統(tǒng)的設計方案
    發(fā)表于 05-20 07:29

    一種新型WCDMA直放站PA的設計方案

    一種新型WCDMA直放站PA的設計方案
    發(fā)表于 05-26 06:14

    大佬分享一種小型通信系統(tǒng)的設計方案

    大佬分享一種小型通信系統(tǒng)的設計方案
    發(fā)表于 05-28 06:13

    一種基于單片機的簡易電子鐘設計方案

    、實驗目的和任務1、熟悉電子鐘的基本工作原理。2、掌握簡易電子鐘的硬件結(jié)構(gòu)及程序設計方法。二、實驗原理簡介電子鐘是人們?nèi)粘I钪胁豢苫蛉钡挠嫊r工具。與
    發(fā)表于 01-11 07:57

    一種基于單片機的簡易洗衣機系統(tǒng)仿真設計方案

    一種基于單片機的簡易洗衣機系統(tǒng)仿真設計方案
    發(fā)表于 01-17 08:09

    一種基于openmv競速小車的設計方案

    一種基于openmv競速小車的設計方案
    發(fā)表于 03-01 07:16

    一種數(shù)字IC測試系統(tǒng)的設計

    摘  要: 給出一種數(shù)字集成電路(IC)測試系統(tǒng)的軟硬件設計方案。該系統(tǒng)基于自定義總線結(jié)構(gòu),可測試寬范圍電平。 隨著數(shù)字集成電路IC的廣泛應用,測試系統(tǒng)就顯得越來
    發(fā)表于 03-24 13:13 ?1170次閱讀
    <b class='flag-5'>一種數(shù)字</b>IC測試系統(tǒng)的設計

    實現(xiàn)一種數(shù)字可調(diào)的升壓型開關電源的設計方案

      近年來,數(shù)字化在電源領域得到廣泛應用,許多電子設備要求電源具有多檔級。因此,這里提出了一種利用數(shù)字控制、電壓可調(diào)的開關電源設計方案,
    發(fā)表于 01-04 19:30 ?1057次閱讀

    一種數(shù)字式可調(diào)直流穩(wěn)壓電源系統(tǒng)設計方案

    一種數(shù)字式可調(diào)直流穩(wěn)壓電源系統(tǒng)設計方案
    發(fā)表于 06-25 10:32 ?35次下載
    RM新时代网站-首页