当前位置:首页 » 服务存储 » 多功能时间闹铃数据存储的封装
扩展阅读
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是执行各后续任务之间的时间间隔,单位是毫秒。 也就是多长时间执行一次。