完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
设计要求:
使用AT89C51单片机设计一个简易的定时闹钟。 基本功能如下: 显示格式为“时时分分”。由分位闪动来做秒计数表示。 一旦时间到则发出声响。 程序执行后工作指示灯LED闪动,表示程序开始执行,显示器显示“0000”,按下操作键K1~K4动作如下: (1) K1—设置现在的时间。 (2) K2—显示闹钟设置的时间。 (3) K3—设置闹铃的时间。 (4) K4—闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。 设置当前时间或闹铃时间如下。 (1) K1—时调整。 (2) K2—分调整。 (3) K3—设置完成。 (4) K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响。 {:soso__8961432591078930798_3:}求原理图,程序,和设计思想!!! |
|
相关推荐
26个回答
|
|
原来是求的?????????、
|
|
|
|
同求高人指教呀,电路图是用protel99se画得,加封装呀
|
|
|
|
都没人会的???学校的课程设计题目,这星期就教了,求呀!!!
|
|
|
|
这样是没有多少人愿意做的...
|
|
|
|
这个不是很难,但很费时间
|
|
|
|
好像很麻烦
|
|
|
|
时间到时,发出一阵声响
|
|
|
|
#include
#define uchar unsigned char #define uint unsigned int ***it s1=P2^0; //数码管位选控制端 ***it s2=P2^1; ***it s3=P2^2; ***it s4=P2^3; ***it s5=P2^4; ***it s6=P2^5; ***it s7=P2^6; /*k1设置时间,k2定时。k1,k2使用不自动弹起按键。 k3时分秒选择,k4加数字,k5减数字。*/ ***it k1=P1^0; ***it k2=P1^1; ***it k3=P1^2; ***it k4=P1^3; ***it k5=P1^4; uchar count=0,sec,min,hour,ss=0;s=60,m=60,h=24; uchar code mum[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管0-9编码 void delayms(uint k) //延时函数 { uint i,j; for(i=k;i>0;i--) for(j=110;j>0;j--); } /*通过count获得hour,min,sec变量值 */ void timecontrol() { sec++; if(sec==60) { sec=0; min++; if(min==60) { min=0; hour++; if(hour==24) hour=0; } } } void display(uchar zs,uchar zm, uchar zh) //数码管显示函数 { s1=1; P0=mum[zh/10]; delayms(5); s1=0; s2=1; P0=mum[zh%10]&0x7f; // 时的个位加上小数点 delayms(5); s2=0; s3=1; P0=mum[zm/10]; delayms(5); s3=0; s4=1; P0=mum[zm%10]&0x7f; //分的个位加上小数点 delayms(5); s4=0; s5=1; P0=mum[zs/10]; delayms(5); s5=0; s6=1; P0=mum[zs%10]; delayms(5); s6=0; } void keyscan_settime() //时间设置模块 { uchar st,mt,ht; if(k1==0) { delayms(10); if(k1==0) { st=sec,mt=min,ht=hour; TR0=0; //关闭定时器 while(k1==0) //等待用户按键 { display(st,mt,ht); if(k3==0) { delayms(10); if(k3==0) { while(!k3); ss++; if(ss==3) ss=0; } } /*通过ss选择时分秒设置*/ if(k4==0) //加数 { delayms(10); if(k4==0) { while(!k4); switch(ss) { case 0:st++;if(st==60)st=0;break; case 1:mt++;if(mt==60)mt=0;break; case 2:ht++;if(ht==24)ht=0;break; default :; } } } if(k5==0) //减数 { delayms(10); if(k5==0) { while(!k5); switch(ss) { case 0:if(st>0)st--; else st=0;break; case 1:if(mt>0)mt--; else mt=0;break; case 2:if(ht>0)ht--; else ht=0;break; default : ; } } } } TR0=1; sec=st,min=mt,hour=ht; } } display(sec,min,hour); } void keyscan_time() //用户定时模块 { if(k2==0) { delayms(10); if(k2==0) { s=sec;m=min;h=hour; while(k2==0) //开始定时设置 { display(s,m,h); if(k3==0) { delayms(10); if(k3==0) { while(!k3); ss++; if(ss==3) ss=0; } } /*通过ss选择时分秒设置*/ if(k4==0) //加数 { delayms(10); if(k4==0) { while(!k4); switch(ss) { case 0:s++;if(s==60)s=0;break; case 1:m++;if(m==60)m=0;break; case 2:h++;if(h==24)h=0;break; default :; } } } if(k5==0) //减数 { delayms(10); if(k5==0) { while(!k5); switch(ss) { case 0:if(s>0)s--; else s=0;break; case 1:if(m>0)m--; else m=0;break; case 2:if(h>0)h--; else h=0;break; default : ; } } } } } } } void buz() { if((hour==h)&&(min==m)&&(sec==s)) { s7=0; delayms(20); s7=1; } } void main() { TMOD=0x01; //定时器0工作在方式1 TH0=(65536-45872)/256; //装初值,50ms TL0=(65536-45872)%256; EA=1; //总中断允许 ET0=1; //T0中断允许 TR0=1; //开定时器0 while(1) { keyscan_settime(); keyscan_time(); buz(); } } void T0_ms() interrupt 1 //中断入口程序 { TH0=(65536-45872)/256; //重新装初值 TL0=(65536-45872)%256; count++; if(count==20) //判定1s时间是否已到 { count=0; timecontrol(); } 你先自己调试一下,我这里试过是可以的。 |
|
|
|
我去,这一个人一个人的思想啊,给你估计你要半天看懂
|
|
|
|
口讲无凭
|
|
|
|
额 楼上 还真有人为你做!~~
|
|
|
|
真是啊
|
|
|
|
|
|
不错,哎居然有人回了
|
|
|
|
我做过 题目一样 加1002925094
|
|
|
|
单片机的数字时钟设计
课题研究要点: 1)显示格式为“时时:分分:秒秒”。 2)程序执行后工作指示灯LED闪动,表示程序开始执行,显示“00:00:00”,按下操作键K1~K4动作如下: (1) K1—设置现在的时间。 (2) K2—显示闹钟设置的时间。 (3) K3—设置闹铃的时间。 (4) K4—闹铃ON/OFF的状态设置,设置为ON时显示屏右上角显示ON(或小钟表图形),设置为OFF显示OFF(或什么都不显示)设置当前时间或闹铃时间如下。 (1) K1—时调整。 (2) K2—分调整。 (3) K3—设置完成。 (4) K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响。 3)整点蜂鸣器响,几点响几下 。 |
|
|
|
学习学习 我想学习单片机
|
|
|
|
谢谢楼主分享。。。
|
|
|
|
对不起, 我看错了 设计一个基于单片机的简易定时***
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
277 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
368 浏览 0 评论
766 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
592 浏览 0 评论
879 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12034 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 22:38 , Processed in 0.934833 second(s), Total 106, Slave 89 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号