當前位置:首頁 » 服務存儲 » 多功能時間鬧鈴數據存儲的封裝
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

多功能時間鬧鈴數據存儲的封裝

發布時間: 2023-01-06 13:16:23

Ⅰ 手機鬧鍾為什麼有的時候不響

如果您使用的是華為手機,鬧鍾到點後不響鈴,請您按照以下場景排查解決:
一、 使用的第三方鬧鍾應用不響
可能是應用無法後台運行或者清理後台的時候清理了該應用,導致鬧鍾到點後不響。請按照以下方法進行設置:
1. 允許應用自啟動以及後台運行
(1)進入設置,搜索啟動管理/應用啟動管理,關閉此應用的自動管理開關,並打開允許自啟動、允許關聯啟動、允許後台活動。
(2)MUI5.X手機可能是開啟了鎖屏清理應用,或者使用手機管家 > 清理加速的時候清理了應用。
建議您在手機管家 > 剩餘XX% > 鎖屏清理應用中關閉應用開關,並在手機管家 > 清理加速 > 內存加速中取消勾選該應用,如果勾選則會導致使用清理加速的時候該應用被關閉。
2. 在多任務界面加鎖
(1)EMUI8.X及以下:進入多任務界面,選擇該應用,點擊加鎖符號,當鎖從打開狀態變成閉合狀態時,說明該應用已經加鎖,再次點擊,則解鎖;
(2)EMUI 9.X&EMUI 10.X&EMUI 11.X&Magic UI 2.X/3.X/4.0:進入多任務界面,選擇該應用,下滑應用,當應用右上角顯示小鎖圖標,說明該應用已經加鎖,再次下滑,則解鎖。
3. 設置開機啟動
(1)EMUI5.X:設置 > 應用管理,找到該應用,點擊許可權 > 右上角三個點> 查看所有許可權,打開開機啟動許可權;
(2)EMUI8.X:設置 > 應用和通知 > 應用管理,找到該應用,點擊許可權 > 右上角三個點> 查看所有許可權,打開開機啟動許可權;
(3)EMUI9.X/10.X/11.X&Magic UI2.X/3.X/4.0:設置 > 應用 > 應用管理,找到該應用,點擊許可權 > 查看所有許可權,打開開機啟動許可權。
二、子用戶或訪客鬧鍾不響鈴
1. 重啟手機後子用戶和訪客鬧鍾不響
重啟手機後,除機主用戶以外的其他用戶都處於休眠狀態,因此鬧鍾不會響鈴,以免打擾機主用戶。
2. 切換到其他子用戶模式後鬧鍾不響
手機存在多用戶,切換多次後,系統只保留機主用戶和最後一次被訪問的子用戶同時運行,其他用戶都處於休眠狀態,鬧鍾不會響鈴。
3. 退出訪客模式後鬧鍾不響
訪客切換到非訪客用戶後,訪客用戶會休眠,因此鬧鍾不會響鈴,以免打擾機主。為防止訪客模式鬧鍾不響,您可以機主用戶中設置鬧鍾。
三、節假日鬧鍾不響
1. 可能是您在設置鬧鍾時打開了智能跳過節假日開關,因此在節假日時此鬧鍾不會響鈴。如果您想在節假日正常響鈴,請您關閉智能跳過節假日開關即可。
2. 請確認日歷應用是否添加了應用鎖,日歷添加應用鎖後,鬧鍾無法獲取到日歷節假日信息,因此響鈴出現異常。請去除應用鎖後,再次設置鬧鍾嘗試。
3. 可能是時鍾同步節假日數據出現異常,請您嘗試清除日歷和時鍾數據後,再重新設置鬧鍾。清除數據操作路徑如下:
(1)打開設置,搜索進入「應用管理」,點擊時鍾>存儲,選擇刪除數據。(註:刪除時鍾數據會導致之前設置的鬧鍾等數據丟失,需要重新設置。)
(2)打開設置,搜索進入「應用管理」,點擊日歷>存儲,選擇刪除數據。(註:刪除日歷數據不會影響日程信息,但是需要重新聯網。)
四、開機狀態鬧鍾沒有鈴聲,鬧鍾不響
可能是鬧鍾鈴聲過小或者選擇了靜音模式不響鈴,按照以下方法排查:
1. 調節鬧鍾鈴聲
進入設置 > 聲音/聲音和振動,拖動滾動條將鬧鍾音量調到合適位置,並檢查鈴音文件是否能夠正常播放,如果不能播放,請更換鈴音文件嘗試。
2. 關閉翻轉靜音功能
請查看翻轉時鬧鍾靜音功能是否打開,在設置搜索並進入翻轉 > 計時器和鬧鍾靜音(沒有此路徑則表示手機不支持此功能),如果是打開狀態,請關閉後再次嘗試。
3. 開啟靜音模式鬧鍾響鈴功能
提示:EMUI9.1及以上版本取消了靜音模式鬧鍾響鈴開關,功能默認開啟。
進入時鍾 > 鬧鍾 > 設置 > 靜音模式鬧鍾響鈴,打開開關。
4. 關閉免打擾
提示:EMUI9.1及以上版本取消了允許鬧鍾打擾開關,免打擾模式下鬧鍾默認響鈴。
進入設置,搜索進入免打擾界面,關閉免打擾開關,或點擊免打擾模式,選擇允許鬧鍾打擾。
5. 清空緩存
請在設置中,搜索並進入應用管理,找到時鍾,點擊存儲 > 清空緩存,重新新建鬧鍾。
6. 恢復出廠設置
請您備份重要數據(微信/QQ等應用需單獨備份),將手機恢復出廠設置後重試。
五、關機鬧鍾不響
1. 勾選關機後鬧鍾仍然生效
設置鬧鍾後,長按電源鍵調出關機/重啟界面,點擊關機,勾選關機後鬧鍾仍然生效,然後點擊點擊關機按鈕。
2. 啟動後手機時間超過了鬧鍾設定時間
可能由於系統啟動較慢,導致開機啟動後鬧鍾時間已過,因此鬧鍾未響。建議您設置早於鬧鍾時間(15分鍾往上)的定時開機避免此問題出現。
如果以上方法均無法解決,建議您提前備份好數據(微信/QQ等應用需單獨備份)並攜帶購機憑證,到附近的華為客戶服務中心檢測。

Ⅱ ios開發 設置的鬧鍾 記錄是存放在SQLite資料庫里嗎

Ios一般用coredata資料庫,這是oc自帶的,不過裡面也封裝了Sqlite,所以基礎是Sqlite資料庫

Ⅲ 我的手機鬧鈴設置正常,為什麼就是總有時響有時不響

若使用的是vivo手機,鬧鍾出現不響鈴的情況,可以按以下方法解決:
一、使用第三方鬧鍾軟體不響
可能是軟體未在後台運行,比如清理了軟體後台,導致鬧鍾到點後不響。
1、進入設置--應用與許可權-/更多設置-許可權管理--許可權--自啟動--打開對應軟體
2、進入設置--電池--後台耗電管理 或 後台高耗電--找到對應軟體--允許後台高耗電
3、進入卡片式後台,下滑軟體,顯示小鎖標志,說明該應用已經加鎖,再次下滑,則解鎖。

