完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
10个回答
|
|
#include
***it LED1=P2^0; //数码管1声明 分钟个位 ***it LED2=P2^1; //数码管2声明 分钟十位 ***it LED3=P2^2; //数码管3声明 小时个位 ***it LED4=P2^3; //数码管4声明 小时十位 ***it LED8=P0^7; //数码管上的点 ***it LED9=P1^0; //秒表显示LED ***it S1 =P3^5; //调时声明 ***it S2 =P3^4; //调分声明 ***it S4 =P3^2; //外部中断声明 void display(unsigned shishi,unsigned shige,unsigned fenshi,unsigned fenge,unsigned dian); //子函数申明 unsigned int b; //函数声明 unsigned char a,e,miao,fen,shi,shishi,shige,fenshi,fenge,miaoshi,miaoge,dian; unsigned code wei[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f}; //数组 void main() { TMOD=0X10; //选择定时器工作模式 TH1 =0X3C; //设高八位初值 TL1 =0XB0; //设低八位初值 EA =1; //开总中断 ET1 =1; //开T1定时器 TR1 =1; //启动定时器 EX0 =1; //打开外部中断0 while(1) { TR1 =1; //启动定时器 if(a==20) //进入20次中断证明1秒时间到了; 成立则执行IF后面语句,不成立则跳过 { miao++; // 加一秒 a=0; //中断清0 LED9=0; //秒表灯亮 } if(miao==60) //检测有没有加到60秒 { fen++; //加一分钟 miao=0; //把秒清0 } if(fen==60) //检测有没有加到60分钟 { shi++; //加一小时 fen=0; //把分钟清0 } if(shi==24) //检测有没有加到24小时 { shi=0; //小时清0 } display(shishi,shige,fenshi,fenge,dian); //子函数扫描 } } void display(unsigned shishi,unsigned shige,unsigned fenshi,unsigned fenge,unsigned dian) { shishi =shi%100/10; //小时十位求余 shige =shi%10; //小时个位求模 fenshi =fen%100/10; //分钟十位求余 fenge =fen%10; //分钟个位求模 LED1=0; P0=wei[shishi]; //小时十位显示 b=500; while(b--); LED1=1; P0=0XFF; LED2=0; P0=wei[shige]; //小时个位显示 b=500; while(b--); P0=0X7F; LED2=1; P0=0XFF; LED3=0; P0=wei[fenshi]; //分钟十位显示 b=500; while(b--); LED3=1; P0=0XFF; LED4=0; P0=wei[fenge]; //分钟个位显示 b=500; while(b--); LED4=1; P0=0XFF; LED2=0; LED8=~LED8; //点显示 b=500; while(b--); LED2=1; P0=0XFF; } void wodee() interrupt 3 //中断组 { a++; TH1 =0X3C; //重新装初值 TL1 =0XB0; LED9=1; } void tiaoshi() interrupt 0 //按键中断 { display(shishi,shige,fenshi,fenge,dian); //进入中断给屏幕扫描 TR1 =0; //关闭定时器 if(S2==0) { e=50; while(e--); if(S2==0) { fen++; while(!S2); } } //检测S2键,给分钟加一 if(S1==0) { e=50; while(e--); if(S1==0) { shi++; while(!S1); } } //检测S2键,给小时加一 if(fen==60)fen=0; //检测分钟是否加到60,是就把分钟清0 if(shi==24)shi=0; //检测小时是否加到24,是就把小时清0 } //好久以前写的了,因为我自己写的版本太多我也不知道是不是这个,依稀记得要把S4按住、在按调时调分 |
|
|
|
|
|
去看看我去年发表的那个帖子,要的功能都有了,自己去搜
|
|
|
|
这个应该不难吧,用一个时钟芯片,在用一块显示屏就好了呀
|
|
|
|
|
|
|
|
能把要求提得详细一点吗?
|
|
|
|
***:www.51dianni.com ,上面有个高端版时钟
|
|
|
|
你没有思路,我觉得是你的C语言不过关。
|
|
|
|
默默顶一个
|
|
|
|
顶一个。
|
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 10:34 , Processed in 1.201554 second(s), Total 66, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号