电子年月日时钟苹果手机遇冷关机会发出很响电流声是什么原因

我是怎样开始学习电子的
& &&&&第三届单片机征文精选稿件深圳学林电子 版权所有 转载注明出处&&电子时钟加日历显示叶思奇甘肃省天水师范学院物理与信息科学学院07电信一班一、 任务和要求设计制作一个电子表并且能够显示日历,用LED数码管直接显示,并且能够通过按键调整时间、年月日,功能为按第一个键被调整的相应调整区域开始闪烁,第二个键加一,第三个减一,第四个确认,最后一个在时分秒和年月日中间相互切换。二、方案论证我们在这里选用了C8051F单片机,它是完全集成的混合信号系统级芯片(SoC),具有与8051兼容的高速CIP-51内核,与MCS-51指令集完全兼容,片内集成了数据采集和控制系统中常用的模拟、数字外设及其他功能部件;内置FLASH程序存储器、内部RAM,大部分器件内部还有位于外部数据存储器空间的RAM,即XRAM。C8051F单片机具有片内调试电路,通过4脚的JTAG接口可以进行非侵入式、全速的在系统调试。三、 系统硬件电路设计该系统分为两个部分,主控电路和扫描电路,其中键盘扫描和LED扫描为今后节省I/O口线,我将键盘的扫描和LED的扫描共用,在扫描LED的同时也扫描键盘,这样不但方便,而且为今后的扩展留下了相当大的余地。3.1主控制器单片机使用c,并且使用它的开发板易于烧录,改变程序和外围电路。3.2显示电路显示板因为常用,是我自己画出来交给工厂做的,采用4个两位共阳数码管,从P0口输出,8位段码分别和P0相接,通过定时器实现秒钟的加一,又因为310有推挽输出,所以不必再加外部电路对数码管进行驱动,直接将它们与P0口相连就可以3.3键盘电路键盘是是与数码管的位选相连,通过二极管使它们具有单向性,同时将开头最终通过三极管接单片机的P3.4,只要有按键按下,P3.4就一定会发生变化,通过这个变化在去扫描位就可以得出是哪个按键了。附电路图:四、系统程序设计系统和程序主要包括:显示程序,键盘扫描程序,自动加秒,分,时,日,月,年,附程序:/***************************************************************************从左至右键盘依次为key1——key5; key1:预制键 key2:加1 key3:减1 key4:确认 key5:时间和年月日相互切换段码备注: 位码备注 : (从右往左 ) a...........P0.5 一位...........P1.2 b...........P0.7 二位 ..........P1.1c...........p0.2 三位...........P1.4d...........p0.1 四位...........P1.3e...........p0.4 五位 ..........P1.6f...........p0.3 六位...........P1.5g...........p0.8 七位 ..........P1.8按键........P3.4 八位...........P1.7******************************************************************************/
#include &c.h&#define uchar unsigned char#define unchar unsigned charuchar code duan[10] ={0xa0,0xbd,0x26,0x2c,0x39,0x68,0x60,0xad,0x20,0x28}; //段码表 0 1 2 3 4 5 6 7 8 9 uchar code wei[8]={0x02,0x01,0x08,0x04,0x20,0x10,0x80,0x40};//位码表uchar code week1[7]={0xbd,0x26,0x2c,0x39,0x68,0x60,0xad} ;//星期一到星期日uchar
dataa,sec,min,hour,ymd,year,year1=9,year2=20,month=8,day=22,week=6;//初始值是7-00:00:00,日期是;uchar n,cnt,sw1=0,sw2,sw3,cnt1,sw5;uchar key1,key2,key3,key4=0,key5=0;sbit P3_4=P3^4;void scan_key(void);void delay(ms);/****************************开中断子函数
***********************************************************************/void init(void){IE =0x8A;TCON =0x50;TMOD =0x11;IP =0x0A;TH0 =()/256;TL0 =()%256;TH1 =()/256;TL1 =()%256;}void time0(void) interrupt 1{TH0 =()/256;TL0 =()%256;dataa++;if(sw1!=0&&key4==0) //第一个按键按下,且第四个没有按下 {if(++cnt1==40){cnt=0;if(sw5==0&&sw1==1){for(n=0;n&20;n++){P1 =0x00; P1 =P1&0xf3; //闪烁程序P0 =duan[sec%10];P1 =wei[0];delay(8);P1 =0x00;P0 =duan[sec/10];P1 =wei[1];delay(8);P1 =0x00;P0 =duan[hour%10];P1 =wei[4];delay(8);P1 =0x00;P0 =duan[hour/10]; P1 =wei[5];delay(8);P1=0x00;P0 =0x7f;P1 =wei[6];delay(8);P1=0x00; P0 =week1[week];P1 =wei[7];delay(8);} scan_key();}if(sw5==0&&sw1==2) {for(n=0;n&20;n++){P1 =0x00;P1 =P1&0 P0 =duan[sec%10];P1 =wei[0];delay(8);P1 =0x00;P0 =duan[sec/10];P1 =wei[1];delay(8);P1 =0x00;P0 =duan[min%10];P1 =wei[2];delay(8);P1 =0x00;P0 =duan[min/10]; P1 =wei[3];delay(8);P1 =0x00;P0 =0x7f;P1 =wei[6];delay(8);P1 =0x00; P0 =week1[week];P1 =wei[7];delay(8);} scan_key();}if(sw5==0&&sw1==3){for(n=0;n&20;n++){P1 =0x00;P1 =P1&0x7f; P0 =duan[sec%10];P1 =wei[0];delay(8);P1 =0x00;P0 =duan[sec/10];P1 =wei[1];delay(8);P1 =0x00;P0 =duan[min%10];P1 =wei[2];delay(8);P1 =0x00;P0 =duan[min/10]; P1 =wei[3];delay(8);P1=0x00;P0=duan[hour%10];P1=wei[4];delay(8);P1 =0x00;P0 =duan[hour/10];P1 =wei[5];delay(8);P1 =0x00;P0 =0x7f;P1 =wei[6];delay(8);} scan_key();}if(sw5==1&&sw1==9){for(n=0;n&20;n++){P1 =0x00;P1 =P1&0x3f; P0 =duan[month%10];P1 =wei[2];delay(8);P1 =0x00;P0 =duan[month/10]; P1 =wei[3];delay(8);P1 =0x00;P0 =duan[year1%10];P1 =wei[4];delay(8);P1 =0x00;P0 =duan[year1/10];P1 =wei[5];delay(8);P1 =0x00;P0 =duan[year2%10];P1 =wei[6];delay(8);P1 =0x00;P0 =duan[year2/10];P1 =wei[7];delay(8);} scan_key();} if(sw5==1&&sw1==8){for(n=0;n&20;n++){P1 =0x00;P1 =P1&0xf3; P0 =duan[day%10];P1 =wei[0];delay(8);P1 =0x00;P0 =duan[day/10]; P1 =wei[1];delay(8);P1 =0x00;P0 =duan[year1%10];P1 =wei[4];delay(8);P1 =0x00;P0 =duan[year1/10];P1 =wei[5];delay(8);P1 =0x00;P0 =duan[year2%10];P1 =wei[6];delay(8);P1 =0x00;P0 =duan[year2/10];P1 =wei[7];delay(8);} scan_key();}if(sw5==1&&sw1==7){for(n=0;n&20;n++){P1 =0x00;P1 =P1&0xc3; P0 =duan[day%10];P1 =wei[0];delay(8);P1 =0x00;P0 =duan[day/10]; P1 =wei[1];delay(8);P1 =0x00;P0 =duan[month%10];P1 =wei[2];delay(8);P1 =0x00;P0 =duan[month/10];P1 =wei[3];delay(8);P1 =0x00;P0 =duan[year2%10];P1 =wei[6];delay(8);P1 =0x00;P0 =duan[year2/10];P1 =wei[7];delay(8);} scan_key();}if(sw5==1&&sw1==6){for(n=0;n&20;n++){P1 =0x00;P1 =P1&0xc3; P0 =duan[day%10];P1 =wei[0];delay(8);P1 =0x00;P0 =duan[day/10]; P1 =wei[1];delay(8);P1 =0x00;P0 =duan[month%10];P1 =wei[2];delay(8);P1 =0x00;P0 =duan[month/10];P1 =wei[3];delay(8);P1 =0x00;P0 =duan[year1%10];P1 =wei[4];delay(8);P1 =0x00;P0 =duan[year1/10];P1 =wei[5];delay(8);} scan_key();} }}}void time1(void) interrupt 3{TH1 =()/256;TL1 =()%256;if(++cnt&8) cnt=0;if(sw5==0) //显示时分秒 {switch(cnt){case 0: P1 =0x00;P0 =duan[sec%10];P1 =wei[cnt]; case 1: P1 =0x00;P0 =duan[sec/10];P1 =wei[cnt];case 2: P1 =0x00;P0 =duan[min%10];P1 =wei[cnt];case 3: P1 =0x00;P0 =duan[min/10];P1 =wei[cnt];scan_key();case 4: P1 =0x00;P0 =duan[hour%10];P1 =wei[cnt];scan_key();case 5: P1 =0x00;P0 =duan[hour/10]; P1 =wei[cnt];scan_key(); case 6: P1 =0x00;P0 =0x7f;P1 =wei[cnt];scan_key();case 7: P1 =0x00;P0 =week1[week];P1 =wei[cnt];scan_key(); default: }}if(sw5==1) //显示年月日 {switch(cnt){case 0: P1 =0x00;P0 =duan[day%10];P1 =wei[cnt]; case 1: P1 =0x00;P0 =duan[day/10];P1 =wei[cnt];case 2: P1 =0x00;P0 =duan[month%10];P1 =wei[cnt];case 3: P1 =0x00;P0 =duan[month/10];P1 =wei[cnt];scan_key();case 4: P1 =0x00;P0 =duan[year1%10];P1 =wei[cnt];scan_key();case 5: P1 =0x00;P0 =duan[year1/10]; P1 =wei[cnt];scan_key(); case 6: P1 =0x00;P0 =duan[year2%10];P1 =wei[cnt];scan_key();case 7: P1 =0x00;P0 =duan[year2/10];P1 =wei[cnt];scan_key(); default: }}}void conv(void){if(dataa&=201){dataa=0;sec++;}if(sec&=60){sec=0;min++;}if(sw1==0&&min&=60){min=0;hour++;}if(sw1==0&&hour&=24){if(year%4==0){if(month==2){if(day==29){day =1;month++;}else day++;}else{if(month==4||month==6||month==9||month==11){if(day==30){day =1;month++;}else day++;}else{if(day==31){day =1;month++;if(month==13){month =1;year++;}}else day++;}}}else{if(month==2){if(day==28){day =1;month++;}else day++;}else{if(month==4||month==6||month==9||month==11){if(day==30){day =1;month++;}else day++;}else{if(day==31){day =1;month++;if(month==13){month =1;year1++;if(year1==100){year2++;}}}else day++;}} }hour=0;week++;}if(sw1==0&&week&=7)week=0; }void delay(ms) {uchar i, while(ms--) for(k=0;k&123;k++);for(i=0;i&123;i++);}void scan_key(void){if(cnt==7&&P3_4==0){delay(3);if(cnt==7&&P3_4==0){key4 =0; key1 =1; //检查是第一个键按下 }}if(sw5==0&&key1==1&&cnt==7&&P3_4==1) //按键松手时表示真的按下,sw5判断此时是什么显示状态,时间还是年月日 {sw1 =1; //闪烁分针 }if(sw5==1&&key1==1&&cnt==7&&P3_4==1) //若为年月日则闪烁第一二位 {sw1 =9;}if(sw1==1&&P3_4==0&&cnt==7) //在时间状态第一个键又一次按下 {delay(3);if(sw1==1&&P3_4==0&&cnt==7){key1 =2; //在时间状态第一个键的第二种状态 }}if(sw1==9&&P3_4==0&&cnt==7) //在年月日状态第一个键第二次按下 {delay(3);if(sw1==9&&P3_4==0&&cnt==7){key1 =9; //在年月日状态第一个键的第二种状态 }}if(key1==2&&cnt==7&&P3_4==1) //在时间确认第一个键第二次按下 {sw1 =2; // 并闪烁时针 }if(key1==9&&cnt==7&&P3_4==1) //年月日状态确认第一个键第二次按下 {sw1 =8; // 并闪烁月分 }if(sw1==8&&P3_4==0&&cnt==7) //在年月日状态第一个键第三次按下 {delay(3);if(sw1==8&&P3_4==0&&cnt==7){key1 =8; //在年月日状态第一个键的第三种状态 }}if(key1==8&&cnt==7&&P3_4==1) //年月日状态确认第一个键第三次按下 {sw1 =7; // 并闪烁年的后两位 ///////////////////}if(sw1==2&&P3_4==0&&cnt==7){delay(3);if(sw1==2&&P3_4==0&&cnt==7){key1 =3; }}if(sw1==7&&P3_4==0&&cnt==7) //在年月日状态第一个键第四次按下 {delay(3);if(sw1==7&&P3_4==0&&cnt==7){key1 =7; //在年月日状态第一个键的第四种状态 }}if(key1==7&&cnt==7&&P3_4==1) //年月日状态确认第一个键第四次按下 {sw1 =6; // 并闪烁年的前两位 ///////////////////}if(sw1==2&&P3_4==0&&cnt==7){delay(3);if(sw1==2&&P3_4==0&&cnt==7){key1 =3; }}if(key1==3&&cnt==7&&P3_4==1){sw1 =3; // 并闪烁星期 }if(sw5==0&&P3_4==0&&cnt==6) //检查第二个键是否按下 {delay(3);if(sw5==0&&P3_4==0&&cnt==6){key2 =1;}}if(key2==1&&cnt==6&&P3_4==1){key2 =0; sw2 =1; //在时间状态确认第二个键按下 if(sw2==1&&sw1==1) //和sw1的值对比,加分 {min++;if(min&=60)min =0;}if(sw2==1&&sw1==2) //和sw1的值对比,加时 {hour++;if(hour&=24)hour =0;}if(sw2==1&&sw1==3){week++;if(week&6)week =0;}}if(sw5==1&&P3_4==0&&cnt==6) //在年月日检查第二个键是否按下 {delay(3);if(sw5==1&&P3_4==0&&cnt==6){key2 =7;}}if(key2==7&&cnt==6&&P3_4==1){key2 =0; sw2 =1; //确认第二个键按下 if(sw2==1&&sw1==9) //和sw1的值对比,加day {day++;if(day&31)day =0;}if(sw2==1&&sw1==8) //和sw1的值对比,加month{month++;if(month&12)month =0;}if(sw2==1&&sw1==7){year1++;if(year1&100)year1 =0;}if(sw2==1&&sw1==6){year2++;if(year2&100)year2 =20;}} //检查时间状态第三个键是否按下 if(sw5==0&&P3_4==0&&cnt==5) //检查第三个键是否按下 {delay(3);if(sw5==0&&P3_4==0&&cnt==5){key3 =1;} }if(key3==1&&cnt==5&&P3_4==1){key3 =0;sw3 =1;if(sw3==1&&sw1==1){if(min&=0)min =60;min--; //分针减 }if(sw3==1&&sw1==2){if(hour&=0)hour =24;hour--; //时针减 } if(sw3==1&&sw1==3){if(week&=0)week =7;week--;}}if(sw5==1&&P3_4==0&&cnt==5) //在年月日检查第三个键是否按下 {delay(3);if(sw5==1&&P3_4==0&&cnt==5){key3 =7;} }if(key3==7&&cnt==5&&P3_4==1){key3 =0;sw3 =7;if(sw3==7&&sw1==9){if(day&=0)day =32;day--; //day减 } if(sw3==7&&sw1==8){if(month&=0)month =13;month--; //month减 }if(sw3==7&&sw1==7){if(year1&=0)year1 =100; //year减 year1--;}if(sw3==7&&sw1==6){if(year2&=20)year2 =100; //year减 year2--;}}if(P3_4==0&&cnt==4&&sw1!=0&&sw5==0){delay(3);if(P3_4==0&&cnt==4&&sw1!=0&&sw5==0){sw1=0;sec=0;key4=1;key1=0;}}if(P3_4==0&&cnt==4&&sw1!=0&&sw5==1){delay(3);if(P3_4==0&&cnt==4&&sw1!=0&&sw5==1){sw1=0;key4=1;key1=0;}} if(P3_4==0&&cnt==3){delay(3);if(P3_4==0&&cnt==3){key5 =1;}}if(key5==1&&P3_4==1&&cnt==3){sw5 =1;} if(P3_4==0&&sw5==1&&cnt==3){delay(3);if(P3_4==0&&sw5==1&&cnt==3){key5 =0;}}if(P3_4==1&&key5==0&&cnt==3){sw5 =0;} }void main(void){PCA0MD =0 ;XBR1 =0x40 ; P0MDOUT =0xFF ;P1MDOUT =0xFF ;init();while(1){conv();year=year1+year2*100;}}五、调试及性能分析 5.1
硬件调试:主要检查电路的焊接,有无虚焊,漏焊,然后检查电路与单片机的联线,为了方便自己做了一根数据线,然后用万用表测试,全部导通后进行通电检测,上电后排查电路板的各点电平是否正常,测试完毕后进行软件调试。5.2 软件调试:主要以以编程序为主,并进行单片机输出口线高低电平的检验。本程序采用C语言编写,用Keil
C51编译器编程调试,本程序的难点之一在于让它闪烁,也就是再其它灯不变的情况下闪烁需要调整的部分。 经过测试,任务以及要求全部达到,初始化时,时间是1-00:00:00,切换后是,由于时间关系没能经过长时间的验证性测试,短期测试发现每一个小时快一秒钟,只进行了粗调。六、图片展示此时显示的是2:54:59,星期日此时显示的是日作品相关图片:冬天家里只要使用大功率电器,门口的触电保安器那里就会发出很大的电流声,不知是什么原因?_百度知道
冬天家里只要使用大功率电器,门口的触电保安器那里就会发出很大的电流声,不知是什么原因?
家用电器总功率是多订弧斥旧俪搅筹些船氓少?若超过或接近保安器的额定功率,建议更换大一个等级功率的保安器。PS:保安器外壳温度是否过高?若温度不算太高可不更换。大电流流过无熔丝开关有电流声是正常的(保安器属无熔丝开关,内部不光有漏电保护还有过载保护)。
其他类似问题
为您推荐:
大功率电器的相关知识
其他4条回答
摸一下开关如果不发热没关系的
那是 过电流保护装置在有大电流通过时发出的声音,也就是电流在大一点的话就要跳闸了。
看看压线 螺丝是否松动或者,触电保安器问题换大的
触电保安器也就是空气开关,它可以起到过电流,短路,漏电的作用,,会发出声音,是你的触电保安器用的太小了。。。这一定是大电流引起的,那为什么大电流空气开关不动作呢?有可能是空气开关里的触点在大电流的冲击下粘到一起了,分不开了。要根据家庭使用电器功率的大小来选择开关的大小。大了起不到保护的作用,小了会引起开关的损坏。。一般家里用大功率电器时,25A的开关就可以了,我所说的是只有一台的时候。要是有好几台的时候就要25A+(N台X10A)就OK了。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁电子钟EDA课程设计(含年月日)_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
电子钟EDA课程设计(含年月日)
上传于||暂无简介
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩22页未读,继续阅读
你可能喜欢

我要回帖

更多关于 进口葡萄酒遇冷 的文章

 

随机推荐