资源描述:
《单片机秒表计算器.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、#include#include#include#include#include#defineucharunsignedchar#defineuintunsignedint#definewc0x8fff#definewd0xdfff#definerc0xbfff voiddisplayListChar(unsignedcharX,unsignedcharY,ucharDData);uchardispbuf[]={'0','1','2','3','4','5','6','7','
2、8','9',':'};ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e,0x00}; ucharsecond;uchartemp1; ucharminute;ucharhour;uinttcnt,g;ucharsuanfa;bitflag2;bitflag1=1;//////控制计算器还是液晶调整的状态灯 uinti
3、=0,f,m,g,s,t;// for里的计数值,用于循环 //用来标记按了什么,如+,-.*,或是/sbitP2_0=P2^0;//定义P2.0口用来,当计算值超过15时,P2.0所对应的灯闪几下sbitP2_1=P2^1;//定义P2.1口用来,当除数为0时,P2.1所对应的灯闪几下sbitP2_2=P2^2;sbitP2_3=P2^3;uintnum[4]={0};//用于记录外面输入的数字uintTablenum;sbitP3_4=P3^4;sbitP3_5=P3^5; voidjieguo(void);voidSettime(ucharverify);uc
4、harkbscan(void);///键盘扫描voidShow_Time(void);////显示时间voidSettime(ucharverify);//verify在这里为调整的意思uinttransfor(ucharkey1); voiddelay400ms(void);voiddelay200ms(void);voiddelay5ms(void);voiddelay_1s(void);voiddlms(void); voiddlms1(void){ uintg=20000; while(--g); //延时100mS钟} voidclr(v
5、oid){ i=0; suanfa=0; Tablenum=0; for(f=0;f<4;f++) { num[f]=0; } P2_0=1; P2_1=1; P2_2=1; P2_3=0; P3_4=0; P3_5=1; P0=0xc0; P3_5=0;} //***************************************************************************************************//********************************
6、*******以下液晶驱动**************************************************** voidwaitLcd() //justwaituntil液晶不忙为止 { chartemp; bitflag=1; while(flag==1) { temp=XBYTE[rc]; if(temp>>7==0)flag=0; P1=temp; } P1=0xff; } //just
7、waituntil液晶不忙为止voidWriteCommand_Lcd(bitisCheck,charc) { if(isCheck==1)waitLcd(); XBYTE[wc]=c; } voidwritedata(charc){ waitLcd(); XBYTE[wd]=c;} voidLcdInit() { delay5ms(); delay5ms(); delay5ms(); WriteCommand_Lcd(0,0x38);//三次显示模式设置,不检测忙信号 delay5ms