二、節假日鬧鍾不響
可能是您在設置鬧鍾時開啟了"智能跳過法定節假日"開關,因此在節假日時鬧鍾不會響鈴。如果您想在節假日正常響鈴,請您關閉"智能跳過法定節假日"開關即可。

三、開機狀態鬧鍾沒有鈴聲,鬧鍾不響
可能是鬧鍾鈴聲過小,請您嘗試調節鬧鍾鈴聲。進入設置--聲音和振動,拖動滾動條將鬧鍾音量調到合適位置。

四、關機鬧鍾不響
1、手機電量不足時,系統不能啟動,因此鬧鍾不響鈴。
2、手機設置了定時開關機,啟動後手機時間超過了鬧鍾設定時間。
可能是由於系統啟動較慢,導致開機啟動後鬧鍾時間已過,因此鬧鍾未響鈴。建議您設置早於鬧鍾時間(10分鍾以上)的定時開機避免此問題出現。

若以上方法均未恢復:
鬧鍾出現不響鈴的情況,請您消消氣,您可以按以下方法解決:
1、進入設置--應用與許可權/更多設置--應用管理--找到「鬧鍾時鍾」--存儲--清除數據(操作前請注意備份鬧鍾數據);
2、進入設置--系統升級,部分機型需進入設置--我的設備--iQOO (Monster) UI版本/Funtouch OS版本,檢測並更新系統;
3、將設置的鬧鍾刪除,再重新設置;
4、進入設置--系統管理/更多設置--備份與重置/恢復出廠設置--還原所有設置,該操作會導致登錄的第三方軟體賬號需要重新登錄,但不會清除手機存儲中的照片,視頻等文件,請確認不影響某些第三方軟體的使用後再進行還原所有設置操作。 避免操作出現異常導致數據丟失,建議您先備份下手機的重要數據。

Ⅳ JAVA 鬧鍾程序

import java.util.*;
import java.awt.*;
import java.applet.*;
import java.text.*;
import java.awt.event.*;

public class Alarm extends Applet implements Runnable
{
Thread timer=null; //創建線程timer
Image gif1; //clockp:鬧鍾的外殼,鬧鈴和報時物
boolean setflag=false,stopflag=false,cancelflag=false;
Panel setpanel;
//獲取聲音文件
AudioClip ring=getAudioClip(getCodeBase(), "1.mid");
Button setbutton=new Button("SET");
Button cancelbutton=new Button("CANCEL");
Button stopbutton=new Button("STOP");
//響應按鈕事件
private ActionListener setli=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setflag=true;
}
};
private ActionListener cancelli=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setflag=true;
}
};
private ActionListener stopli=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ring.stop();
//清除的方法
//g.clearRect(83,280,20,30);
}
};

Label note1=new Label("Alarm clock:");
//GregorianCalendar提供的是一個日歷式的東東,上面又多了很多的參數,是方便操作了不少。而Date類的功能遠不及其,求個和日期有聯系的還要自己計算。
GregorianCalendar cal=new GregorianCalendar();
GregorianCalendar cal2=new GregorianCalendar();
SimpleDateFormat df=new SimpleDateFormat("yyyy MM dd HH:mm:ss");//設置時間格式
Date mmy=new Date(); //生成Data對象
String lastdate=df.format(mmy);
Font F=new Font("TimesRoman",Font.PLAIN,14);//設置字體格式
Date dat=null;
Date timeNow;
Color fgcol=Color.blue;
Color fgcol2=Color.darkGray;
Color backcolor=Color.blue;
Label hlabel2,mlabel2,slabel2;//顯示時間單位時所用的標簽(時、分、秒)
int i;
int s,m,h;
TextField sethour,setmin,setsec;//顯示當前時間文本框和定時文本框

