完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include"reg52.h" //µ÷ÓÃ×ÔÖÆÍ·Îļþ£¬°üº¬Ïà¹Ø¹¦Äܺ¯Êý
void get_uart_deal(); //´¦Àí´®¿ÚÊÕµ½µÄÊý¾Ý void getkey_deal(); //¼Ç¼¼üÅÌÊäÈë²¢´¦Àí uint buf1[6]={0}; //¼Ç¼ʱ·ÖÃë uint buf2[8]={0}; //¼Ç¼ÄêÔÂÈÕ uchar uart[9]="000000000"; //¼Ç¼´®¿Ú½ÓÊÕµ½µÄ×Ö·û´® uint uart_deal[8]={0}; //´æ·Å´¦ÀíºóµÄ´®¿ÚÊý¾Ý uint adjust=0,x=10,show=1; //µ÷Õûʱ¼ä±êÖ¾/¼Ç¼°´¼ü±ê uint hx=0,mx=0,sx=0,days=1,months=5,years=2013,t=0; //ʱ·ÖÃëÄêÔÂÈÕ uint num1=0,num2=0; //¼üÅ̽ÓÊÜÏà¹Ø±äÁ¿ uint num=0,i=0,temp1,temp2,flag; //´®¿ÚÐÞ¸ÄÏà¹Ø±äÁ¿ uchar tab[]="-----ÎÒÊÕµ½ÁË"; //´®¿ÚÏÔʾ×Ö·û /*********************************************************/ //*************************Ö÷º¯Êý*************************/ /*********************************************************/ void main() { timer0_init(); while(1) { getkey_deal(); } } /*********************************************************/ //**********************´®¿ÚÊý¾Ý´¦Àí**********************/ /*********************************************************/ void get_uart_deal() { if(num==9) { ES=0; for(i=1;i<9;i++) { uart_deal[i]=uart[i]-48; } if(uart[0]==115) //ÐÞ¸Äʱ·ÖÃë { hx=uart_deal[1]*10+uart_deal[2]; if(hx>=24) hx=0; mx=uart_deal[4]*10+uart_deal[5]; if(mx>=60) mx=0; sx=uart_deal[7]*10+uart_deal[8]; if(sx>=60) sx=0; } if(uart[0]==110) //ÐÞ¸ÄÄêÔÂÈÕ years=uart_deal[1]*1000+uart_deal[2]*100+uart_deal[3]*10+uart_deal[4]; months=uart_deal[5]*10+uart_deal[6]; if(months>=13) months=1; days=uart_deal[7]*10+uart_deal[8]; if((years % 400 == 0)||(years % 4 == 0)&&(years % 100 != 0)) //¶þÔÂ29Ìì(ÈòÄê) { if(months==2) { if(days>=30) days=1; } } else //¶þÔÂ28Ìì (ƽÄê) { if(months==2) { if(days>=29) days=1; } } if(months==4||months==6||months==9||months==11) // СÔ·Ý30Ìì { if(days>=31) days=1; } else //´óÔ·Ý31Ìì { if(days>=32) days=1; } } for(i=0;i<14;i++) { SBUF=tab[i]; while(!TI); TI=0; } for(i=0;i<9;i++) { SBUF=uart[i]; while(!TI); TI=0; } ES=1; num=0; } } /*********************************************************/ /*********************°´¼üÊý¾Ý´¦Àí************************/ /*********************************************************/ void getkey_deal() { get_uart_deal(); x=keyscan(); if(x==10) { ET0=0; adjust++; //¸ÄÄêÔÂÈÕ»òʱ·ÖÃë if(adjust==3) { adjust=0; ET0=1; } } /* /////////////////////////////////////////////////////// */ ////////////////////////¸Ãʱ·ÖÃë±ê־λ/////////////////////// /* /////////////////////////////////////////////////////// */ if(adjust==1) { if(x!=250&&x<10) { buf1[num1]=x; num1++; if(num1==6) { num1=0; hx=buf1[0]*10+buf1[1]; if(hx>=24) hx=0; mx=buf1[2]*10+buf1[3]; if(mx>=60) mx=0; sx=buf1[4]*10+buf1[5]; if(sx>=60) sx=0; } } } /* /////////////////////////////////////////////////////// */ ////////////////////////¸ÄÄêÔÂÈÕ±ê־λ/////////////////////// /* /////////////////////////////////////////////////////// */ if(adjust==2) { if(x!=250&&x<10) { buf2[num2]=x; num2++; if(num2==8) { num2=0; years=buf2[0]*1000+buf2[1]*100+buf2[2]*10+buf2[3]; months=buf2[4]*10+buf2[5]; if(months>=13) months=1; days=buf2[6]*10+buf2[7]; if((years % 400 == 0)||(years % 4 == 0)&&(years % 100 != 0)) //¶þÔÂ29Ìì(ÈòÄê) { if(months==2) { if(days>=30) days=1; } else //¶þÔÂ28Ì죨ƽÄ꣩ { if(months==2) { if(days>=29) days=1; } } if(months==4||months==6||months==9||months==11) //СÔ·Ý30Ìì { if(days>=31) days=1; } else //´óÔ·Ý31Ìì { if(days>=32) days=1; } } } } /* ////////////////////////////////////////////////////// */ ///////////////////////Ñ¡ÔñÏÔʾº¯Êý////////////////////////// /*/////////////////////////////////////////////////////////*/ if(x==15) { show++; if(show==3) show=1; } if(show==1) dispaly(hx,mx,sx); if(show==2) dispaly1(years,months,days); } /*********************************************************/ //******************¶¨Ê±Æ÷T0ÖжϷþÎñº¯Êý*****************// /*********************************************************/ void timer0()interrupt 1 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; t++; if(sx==60) { sx=0; mx++; if(mx==60) { mx=0; hx++; if(hx==24) { hx=0; days++; if((years%40==0)||(years%4==0)&&(years%100!=0))//¶þÔÂ29Ìì(Èò) { if(months==2) { if(days>29) { days=1; months++; } } } else //¶þÔÂ28Ìì(ƽ) { if(months==2) { if(days>28) { days=1; months++; } } } if(months==4||months==6||months==9||months==11) //СÔ·Ý30Ìì { if(days>30) { days=1; months++; } } else //´óÔ·Ý31Ìì { if(days>31) { days=1; months++; } } if(months>12) { months=1; years++; } } } } } } /*********************************************************/ //*********************¶¨Ê±Æ÷T1ÖжϷþÎñº¯Êý**************// /*********************************************************/ void uart_isr()interrupt 4 { if(RI==1) { RI=0; uart[num]=SBUF; num++; } } #ifndef _DIS_H_ #define _DIS_H_ extern void diplay_init(); //ÏÔʾº¯Êý³õʼ»¯ #endif #include #define N 7 //ºê¶¨ÒåN£¬»ù±¾Ñ»·´ÎÊý #define M 50 //¶¨ÒåM,ÑÓʱÓà #define W 10 //¶¨ÒåW,»ù±¾Ñ»·´ÎÊý void display_init(); //ÏÔʾº¯Êý³õʼ»¯ void dis1(); void dis2(); void dis3(); void dis4(); void dis5(); void dis6(); void dis7(); void dis8(); void delayms(int ms); //ÑÓʱº¯Êýms char code tabx[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};//0~9 char code table[]={0x39,0x3f,0xf3,0eef}; int waits=5,ix=0,jx=0; //ÑÓʱʱ¼ä²ÎÊý void dispaly_init() { P1=0xff; //³õʼ»¯ÊýÂë¹ÜÏÔʾ¶Ë¿Ú P0=0x00; for(ix=0;ix<8;ix++) for(jx=15;jx>0;jx--) { dis0(); } for(ix=0;ix { dis1(); } for(ix=0;ix { dis2(); } for(ix=0;ix { dis3(); } for(ix=0;ix { dis4(); } for(ix=0;ix { dis5(); } for(ix=0;ix { dis6(); } for(ix=0;ix { dis7(); } for(ix=0;ix { dis8(); } } void dis0() { P0=table1[0]; P1=0xfe; delayms(waits); P1=0xff; P0=table1[1]; P1=0xfd; delayms(waits); P1=0xff; P0=table1[2]; P1=0xfb; delayms(waits); P1=0xf7; P0=table1[3]; P1=0xfe; delayms(waits); P1=0xff; ////////////////// ////////////////// P0=tabx[7]; P1=0xdf; delayms(waits); P1=0xff; ////////////////// ////////////////// P0=tabx[4]; P1=0xbf; delayms(waits); P1=0xff£» ////////////////// ////////////////// P0=tabx[8]; P1=0x7f; delayms(waits); P1=0xff; } void dis1() { P0=tabx[1]; P1=0xfe; delayms(waits); P1=0xff; } void dis1() { P0=tabx[1]; P1=0xfe; delayms(waits); P1=0xff; } void dis2() { P0=tabx[1]; P1=0xfe; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfd; delayms(waits); P1=0xff; } void dis3() { P0=tabx[1]; P1=0xfe; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfd; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfd; delayms(waits); P1=0xff; } void dis4() { P0=tabx[1]; P1=0xfe; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfd; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfb; delayms(waits); P1=0xff; P0=tabx[4]; P1=0xf7; delayms(waits); P1=0xff; } void dis5() { P0=tabx[1]; P1=0xfe; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfd; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfb; delayms(waits); P1=0xff; P0=tabx[4]; P1=0xf7; delayms(waits); P1=0xff; P0=tabx[4]; P1=0xef; delayms(waits); P1=0xff; } void dis6() { P0=tabx[1]; P1=0xfe; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfd; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfb; delayms(waits); P1=0xff; P0=tabx[4]; P1=0xf7; delayms(waits); P1=0xff; P0=tabx[4]; P1=0xef; delayms(waits); P1=0xff; P0=tabx[3]; P1=0xdf; delayms(waits); P1=0xff; } void dis7() { P0=tabx[1]; P1=0xfe; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfd; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfb; delayms(waits); P1=0xff; P0=tabx[4]; P1=0xf7; delayms(waits); P1=0xff; P0=tabx[4]; P1=0xef; delayms(waits); P1=0xff; P0=tabx[3]; P1=0xdf; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xbf; delayms(waits); P1=0xff; } void dis8() { P0=tabx[1]; P1=0xfe; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfd; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xfb; delayms(waits); P1=0xff; P0=tabx[4]; P1=0xf7; delayms(waits); P1=0xff; P0=tabx[4]; P1=0xef; delayms(waits); P1=0xff; P0=tabx[3]; P1=0xdf; delayms(waits); P1=0xff; P0=tabx[0]; P1=0xbf; delayms(waits); P1=0xff; P0=tabx[7]; P1=0x7f; delayms(waits); P1=0xff; } void delayms(int ms) { int tx,kx; for(tx=ms;tx>0;tx--) for(kx=M;kx>0;kx--); } #ifndef _SOURCCE_H_ #define _SOURCCE_H_ #define unint unsigned int #define uchar unsigned char extern void timer0()_init(); //¶¨Ê±Æ÷³õʼ»¯ extern void display(uint h,uint m,uint s); //ÏÔʾº¯Êý extern void display1(uint year,uint month,uint day); //ÏÔʾº¯Êý extern uint keyscan(); //¼üÅÌɨÃè³ÌÐò #endif #include #define uint unsigned int #define uchar unsigned char uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9 void delay(uint xms); //ÑÓʱº¯Êý,XMSºÁÃë void timer0_init(); //¶¨Ê±Æ÷¡¢´®¿Ú¡¢ÊýÂë¹Ü¶Ë¿Ú³õʼ»¯ void display(uint h,uint m,uint s); //ÏÔʾº¯Êý void display1(uint year,uint month,uint day); uint keyscan(); //¼üÅÌɨÃè uint wait=5; //ÑÓʱʱ¼ä /*********************************************************/ //********************Ïà¹ØÉèÖóõʼ»¯º¯Êý*****************// /*********************************************************/ void timer0_init() { display_init(); //ÏÔʾº¯Êý³õʼ»¯ PCON|=0x80; //SMOD=1,²¨ÌØÂʼӱ¶ TMOD=0x21; //ÉèÖö¨Ê±Æ÷0¹¤×÷·½Ê½Îª1(0000 0001);´®¿Ú¹¤×÷:¶¨Ê±Æ÷1¹¤×÷·½Ê½2(0010 0000) TH0=(65535-50000)/256; //¶¨Ê±Æ÷³õÖµ,¶¨Ê±50msºó·¢ÉúÖÐ¶Ï TL0=(65535-50000)%256; TH1=0xf3; //¶¨Ê±Ê±¼ä243΢Ãë TL1=0xf3; //²¨ÌØÂÊ4800 TR0=1; //Æô¶¯¶¨Ê±Æ÷0 TR1=1; //Æô¶¯¶¨Ê±Æ÷1 ET0=1; //¿ª¶¨Ê±Æ÷0ÖÐ¶Ï SM0=0; //8λUART²¨ÌØÂʿɱä(T1Òç³öÂÊ/N)·½Ê½1 SM1=1; PS=1; //´®¿ÚÖжϸßÓÅÏȼ¶ REN=1; //ÔÊÐí´®¿Ú½ÓÊÕ EA=1; //¿ª×ÜÖÐ¶Ï ES=1; //¿ª´®¿ÚÖÐ¶Ï } /*********************************************************/ //*********************ÑÓʱº¯Êý**************************// /*********************************************************/ void delay(unit xms) { uint i,j; for(i=0;i<30;i++) for(j=xms;j>0;j--); } /*********************************************************/ //*********************ÏÔʾº¯Êý0**************************// /*********************************************************/ void display(uint h,uint m,uints) { P0=table[h/10]; P1=0xfe; delay(wait); P1=0xff; P0=table[h%10]; P1=0xfd; delay(wait); P1=0xff; ////////////////////////////////////// ////////////////////////////////////// P0=0x40; P1=0xfb; delay(wait); P1=0xff; ////////////////////////////////////// ////////////////////////////////////// P0=table[m/10]; P1=0xf7; delay(wait); P1=0xff; P0=table[m%10]; P1=0xef; delay(wait); P1=0xff; /////////////////////////////////////// /////////////////////////////////////// P0=0x40; P1=0xdf; delay(wait); P1=0xff; ////////////////////////////////////// ////////////////////////////////////// P0=table[s/10]; P1=0xbf; delay(wait); P1=0xff; P0=table[s%10]; P1=0x7f; delay(wait); P1=0xff; ////////////////////////////////////// ////////////////////////////////////// /*********************************************************/ /**************************ÏÔʾº¯Êý*1*********************/ /*********************************************************/ void display1(uint year,uint month,uint day) { P0=table[year/1000]; P1=0xfe; delay(wait); P1=0xff; P0=table[year%1000/100]; P1=0xfd; delay(wait); P1=0xff; P0=table[year%100/10]; P1=0xfb; delay(wait); P1=0xff; P0=table[year%10]; P1=0xf7; delay(wait); P1=0xff; ////////////////////////////////////// ////////////////////////////////////// P0=table[month/10]; P1=0xef; delay(wait); P1=0xff; P0=table[month%10]; P1=0xdf; delay(wait); P1=0xff; ////////////////////////////////////// ////////////////////////////////////// P0=table[day/10]; P1=0xbf; delay(wait); P1=0xff; } /********************************************************/ //***********************¼üÅÌɨÃè³ÌÐò********************/ /********************************************************/ uint keyscan() { uint temp,key=250; //¶¨Òå±äÁ¿temp,key /*******************************************************************************/ /****************************µÚ1ÐÐÖÃ0*****************************************/ /*******************************************************************************/ P2=0xfe; //ÖÃP2.0µçλΪ0; temp=P2; //P2״̬¸³Óètemp; temp=temp&0xf0; //tempÓë0xf0ÓëÔËËã,¹©ÏɾÓÅжϸß4λÊÇ·ñÓа´¼ü±»°´ÏÂ; if(temp!=0xf0) { delay(50); //ÑÓʱ30msÏû¶¶; temp=P2; //ÔٴζÁP2µÄÖµ,ÔÙ×öÅжÏ,È·¶¨²¢·Ç¶¶¶¯¶øÊÇ°´¼ü; temp=temp&0xf0; if(temp!=0xf0) { temp=P2; //ÖØжÁÈ¡P2¿ÚµÄÖµ¸³Óètemp,ÅжÏP2ÄÄÁ½¸ö¿ÚµçƽΪ00; switch(temp) { case 0xee:key=15;break; case 0xde:key=14;break; case 0xbe:key=13;break; case 0x7e: key=12;break; } while(temp!=0xf0) //µÈ´ý°´¼üÊÍ·Å,Èô°´¼üûÓÐÊÍ·Å,whileÒ»Ö±Ö´ÐÐ,³ÌÐòÍ£ÔÚ´Ë´¦; { temp=P2; //²»¶Ï¶ÁÈ¡P2¿Ú״̬¸³Óètemp,ÒÔ¹©Åжϰ´¼üÊÇ·ñ°´Ï temp=0xf0&temp; } } } /*******************************************************************/ /****************************µÚ2ÐÐÖÃ0*******************************/ /*******************************************************************/ P2=0xfd; temp=P2; temp=temp&0xf0; if(temp!=0xf0) { delay(50); temp=P2; temp=temp&0xf0; if(temp!=0xf0) { temp=P2; switch(temp) { case 0xed:key=11;break; case 0xdd:key=10;break; case 0xbd:key=9;break; case 0x7d:key=8;break; } while(temp!=0xf0) { temp=P2; temp=0xf0&temp; } } } /*******************************************************************************/ /**************************** µÚ3ÐÐÖÃ0*******************************/ /*******************************************************************************/ P2=0xfb; temp=P2; temp=temp&0xf0; if(temp!=0xf0) { delay(50); temp=P2; temp=temp&0xf0; if(temp!=0xf0) { temp=P2; switch(temp) { case 0xeb:key=7;break; case 0xdb:key=6;break; case 0xbb:key=5;break; case 0x7b:key=4;break; } while(temp!=0xf0) { temp=P2; temp=0xf0&temp; } } } /*******************************************************************************/ /****************************µÚ4ÐÐÖÃ0*******************************/ /*******************************************************************************/ P2=0xf7; temp=P2; temp=temp&0xf0; if(temp!=0xf0) { delay(50); temp=P2; temp=temp&0xf0; if(temp!=0xf0) { temp=P2; switch(temp) { case 0xe7:key=3;break; case 0xd7:key=2;break; case 0xb7:key=1;break; case 0x77:key=0;break; } while(temp!=0xf0) { temp=P2; temp=0xf0&temp; } } } return key; } |
|
相关推荐
5个回答
|
|
靠!从keil复制会出现乱码
|
|
|
|
仔细查一下程序吧,基本的语法错误,要不把工程发上来看看。
|
|
|
|
这是我的工程
|
|
|
|
应该是这个文件里面的代码try2.c,buf1附近少了一个分号或者分号格式不对,定位到具体的错误前后检查一下
|
|
|
|
你可以把看不懂的语句百度一下
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
232 浏览 2 评论
《DNK210使用指南 -CanMV版 V1.0》第九章 打印输出实验
182 浏览 0 评论
stm32f407+ksz8863rlli概率性ping不通
883 浏览 1 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-常见网络服务搭建之NFS服务搭建
439 浏览 0 评论
求助:辉芒微芯片 FDM B11GBMH 的信息及开发环境安装
512 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11323 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 20:37 , Processed in 0.639875 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号