完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
这个是显示电子钟与秒表的程序 用数码管显示的
我想按下anj_2这个键能切换秒表与电子钟,再按下再切回来的程序不知道怎么弄求高手指导下 #define _YIZHIBIAO_C_ #include "reg51.h" #include "yizhibiao.h" #define uc unsigned char #define led_f P0 #define led_k P2 uc code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf}; //uc code led[]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x6F,0x40}; uc led_M[]={1,2,3,4,5,6,7,8}; uc led_c=0; //初始表的时间定义 uc miao=57; uc fen=59; uc zhong=23; //初始秒表的时间的定义 uc miao2=0; uc fen2=0; uc zhong2=0; //闪烁的定义 uc led_fs=0x00; uc led_fc; uc yansi=100;//闪0.5秒定义 //按键的定义 ***it anj_0=P1^0; ***it anj_1=P1^1; ***it anj_2=P1^2; ***it anj_3=P3^2; uc jz; uc yanshi=200;//中断1秒的 uc yanshi2=2;//中断1秒的 bit zdbz=1;//钟的标志 bit mbdbz=1;//秒表的标志 bit sz; bit up; bit okj; void delay20() //20毫秒 { unsigned char a,b; for(b=1;b>0;b--) for(a=7;a>0;a--); } void shizhong() { led_M[0]=zhong/10; led_M[1]=zhong%10; led_M[2]=10; led_M[3]=fen/10; led_M[4]=fen%10; led_M[5]=10; led_M[6]=miao/10; led_M[7]=miao%10; } void jiashu() { if(++miao>59) { miao=0;if(++fen>59) { fen=0;if(++zhong>23) { zhong=0; } } } } void miaobiao() { led_M[0]=zhong2/10; led_M[1]=zhong2%10; led_M[2]=10; led_M[3]=fen2/10; led_M[4]=fen2%10; led_M[5]=10; led_M[6]=miao2/10; led_M[7]=miao2%10; } void jiashu2() { if(++miao2>100) { miao2=0;if(++fen2>59) { fen2=0;if(++zhong2>99) { zhong2=0; } } } } void anjian() { if(jz==3) { okj=1; } } //5000ms的中断程序 void Inittimer0(void) { TMOD = 0x01; TH0 = 0x0EC; TL0 = 0x00; EA = 1; ET0 = 1; TR0 = 1; } void main(void) { InitTimer0(); while(1) { anjian(); //显示钟的 if(zdbz==0) { zdbz=1; if(okj==1) { shizhong(); } jiashu(); } //显示秒表的 if(mbdbz==0) { mbdbz=1; if(okj==0) { miaobiao(); } jiashu2(); } }; } void Timer0Interrupt() interrupt 1 { TH0 = 0x0Ec; TL0 = 0x00; led_f=0xff; led_k=0xff; if(++led_c>7) led_c=0; led_f=led[led_M[led_c]]; switch(led_c) { case 0:led_k=0xfe|led_fs;break; case 1:led_k=0xfd|led_fs;break; case 2:led_k=0xfb|led_fs;break; case 3:led_k=0xf7|led_fs;break; case 4:led_k=0xef|led_fs;break; case 5:led_k=0xdf|led_fs;break; case 6:led_k=0xbf|led_fs;break; case 7:led_k=0x7f|led_fs;break; } //钟的中断 if(--yanshi==0) { yanshi=200; zdbz=0; } //秒表的中断 if(--yanshi2==0) { yanshi2=2; mbdbz=0; } //闪烁的中断 if(--yansi==0) { yansi=100; led_fs=led_fs^led_fc; } //按键的中断 if(anj_3==0) { if(anj_0==0) { jz=1; } if(anj_1==0) { jz=2; } if(anj_2==0) { jz=3; } } } |
|
相关推荐
1个回答
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
726 浏览 0 评论
777 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
680 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1149 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1120 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11800 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 08:51 , Processed in 0.496635 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号