//在Applet程序中,首先自動調用初始化完成必要的初始化工作,緊接著自動調用start,在進入執行程序和返回到該頁面時被調用,而從該頁面轉到別的頁面時,stop被調用,關閉瀏覽器時,執行destroy。
public void init()//初始化方法
{
int fieldx=50,fieldy1=120,fieldy2=220,fieldw=30,fieldh=20,space=50;//顯示時間和定時文本框的定位參數
setLayout(null); //將布局管理器初始化為null
setpanel=new Panel();
setpanel.setLayout(null);
setpanel.add(note1);
note1.setBounds(30,100,60,20);
note1.setBackground(backcolor);
note1.setForeground(Color.black);
//定時用的文本框(時、分、秒)
sethour=new TextField("00",5);
setmin=new TextField("00",5);
setsec=new TextField("00",5);
hlabel2=new Label();
mlabel2=new Label();
slabel2=new Label();
//定時的小時文本框的位置、大小
setpanel.add(sethour);
sethour.setBounds(fieldx,fieldy2,fieldw,fieldh);
sethour.setBackground(Color.white);
//在文本框後加入單位「時」
setpanel.add(hlabel2);
hlabel2.setText("h");
hlabel2.setBackground(backcolor);
hlabel2.setForeground(Color.black);
hlabel2.setBounds(fieldx+fieldw+3,fieldy2,14,20);
fieldx=fieldx+space;
//定時的分鍾文本框的位置、大小
setpanel.add(setmin);
setmin.setBounds(fieldx,fieldy2,fieldw,fieldh);
setmin.setBackground(Color.white);
//在文本框後加入單位「分」
setpanel.add(mlabel2);
mlabel2.setText("m");
mlabel2.setBackground(backcolor);
mlabel2.setForeground(Color.black);
mlabel2.setBounds(fieldx+fieldw+3,fieldy2,14,20);
fieldx=fieldx+space;
//定時的秒文本框的位置、大小
setpanel.add(setsec);
setsec.setBounds(fieldx,fieldy2,fieldw,fieldh);
setsec.setBackground(Color.white);
//在文本框後加入單位「秒」
setpanel.add(slabel2);
slabel2.setText("s");
slabel2.setBackground(backcolor);
slabel2.setForeground(Color.black);
slabel2.setBounds(fieldx+fieldw+3,fieldy2,14,20);
//設置鬧鍾控制按鈕(on,off)
setpanel.add(cancelbutton);
setpanel.add(setbutton);
setpanel.add(stopbutton);
cancelbutton.setBounds(90,180,40,20);
setbutton.setBounds(140,180,40,20);
stopbutton.setBounds(522,180,40,20);
setbutton.addActionListener(setli);
cancelbutton.addActionListener(cancelli);
stopbutton.addActionListener(stopli);
stopbutton.setVisible(false);
//將面板加入當前容器中,並設置面板的大小和背景色
add(setpanel);
setpanel.setBounds(300,1,250,420);
setpanel.setBackground(backcolor);

/*int xcenter,ycenter,s,m,h;
//鬧鍾中心點所在位置
xcenter=145;
ycenter=162;
s=(int)cal.get(Calendar.SECOND);
m=(int)cal.get(Calendar.MINUTE);
h=(int)cal.get(Calendar.HOUR_OF_DAY);
//初始化指針位置
lastxs=(int)(Math.cos(s*3.14f/30-3.14f/2)*30+xcenter);
lastys=(int)(Math.sin(s*3.14f/30-3.14f/2)*30+ycenter);
lastxm=(int)(Math.cos(m*3.14f/30-3.14f/2)*25+xcenter);
lastym=(int)(Math.sin(m*3.14f/30-3.14f/2)*25+ycenter);
lastxh=(int)(Math.cos((h*30+m/2)*3.14f/180-3.14f/2)*18+xcenter);
lastyh=(int)(Math.sin((h*30+m/2)*3.14f/180-3.14f/2)*18+ycenter);
lasts=s; */

MediaTracker mt=new MediaTracker(this);//為給定組件創建一個跟蹤媒體的MediaTracker對象,把圖片添加到被跟蹤的圖片組

//Java允?Sapplet??HTML所在的位置(decument base)下?d?Y料,也允?Sapplet?鈉涑淌醬a所在的位置(code base)下?d?Y料。藉由呼叫getDocumentBase()?cgotCodeBase()可得到URL物件。?@些函?????湍閼業僥閬胂螺d的?n案的位置
//clockp=getImage(getDocumentBase(),"11.png");
gif1=getImage(getCodeBase(),"2.gif");

//i為id號

mt.addImage(gif1,i++);

try
{
mt.waitForAll();
}
catch(InterruptedException e)
{};//等待載入結束
resize(600,420);//設置窗口大小
}
//窗口顯示有改變的時候調用paint
public void paint(Graphics g)
{//重寫paint()方法
int xh,yh,xm,ym,xs,ys,strike_times;
int xcenter,ycenter;
String today;
xcenter=148;
ycenter=186;
dat=new Date();
//用當前時間初始化日歷時間
cal.setTime(dat);
//讀取當前時間
s=(int)cal.get(Calendar.SECOND);
m=(int)cal.get(Calendar.MINUTE);
h=(int)cal.get(Calendar.HOUR_OF_DAY);
//換一種時間表達形式
today=df.format(dat);
//指針位置
xs=(int)(Math.cos(s*3.14f/30-3.14f/2)*30+xcenter);
ys=(int)(Math.sin(s*3.14f/30-3.14f/2)*30+ycenter);
xm=(int)(Math.cos(m*3.14f/30-3.14f/2)*25+xcenter);
ym=(int)(Math.sin(m*3.14f/30-3.14f/2)*25+ycenter);
xh=(int)(Math.cos((h*30+m/2)*3.14f/180-3.14f/2)*12+xcenter);
yh=(int)(Math.sin((h*30+m/2)*3.14f/180-3.14f/2)*12+ycenter);
//設置字體和顏色
g.setFont(F);
//前景色

g.setColor(getBackground()); //取背景色的
g.drawImage(gif1,75,110,this);
//以數字方式顯示年、月、日和時間
g.drawString(today,55,415);

//畫指針
g.drawLine(xcenter,ycenter,xs,ys);
g.drawLine(xcenter,ycenter-1,xm,ym); //(x1,y1,x2,y2)
g.drawLine(xcenter-1,ycenter,xm,ym);
g.drawLine(xcenter,ycenter-1,xh,yh);
g.drawLine(xcenter-1,ycenter,xh,yh);

int timedelta;//記錄當前時間與鬧鈴定時的時差
Integer currh,currm,currs;//分別記錄當前的時、分、秒

Date dat2=new Date();
cal2.setTime(dat2);
//讀取當前時間
currh=(int)cal2.get(Calendar.SECOND);
currm=(int)cal2.get(Calendar.MINUTE);
currs=(int)cal2.get(Calendar.HOUR_OF_DAY);
//這樣做的話說我API已過時
//timeNow=new Date();
//currh=new Integer(timeNow.getHours());
//currm=new Integer(timeNow.getMinutes());
//currs=new Integer(timeNow.getSeconds());

if(setflag)
{ //判斷是否設置了鬧鍾
//判斷當前時間是否為鬧鍾所定的時間
if((currh.intValue()==Integer.valueOf(sethour.getText()).intValue())&&(currm.intValue()==Integer.valueOf(setmin.getText()).intValue())&&(currs.intValue()==Integer.valueOf(setsec.getText()).intValue()))
{
ring.play();
g.drawImage(gif1,83,280,this);
stopbutton.setVisible(true);
}
timedelta=currm.intValue()*60+currs.intValue()-Integer.valueOf(setmin.getText()).intValue()*60-Integer.valueOf(setsec.getText()).intValue();
if((timedelta>=30))
{
//若當前時間與鬧鍾相差時間超過30秒,鬧鍾自動停
ring.stop();
//清除的方法
g.clearRect(83,280,20,30);
}
}
dat=null;
}

public void start()
{
if(timer==null)
{
timer=new Thread(this);//將timer實例化
timer.start();
}
}

public void stop()
{
timer=null;
}

//給創建線程後start之後自動執行的函數
public void run()
{
//在run()方法中,調用repaint()方法,以重繪小程序區,進行時鍾顯示的更新。接著調用sleep方法讓當前線程(也就是我們創建的線程clockthread)睡眠1000毫秒,因為我們每秒鍾要更新一下顯示,所以讓它睡眠1秒
while(timer!=null)
{
try
{
timer.sleep(1000);
}
catch(InterruptedException e)
{}
//調用repaint時,會首先清除掉paint方法之前的畫的內容,再調用paint方法
repaint();//刷新畫面
}
timer=null;
}

//當AWT接收到一個applet的重繪請求時,它就調用applet的 update(),默認地,update() 清除applet的背景,然後調用 paint()。重載 update(),將以前在paint()中的繪圖代碼包含在update()中,從而避免每次重繪時將整個區域清除
//有兩種方法可以明顯地減弱閃爍:重載 update()或使用雙緩沖。
//使用雙緩沖技術:另一種減小幀之間閃爍的方法是使用雙緩沖,它在許多動畫Applet中被使用。其主要原理是創建一個後台圖像,將需要繪制的一幀畫入圖像,然後調用DrawImage()將整個圖像一次畫到屏幕上去;好處是大部分繪制是離屏的,將離屏圖像一次繪至屏幕上比直接在屏幕上繪制要有效得多,大大提高做圖的性能。
// 雙緩沖可以使動畫平滑,但有一個缺點,要分配一張後台圖像,如果圖像相當大,這將需要很大一塊內存;當你使用雙緩沖技術時,應重載 update()。

public void update(Graphics g)
{
Image offscreen_buf=null;
//採用雙緩沖技術的update()方法
if(offscreen_buf==null)
offscreen_buf=createImage(600,420);
Graphics offg=offscreen_buf.getGraphics();
offg.clipRect(1,1,599,419);
paint(offg);
Graphics ong=getGraphics();
ong.clipRect(1,1,599,419);
ong.drawImage(offscreen_buf,0,0,this);
}

