完善资料让更多小伙伴认识你,还能领取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个回答
|
|
|
单片机没有启动,缺少最小系统的吧。
|
|
|
|
|
|
电路晶振都没接,怎么有时钟信号,怎么可能运转
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1078 浏览 1 评论
1896 浏览 0 评论
1875 浏览 1 评论
3299 浏览 5 评论
3623 浏览 9 评论
1079浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1403浏览 1评论
1898浏览 0评论
1212浏览 0评论
1350浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-15 11:32 , Processed in 0.996626 second(s), Total 88, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2037