完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include //包含器件配置文件
#define uchar unsigned char #define uint unsigned int char tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0~9的数码管段码 uchar hour=0,min=0,sec=0; //时,分,秒清零 uchar deta=0; //5ms计数单元清零 bit d_05s=0; //0.5s标志 uchar set=0; //模式设定标志 uchar m=0; uchar flag=0; //RAM掉电标志 void delay(uint k); //延时函数 void conv(); //走时单元转换 void disp(); //走时时间显示函数 ***it SB1=P2^4; //按键1引脚定义 ***it SB2=P2^5; //按键2引脚定义 ***it SB3=P2^6; //按键3引脚定义 ***it SB4=P2^7; ***it SPK=P3^7; //蜂鸣器引脚定义 ***it SET_2=P2^2; ***it M_D=P0^7; //定时器T0初始化 void init_timer() { TMOD=0x01; //设置定时器T0工作模式为1 TH0=-(4800/256); //高字节计数初值 TL0=-(4800%256); //低字节计数初值 IE=0x82; //启用定时器T0中断产生 TR0=1; //启动定时器T0开始计时 } //5ms定时中断 void T0_srv(void) interrupt 1 { TH0=-(4800/256); //重置定时器计时初始值 TL0=-(4800%256); deta++; //计数单元值递增 } //时分秒单元及走时单元转换 void conv() { if(deta<=100)d_05s=0; else d_05s=1; if(deta>=200){sec++;deta=0;} if(sec==60){min++;sec=0;} if(min==60){hour++;min=0;} if(hour==24){hour=0;} } void disp() { P0=tab[hour/10];P2=0xf7;delay(2); P0=tab[hour%10];P2=0xfb;delay(2); if(d_05s==1){if(SET_2==0)M_D=0;else M_D=1;} delay(2); P0=tab[min/10];P2=0xfd;delay(2); P0=tab[min%10];P2=0xfe;delay(2); } void set_time() { uchar m; //TR0=0; if(SB2==0)delay(5); if(SB2==0)hour++; if(hour=24)hour=0; for(m=0;m<30;m++) { disp(); if(SET_2==0)M_D=0; else M_D=1; delay(1); } if(SB3==0)delay(5); if(SB3==0)min++; if(min==60)min=0; for(m=0;m<30;m++) { disp(); if(SET_2==0)M_D=0; else M_D=1; delay(1); } } void time() { conv(); disp(); } void scan_key() { delay(10); if(SB1==0) set++; if(set>=2) set=0; if(set==1) flag=0x55; F0:if(SB1==0) goto F0; } void delay(uint k) { uint i,j; for(i=0;i for(j=0;j<121;j++) {;}} } void fs_d() { unsigned int q,y; { for(y=0;y<1000;y++) { SPK=~SPK; for(q=0;q<50;q++); } delay(200); } } void main() { init_timer(); while(1) { if(SB1==0) { scan_key(); fs_d(); } switch(set) { case 0:time();break; case 1:set_time();break; default:break; } if(flag!=0x55) { P0=0xc0;P2=0xc0;delay(200); P2=0xff;delay(400); } } } |
|
相关推荐
7个回答
|
|
单片机没有启动,缺少最小系统的吧。
|
|
|
|
电路晶振都没接,怎么有时钟信号,怎么可能运转
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
晶振电路都没加。。。单片机都没工作。。。怎么可能走时
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
689 浏览 1 评论
2117 浏览 5 评论
2429 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2194 浏览 6 评论
2163 浏览 7 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
317浏览 9评论
299浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
435浏览 6评论
300浏览 5评论
348浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-25 03:27 , Processed in 0.829012 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号