/** Creates a new instance of AlarmClock */
}

Ⅳ Android開發一個簡單實用的鬧鈴APP

生活中我們會常常遇到需要鬧鍾提醒;不管是起床還是生活中的事件提醒。

那作為Android開發如何自己開發一個鬧鍾功能呢,是不是覺得很酷呢?接下來我們就實戰一個鬧鍾。





本示例採用的是RecyclerView,其適配器類與常無二,其異在於繼承一個代理類,為適配之後側滑刪除而准備

建立一個內部類ViewHolder實現控制項定義申明

實現onCreateViewHolder方法載入子項布局文件

綁定實體類,實現onBindViewHolder獲取數據

此處有三處狀態,第一種狀態:第一次進入程序,默認載入固定鬧鍾子項;第二種狀態:進入添加子項頁面,然後返回其主頁面,並判斷其switch是否為ture,如果為ture則添加子項;第三種狀態:程序被系統回收或者用戶停止程序,並再次進入程序,防止載入前一時刻鬧鍾子項;

添加依賴 實現側滑主要依賴於一個第三方包,然後使用RecyclerView進行子項綁定 依賴如下:

並在目錄build.gradle包下添加如下庫

其實現側滑刪除主要的玄機在於布局文件當中,使用RelativeLayout布局,將刪除按鈕固定在布局右方,並使用其他布局將其覆蓋,只有滑動時,才將其顯示。掩蓋側滑刪除按鈕與暴露側滑刪除按鈕效果對比圖如下





然後,在適配器類中,實現WeSwipeHelper.SwipeLayoutTypeCallBack介面,實現如下三個方法,第一個方法為獲取側滑刪除按鈕的寬度;第二個方法為需要滑動的視圖,也就是覆蓋側滑刪除按鈕的布局;第三個方法為當視圖正在滑動時,用戶觸發單擊事件,自動還原滑動狀態

最後,在需要添加子項的視圖中綁定RecyclerView即可

通過監聽子項滑動刪除按鈕點擊事件,實現子項刪除

跳轉新增鬧鍾子項Acticity需要傳輸實體類對象,傳輸對象一般需要序列化改類,其操作如下

定義實體類,並實現序列化

然後通過Intent傳輸Bundle對象

實現時間選擇主要使用系統集成的組件TimePicker,其使用方法如下 其有兩種顯示方式,第一種為spinner,就是下拉滑動式,第二種為clock,即顯示一個時鍾,通過滑動指針選擇時間

在style.xml文件中申明如下樣式

然後再指定Activcty申明即可

獲取數據比較簡單,實現對應介面即可

將獲取的數據通過SharedPreferences存儲起來,然後點擊存儲時,進行頁面跳轉,然後再該界面進行取出數據

存儲數據

首先判斷回調的switch數據是否為ture,如果為ture則保存該子項,然後再適配器類中進行數據添加

選中與默認兩種狀態效果圖如下




創建thumb和track樣式

創建一個選擇器文件,有選中和默認兩種狀態

創新open_thumb.xml文件

創建shut_thumb.xml文件

同樣創建一個選擇器,並用於兩種狀態

其中AlarmManager為系統主要操作類,參數為提醒模式、提醒時間(long型)、PendingIntent對象 以下有三種時間傳入,第一種,直接傳入一個Long型時間用於測試,第二種,通過設置系統啟動至今而設置時間,第三種,通過取出設置的時間,然後獲取系統當前時間,將其差傳入其中。

然後再清單文件中注冊服務

使用Intent實現服務啟動

殺死程序

本示例總共使用到了三個單例類:SP(SharedPreferences封裝)、TimeFormat(時間數據格式封裝)、KillProcess(殺死所有Activity)

SharedPreferences

KillProcess

文章帶這里就完成了一個簡單的鬧鍾;Android開發還有許多更加更多的知識學習。進一步學習Android技術,我這里推薦這份筆記方便學習,我就放在私信, 發送「核心筆記」或「手冊」即可獲取。朋友們可以免費領取!

Ⅵ 本人是學應用電子的 誰有這方面專業的畢業論文 給我一份謝謝了

湖州職業技術學院應用電子專業畢業論文 摘 要 51 電子鬧鍾是集電子技術、 數字顯示技術為一體的高產品, 具有按時鬧鈴, 使用方便等優點。本論文從 51 電子鬧鍾系統的功能,硬體電路設計,軟體設計 和產品介紹四部分分別論述這一系統。本系統 51 電子鬧鍾硬體部分結構簡單、 成本低,具有比較好的市場前景。 現代的快節奏生活給人們的精神上帶來了很大壓力。如何排解或緩解這些 壓力已經成為很多人和探索者多年來的一個重要研究項目,電子鬧鍾減壓正是 應此而生。 I 湖州職業技術學院應用電子專業畢業論文 第一章 緒論 1.1 概述電子鬧鍾在科學技術高度發展的今天,千家萬戶都少不了它,所以很多家庭 個人都需要有一個電子鬧鍾, 為人們提供報時方便,但普通電子鬧鍾不夠方便實 用。本文給出了一種以 51 晶元電子鬧鍾設計方法,從而給人們帶來更為方便的 工作與生活。 1.1.1 51 電子鬧鍾發展趨勢 現代的快節奏生活給人們的精神上帶來了很大壓力。如何排解或緩解這些 壓力已經成為很多人關心的問題。 單片機電子鬧鍾是具發前鬧鍾創新性的系統, 它代表了時代的發展趨勢。2007 年,無論從國內外行業發展趨勢,還是從鬧鍾 市場准入的要求來看,節能、環保、創新都已成為中國家電企業無法迴避的大 問題。在原材料價格不斷上漲、下游渠道商實力膨脹、價格戰越來越激烈、行 業利潤日趨微薄的背景下,日前,中國的電子鬧鍾在節能化、環保化、創新型 轉變過程中,正進行新一輪鬧鍾賽跑。 目前,國內專業 51 電子鬧鍾廠家的數量正在迅速增長。51 電子鬧鍾市場 51 在未來的三五年內會高速增長,新技術、新產品也會不斷出現並投入應用。 1.1.2 本課題研究的主要內容 設計一個 51 電子鬧鍾 (1) 能隨意設定走時起始時間。 (2) 12 小時/24 小時兩種制式可選,以適應不同的需要。 (3) 能指示秒節奏,即秒指示 (4) 採用交直流供電電源。與石英鍾不同的是,電子鍾一般採用數碼管 等顯示介質,因而必須以交流供電為主,以直流電源為後備輔助電源,並能自 動切換。該設計主要包括:按 鍵 、 顯示程序單元部分。 AT89S51 單 片 機 芯 、 片 、 74HC245 驅動 LED 顯示電路,集成電路 74HC245 和 LM386 各 1 個. 1 湖州職業技術學院應用電子專業畢業論文 電子鬧鍾簡介 1.2 51 電子鬧鍾簡介 1.2.1 開發的目的和意義 目的: 設計一個 51 電子鬧鍾的,該鬧鍾可由使用者自己設定一個時間, 若想設置鬧鈴,應先按下復位按鍵,然後長時間按下"設置"按鍵,第一個數碼 管會顯示」C」,然後變為」00-00-00」 ,此時進入鬧鈴設置狀態,設置方法跟上 面一樣,鬧鈴設置完後,下一步要設置當前時間,調整方法跳到第一步。這樣 設置好後,她就能按照主人的意思,定時的把你鬧醒啦! 意義:電子鬧鍾已經是現代生活中經常用到的工具之一,傳統的電子鬧鍾 只是機械控制,另外, 體積也很大,又不美觀也不實用.而現在我設計的電子鬧鍾 是用單片機做的.只要簡單的設置好後,她就能按照主人的意思,定時的把你鬧 醒啦!也能給人們的生活帶來方便。 1.2.2 51 電子鬧鍾的優點 (1) 、簡單好用、美觀、體積小、實用。 (2) 、用電量少、電壓低,節能、環保、創新。 按 鍵 、 顯示程序單元部分。AT89S51 單 片 機 芯 片 、 74HC245 驅動 LED 顯示電路。外接 3 個按鈕組成鍵盤,AT89S51 為 51 內核。另外,AT89S51 本身 無專門的液晶驅動介面,因此,本時鍾採用數碼管顯示方式。數碼管作為一種 主動顯示器件,具有亮度高、價格便宜等優點,而且市場上也有專門的時鍾顯 示組合數碼管。 51 電子鬧鍾的用途:我設計的電子鬧鍾是用單片機做的.只要簡單的設置 好後,她就能按照主人的意思,定時的把你鬧醒啦!也能給人們的生活、工作 學習帶來方便。 1.2.3 51 電子鬧鍾的特點 1.幫 助 您 排 解 或 緩 解 那 些 來 自 現 實 生 活 的 壓 力 ? 2.數碼管作為一種主動顯示器件,亮度高、價格便宜等,顯示數字清晰。 3.簡單好用,可任意設 24 式時間。 4.使用 LED 發光,省電,燈泡壽命長。 2 湖州職業技術學院應用電子專業畢業論文 第二章 系統方案的設計 2.1 系統概述 2.1.1 系統功能描述 本系統是利用AT89S51為51內核, 集成電路74HC245和LM386各1個.製作完成一個 電子鬧鍾,該設計中採用液晶顯示或數碼管顯示,因此,本時鍾採用數碼管顯 示方式。充分體現系統的簡易性。使我們了解簡易鬧鍾的設計方法,並自己動 手設計電路和編寫實現鬧鍾功能的程序。簡易鬧鍾要實現以下功能:1、 、能正 確顯示鬧鍾的走時2、可以進行當前時間的設置3、可以設置鬧鍾時間,並在時 間到時發出響聲。 整個系統的任務要求: 1)輸入數字按鍵的功能。 保證數字的輸入。 2)復位電路的功能。 所有時間回到初始化狀態,用於啟動設定時間參數(對時或定鬧) ; 3)顯示電路的功能。 當輸入數字時顯示 24 小時時間功能。 4)鬧鈴功能 設置好鬧鈴時間後.能按設置好的時間准時鬧鈴。 2.1.2 系統方案的確定 根據以上各模塊並結合顯示屏的功能及元器件材料的情況,決定採用 AT89S51 為 51 內核顯示設計方案。 2.1.3 系統設計思路與步驟 先進行系統的整體規劃確定整個系統的功能,然後按照每個功能的具體要 求,進行各個模塊的實物設計並逐個調試,待全部通過後,進行整個系統的聯 調,最終實現一個完整的系統,並製成印刷線路板。 整個系統的設計步驟如下: 3 湖州職業技術學院應用電子專業畢業論文 在單片機最小系統的基礎上,完成按鍵電路和復位電路的設計。 完成顯示電路、數字按鍵、復位電路。 具有 3 個功能按鍵: 1.在復位後的待機狀態下,用於啟動設定時間參數(對時或定鬧) ; 2.在設定時間參數狀態而且不是設定最低位(即分個位)的狀態下,用於 結束當前位的設定,當前設定位下移; 3.在設定最低位(分個位)的狀態下,用於結束本次時間設定。 2)+1鍵,用於對當前設定位(編輯位)進行加 1 操作,根據 12/24 小時工作 模式和正在編輯的當前位的含義(時十位、時個位、分十位、分個位)自動進 行數據的上限和下限判斷。例如,對 12 小時制,小時的十位只能是 0、1,如 果當前值為 0,則按+1 鍵後為 1,再按+1 鍵則又回復到 0。 把以上各個模塊聯結起來,整體調試功能。 整個系統的原理框圖如圖 2-1 所示 按鍵與按鈕電路 CPU 復位等輔助電路 電源系統 4位數碼管顯示電路 鬧鈴聲光指示電路 圖 2-1 整個系統的原理圖 4 湖州職業技術學院應用電子專業畢業論文 2.2 晶元基本工作原理及其應用 2.2.1 AT89S51 簡介 AT89S51 是一個低功耗,高性能 CMOS 8 位單片機,片內含 4k Bytes ISP(In-system programmable)的可反復擦寫 1000 次的 Flash 只讀程序存儲器, 器件採用 ATMEL 公司的高密度、非易失性存儲技術製造,兼容標准 MCS-51 指令 系統及 80C51 引腳結構,晶元內集成了通用 8 位中央處理器和 ISP Flash 存儲 單元,功能強大的微型計算機的 AT89S51 可為許多嵌入式控制應用系統提供高 性價比的解決方案。 2.2.2 引腳介紹 AT89S51 具有如下特點:40 個引腳,4k Bytes Flash 片內程序存儲器, 128 bytes 的隨機存取數據存儲器(RAM) ,32 個外部雙向輸入/輸出(I/O)口, 5 個中斷優先順序 2 層中斷嵌套中斷,2 個 16 位可編程定時計數器,2 個全雙工串 行通信口,看門狗(WDT)電路,片內時鍾振盪器。 圖 2-2 引腳圖 此外,AT89S51 設計和配置了振盪頻率可為 0Hz 並可通過軟體設置省電模 式。空閑模式下,CPU 暫停工作,而 RAM 定時計數器,串列口,外中斷系統可 繼續工作,掉電模式凍結振盪器而保存 RAM 的數據,停止晶元其它功能直至外 中斷激活或硬體復位。同時該晶元還具有 PDIP、TQFP 和 PLCC 等三種封裝形式, 以適應不同產品的需求。 5 湖州職業技術學院應用電子專業畢業論文 主要功能特性: ·兼容 MCS-51 指令系統 ·32 個雙向 I/O 口 ·2 個 16 位可編程定時/計數器 ·全雙工 UART 串列中斷口線 ·2 個外部中斷源 ·中斷喚醒省電模式 ·看門狗(WDT)電路 ·靈活的 ISP 位元組和分頁編程 ·4k 可反復擦寫(>1000 次)ISP Flash ROM ·4.5-5.5V 工作電壓 ·時鍾頻率 0-33MHz ·128x8bit 內部 RAM ·低功耗空閑和省電模式 ·3 級加密位 ·軟體設置空閑和省電功能 ·雙數據寄存器指針 2.2.3 電源 89S51 有很寬的工作電源電壓,電源范圍寬達 4~5.5V. 2.2.4 存儲器 89S51 支持 ISP 在線可編程寫入技術!串列寫入、速度更快、穩定性更好, 燒寫電壓也僅僅需要 4~5V 即可. 2.2.5 應用 就目前中國市場的情況來看,89S51 有很大的市場。其原因有下列幾點: (1) AT89S51 設計和配置了振盪頻率可為 0Hz 並可通過軟體設置省電模式; (2) AT89S51 是一個低功耗,高性能 CMOS 8 位單片機; (3)晶元內集成了通用 8 位 中央處理器和 ISP Flash 存儲單元,功能強大的微型計算機的 AT89S51 可為許 多嵌入式控制應用系統提供高性價比的解決方案。 同時該晶元還具有 PDIP、 (4) TQFP 和 PLCC 等三種封裝形式,以適應不同產品的需求。 2.3 LM386 簡介 LM386 是美國國家半導體公司生產的音頻功率放大器,主要應用於低電壓 消費類產品。為使外圍元件最少,電壓增益內置為 20。但在 1 腳和 8 腳之間增 加一隻外接電阻和電容,便可將電壓增益調為任意值,直至 200。輸入端以地 6 湖州職業技術學院應用電子專業畢業論文 位參考,同時輸出端被自動偏置到電源電壓的一半,在 6V 電源電壓下,它的靜 態功耗僅為 24mW,使得 LM386 特別適用於電池供電的場合。專為低損耗電源所 設計的功率放大器。 2.3.1LM386 介紹 LM386 適用於電腦、儀器、汽車電子、電源、通信、開關電源等電子產品. 2.3.2LM386 特點靜態功耗低,約為4mA,可用於電池供電。 工作電壓范圍寬,4-12V or 5-18V。 外圍元件少。 電壓增益可調,20-200。 低失真度。 2 .4 74HC245簡介 由於通過數碼管公共及的電流較大, 因此用三極體來驅動位碼。 為了避免過多地使用 分立元件,採用了一片 74HC245 來驅動段碼。 7 湖州職業技術學院應用電子專業畢業論文 第三章 系統的設計一個完整的系統,離不開硬體和軟體的設計。硬體與軟體各有所長,如何 合理的安排軟硬體的任務是系統設計的第一步。 3.1 系統硬體設計系統硬體的設計可以根據系統的各個功能, 把整個系統劃分成若干個模塊, 分別對這些模塊來進行設計,然後在通過單片機程序來實現對各個硬體模塊功 能的調度。 本系統涉及到的硬體模塊有:按鍵電路、復位電路、顯示電路。 3.1.1 單片機系統的設計 單片機最小應用系統實際上就是一個內置程序存儲器的單片機,可由單片 機晶元,配以必要的外部器件構成,這些外部功能器件無法集成到晶元內部, 主要有按鍵電路、顯示電路等。 8 湖州職業技術學院應用電子專業畢業論文 圖 3-1 單片機系統圖 3.1.2 按鍵電路的設計 作為一個按鍵從沒有按下到按下以及釋放是一個完整的過程,也就是說當 我們按下一個按鍵時,總希望某個命令只執行一次。而在按下的過程中不要有 干擾進來,因為在按下的過程中,一旦有干擾過來可能造成誤觸發過程,因此 我們在設計按鍵電路的時候應注意不要有干擾進來以用在焊接時應注意: 獨立式按鍵。如果設置過多按鍵,將會佔用較多 I/O 口,而且會給布線帶 來不便,因此,此方案適用於按鍵較少的情況。如果選擇此方案,由於按鍵較 少,在修改時間或設置鬧鈴時間時就不能直接輸入,只能通過加或減完成,稍 為麻煩一些,但其程序簡單。 (1)執錫補焊時應按照從左到右,由上到下的順序,避免檢查時漏檢或焊 接時漏修。 (2)焊接時要經常清洗烙鐵頭,防止烙鐵頭的雜物造成虛焊、針孔、加焊 等不良發生。 (3) 不要在基板上給烙鐵頭加焊錫,生產過程中不能抖錫、敲錫、甩錫, 防止焊錫渣、焊錫 、珠掉到基板上面。 (4)在壓件或拆件時要先在線路板的銅箔面上加焊錫,要求均勻加熱,避 免松香失效或銅箔翹皮造成線路破壞。 考慮到電路不要復雜性,因而設計成 3 個按鍵,一個為復位,其它 2 個為按數 字時間的按鍵和確定設好的時間確定.後 2 個按鍵要接 89C2051 端.若想設置鬧 9 湖州職業技術學院應用電子專業畢業論文 鈴, 應先按下復位按鍵, 然後長時間按下"設置"按鍵, 第一個數碼管會顯示」 , C」 然後變為」00-00-00」 ,此時進入鬧鈴設置狀態,設置方法跟上面一樣,鬧鈴設 置完後,下一步要設置當前時間,調整方法跳到第一步。 在復位後的待機狀態下,用於啟動設定時間參數(對時或定鬧) ; 在設定時間參數狀態而且不是設定最低位(即分個位)的狀態下,用於 結束當前位的設定,當前設定位下移; 在設定最低位(分個位)的狀態下,用於結束本次時間設定。 2)+1鍵,用於對當前設定位(編輯位)進行加 1 操作,根據 12/24 小時 工作模式和正在編輯的當前位的含義(時十位、時個位、分十位、分個位)自 動進行數據的上限和下限判斷。例如,對 12 小時制,小時的十位只能是 0、1, 如果當前值為 0,則按+1 鍵後為 1,再按+1 鍵則又回復到 0。 3.1.3 復位電路的設計目前為止,單片機復位電路主要有四種類型: (1)微分型復位電路; (2)積分型復位 電路; (3)比較器型復位電路; (4)看門狗型復位電路。另外,Maxim 等公司也推出了專 用於復位的專用晶元復位電路的基本功能是:系統上電時提供復位信號,直至系 統電源穩定後,撤銷復位信號。為可靠起見,電源穩定後還要經一定的延時才 撤銷復位信號,以防電源開關或電源插頭分-合過程中引起的抖動而影響復位。 當輸入的復位信號延續兩個機器周期以上的高電平時即為有效,用完成單片機 的復位初始化操作。單片機目前已被廣泛地應用於家電、醫療、儀器儀表、工業自動化、航空航天等領域。 市場上比較流行的單片機種類主要有 Intel 公司、 Atmel 公司和 Philip 公司的 8051 系列單片 機,Motorola 公司的 M6800 系列單片機,Intel 公司的 MCS96 系列單片機以及 Microchip 公司的 PIC 系列單片機。無論用戶使用哪種類型的單片機,總要涉及到單片機復位電路的 設計。而單片機復位電路設計的好壞,直接影響到整個系統工作的可靠性。許多用戶在設 計完單片機系統,並在實驗室調試成功後,在現場卻出現了「死機」、「程序走飛」等現象, 這主要是單片機的復位電路設計不可靠引起的。 1 是一個單片機與大功率 LED 八段顯示 圖 器共享一個電源,並採用微分復位電路的實例。在這種情況下,系統有時會出現一些不可 預料的現象,如無規律可循的「死機」、「程序走飛」等。而用模擬器調試時卻無此現象發生 或極少發生此現象。又如圖 2 所示,在此圖中單片機復位採用另外一種復位電路。在此電 路的應用中,用戶有時會發現在關閉電源後的短時間內再次開啟電源,單片機可能會工作 不正常。這些現象,都可認為是由於單片機復位電路的設計不當引起的。 10 湖州職業技術學院應用電子專業畢業論文 圖 3-2 復位電路圖 3.1.4 顯示電路的設計 就時鍾而言,通常可採用液晶顯示或數碼管顯示。由於一般的段式液晶屏, 需要專門的驅動電路,而且液晶顯示作為一種被動顯示,可視性相對較差;對 於具有驅動電路和微處理器介面的液晶顯示模塊(字元或點陣) ,一般多採用並 行介面,對微處理器的介面要求較高,佔用資源多。另外,89C2051 本身無專 門的液晶驅動介面,因此,本時鍾採用數碼管顯示方式。數碼管作為一種主動 顯示器件,具有亮度高、價格便宜等優點,而且市場上也有專門的時鍾顯示組 合數碼管。基於 AT89S51 單片機的控制系統包括四部分:數據採集、控制系統、 時鍾電路、語音錄音電路和報音提示信息電路。 用數碼管作為顯示器。數碼管的驅動電路簡單,使用方便,如果選擇了此 方案,那麼在夜間看時間的時候就不需要有光源,非常方便。其缺點是功耗較 大。由於數碼管使用起來較為方便,在夜間看時間也很方便,因此我們選擇了 數碼管作為顯示器. 發音部分: 用軟體方法產生方波輸出,通過三極體放大後驅動蜂鳴器發音,這樣就可 以省去硬體振盪電路,降低成本。 11 湖州職業技術學院應用電子專業畢業論文 3.2 系統軟體的設計系統軟體的設計方法與硬體設計的方法是相同的,也是根據系統的各個功 能,劃分成各個子模塊,分別對每個模塊來進行設計,然後在通過各個模塊之 間的調用來實現整個系統的功能。 系統軟體部分的設計模塊有:按鍵電路的軟體設計、復位電路的軟體設計、 顯示電路的軟體設計共 3 個模塊。 發音部分: 用軟體方法產生方波輸出,通過三極體放大後驅動蜂鳴器發音,這樣就可以省 去硬體振盪電路,降低成本。 電源: 如果是用電池供電,就比較方便攜帶,但是本系統,採用了數碼管作為顯示器, 功耗較大,需要經常更換電池。況且,本系統的體積較大,即使使用電池供電 也不能隨身攜帶,因此,用電池供電不大合適,所以用外部穩壓電源來供電。 3.2.1 軟體設計 軟體功能: (1)檢測按鍵。當系統檢測到某個案件被按下時,轉到相應子程序處理,可實 現校時、設定鬧鈴時間的功能。 (2) 顯示。系統通過調用顯示子程序,可將顯示緩沖區里的內容通過動態掃描 方式輸出到數碼管顯示器。 (3) 計時。系統通過中斷和軟體計數器可產生秒信號。每到1s,系統將會調整 時間存儲單元的內容,從而實現計時功能。 (4) 比較。每當秒存儲單元的內容為0時,系統通過調用比較子程序可判斷當前 時間是否符合鬧鈴條件,若符合,則調用發音子程序使蜂鳴器發出鬧鈴聲音。 (5) 產生音頻方波輸出。系統通過軟體產生音頻方波輸出使蜂鳴器發聲,這樣 可以省去硬體振盪電路。 (6) 拆分。為了提高存儲單元的利用率,本系統將時間數據壓縮成壓縮BCD碼後 再送入顯存才能顯示。 (7) 合並。為了提高修改時間的速度,可先對現存內容逐位修改,然後調用合 並子程序把顯存內容合並後送入指定存儲單元。 (8) 設定。系統進入設定狀態後,可通過按「設定」鍵改變閃亮位位置和按「+」 或「-」鍵來加1或減1閃亮位內容,從而達到報時和設定鬧鈴時間的目的。 軟體設計: 12 湖州職業技術學院應用電子專業畢業論文 圖 T0中斷服務程序流程圖 13 湖州職業技術學院應用電子專業畢業論文 開始初始化 數碼管顯示00-00-00 同時等待設置時間 調整鍵按下很短 調整鍵按下較長 第一個數碼管變 進入調時 模式第一個管子閃爍 第一個數碼管先變 後變 進入 鬧鈴設置模式第一個管子閃爍 加1鍵按下 加1鍵按下 調整鍵按下 調整鍵按下 數字加1並閃爍 後一個數碼管閃爍 直到時間設置完成 數字加1並閃爍 後一個數碼管閃爍 直到時間設置完成 調整鍵按下 調整鍵按下 數碼管熄滅進入 省電模式 數碼管熄滅進入 省電模式 電路流程圖 系統功能及使用方法: 系統上電後,自動進入時鍾狀態。若在此時按下「設定」鍵,顯示器上將 14 湖州職業技術學院應用電子專業畢業論文 出現閃亮位,再按「+」或「-」則可以加或減閃亮位內容,修改完一位後再按 「設定」可改變閃亮位位置繼續修改下一位。修改完成後按「確定」鍵即可退 出設定狀態進入正常顯示時鍾狀態。 在正常顯示時鍾狀態時按下「鬧鍾」鍵可進入鬧鍾狀態,此時按「+」或 「-」可上下翻動鬧鍾表;按「設定」鍵可修改當前顯示的鬧鍾時間,修改方法 與修改時鍾相同。在查看鬧鍾表狀態下按「鬧鍾」鍵可以開/關當前顯示的鬧鍾 時間,當顯示器第 5 位顯示「-」時表示鬧鈴已開。按「時鍾」鍵返回正常顯示 時鍾狀態。若想設置鬧鈴,應先按下復位按鍵,然後長時間按下"設置"按鍵, 第一個數碼管會顯示」C」,然後變為」00-00-00」 ,此時進入鬧鈴設置狀態,設 置方法跟上面一樣,鬧鈴設置完後,下一步要設置當前時間,調整方法跳到第 一步。這樣設置好後,她就能按照主人的意思,定時的把你鬧醒啦! 我們先了解簡易鬧鍾的設計方法,並自己動手設計電路和編寫實現鬧鍾 功能的程序。簡易鬧鍾要實現以下功能:1、 、能正確顯示鬧鍾的走時2、可以進 行當前時間的設置3、可以設置鬧鍾時間,並在時間到時發出響聲。 設計中,我們利用儀器中所提供的以上提到的晶元和軟體編程結合的思 路。本設計的軟體編程由四部分構成,下面將對照程序的構成來闡述我們組對 簡易鬧鍾的方案設計, 具體設計方案如下: (一) 在主程序中, 填寫中斷向量表, 應用 8255A 的 IRQ7 和 IRQ5 端。利用 8253A 和 8259A 完成計時一秒的功能,然 後通過更新時間的子程序完成時間跳變的功能,待到新的時間判斷是否到達設 定的鬧鍾的時間,如果是,則啟動揚聲器;如果否,則繼續進行顯示時間。 (二) 鬧鍾的時間是變化的,在更新時間的子程序中,首先判斷更改後的秒數是否小 於 10,如果是,則返回主程序;如果否,則秒的個位跳變成 0,秒的十位加一; 再次判斷秒的十位,過程同判斷秒的個位相同。 (三)簡易鬧鍾最重要的功能就 是「It』s time to do something!」在這部分,主要要考慮的也是判斷當前時 間是不是設定的鬧鍾時間。如果跳變後的時間的四位完完全全的和設定的鬧鍾 時間相同,則揚聲器應該響起,提示鬧鍾的主人「Time is up!」從鬧鍾的分鍾 的十位開始依次判斷, 如果前一個鬧鍾位的顯示與設定的鬧鍾時間對應位相同, 則轉入判斷下一位;如果不相同,則返回主程序。都判斷後,如果都相同,則 設置啟動鬧鍾的對應位為 1,啟動揚聲器。 (四)在顯示時間的子程序中,時間 從 0,0,0,0 開始顯示。四位數字的顯示各由一段程序完成。 15 湖州職業技術學院應用電子專業畢業論文 3.2.2 整個系統軟體部分的總體設計 在各個模塊的軟體設計完成後,便可以對整個系統進行整體的軟體設計。 其根本的設計思路是通過設置一些聯系信號,把原本功能獨立的各個模塊聯結 在一起,從而實現整體系統的功能。 第四章 系統的調試和性能分析 4.1 系統的調試方法整個系統調試的主要思想是:先每個模塊進行調試,然後整個系統一起調 試。先軟硬體分開調試,然後一起調試。遵循先部分後整體的原則。 系統的在調試過程中要注意以下幾點: (1)硬體電路焊完之後,在上電之前一定要先用萬用表檢測電源和地之間 是否短路。 (2)上電之後要用示波器觀察信號的在電路中變化的情況,與設計當初的 情況相比較,找出差別,並進行分析。 (3)軟體調試過程中可以使用斷點、單步執行等常用的方法。 (4)軟硬體聯調時,要注意軟體部分要一個功能一個功能的調試。 4.1.1 輸入按鍵的調試 輸入按鍵的調試,只要按鍵按下去時,按鍵有相應的反應就行,通過程序 來判斷,單片機 I/O 是否能夠識別出。 16 湖州職業技術學院應用電子專業畢業論文 4.1.2 復位電路的調試 當電源剛接通時,接通電源就完成了系統的初始化。 4.1.3 顯示電路的調試 在本設計中,顯示電路只需完成,當輸入數字時能正確顯示數字. 4.1.4 整個系統的聯調 在系統各個部分都調試完畢之後,即可以進行整個系統的調試。由於前面 各個部分的調試做的都比較充分,所以在實際調試過程中,能夠較順利的實現 整個系統預期的功能。 4.2 系統的性能分析系統能在設定的時間內鬧鈴, 但聲音有點沙啞。 這是因為控制蜂鳴器的 I/O 口每次取反後,必須調用一次顯示子程序後才能再次取反,否則在發音期間不 能顯示,而調用一次顯示子程序需要的時間大約為 6ms(6 位每位 1ms),所以 振盪頻率 f=1/T=1/(2*6ms)≈83Hz,顯然這個頻率過低,這就是造成聲音沙 啞的原因。經測試,其時鍾誤差約為 3 秒/天,這是因為從定時器向 CPU 發出 中斷申請信號到重裝定時初值的過程需要一定的時間。 本系統通過測試,能夠實現以下功能: (1)按鍵輸入。 (2)鬧鈴聲音。 (3)LED 顯示。 17 湖州職業技術學院應用電子專業畢業論文 第五章 結論本次畢業設計我很早就開始准備,並且先自己買器件動手製作,因此能夠較 早的完成全部的設計任務。通過本次設計,使自己在單片機應用系統設計方面的 能力有了長足進步。本次畢業設計應用單片機電子鬧鍾的設計與製作,作為一種 智能化產品,具有成本低,使用方便,可靠性高和可擴展性強的特點。 18 湖州職業技術學院應用電子專業畢業論文 參考文獻 1.李捷,陳典濤等,一種應用單片機電子鬧鍾的設計與製作設計〔J〕 ,農機化研 究,2005。 2.陳明熒.8051 單片機課程設計實訓教材 北京:清華大學出版社 2004 3.胡漢才.單片機原理及其介面技術 北京:清華大學出版社 1995 4.徐淑華 程退安 姚萬生 .單片機微型機原理及應用 哈爾濱工業大學出版社 1994 5.丁元傑.《單片機原理與應用》.機械工業出版社出版.2003 年 2 月.58-67 6. 朱定華. 《單片機原理及介面技術》 .電子工業出版社出版.2004 年 5 月.32-46 7. 何立民.《單片機應用系統設計系統配置與介面技術》.北京航空航天大學出 版社出版.2005 年 2 月.16-45 8. 江曉安、董秀峰.《模擬電子技術》.西安電子科技大學出版社.2003 年 月.46-110 9. 陸坤.《電子設計技術》. 成都電子科技大學出版社.1996 年 5 月.31-76 9 19 湖州職業技術學院應用電子專業畢業論文 附錄 2 原理圖 20 湖州職業技術學院應用電子專業畢業論文 附錄 3 實物圖

Ⅶ Java中定時存儲數據 例如每隔5秒中存儲一次。或者每天的10、12、2、4、6點存儲數據怎樣實現

哥們 java有一個 Quartz 這個開源框架 網上資源挺多的,我就不在這給你復制了。這個是專門定時調用某一程序的,我覺得挺好用。你可以看看。有事hi我

哦,看來你那模塊應該簡單吧,Quartz挺好用的。那給你段timer的代碼吧

Timer taskTimer = new Timer(true);//java自帶定時執行的類
taskTimer.schele(new TimerTask()
{
public void run()
{
//這里是你要處理邏輯的地方
}
}, 0, 1000*60);
//後面0是執行任務前的延遲時間,單位是毫秒。
//1000*60是執行各後續任務之間的時間間隔,單位是毫秒。 也就是多長時間執行一次。