自行车里程表设计论文附程序(4)

2025-11-11

电子科技制作设计论文

自行车里程表 Designed by Jason

/****************************************void clkp()******************************** 当前时间(时钟)数据处理及显示子程序

******************************************************************************************/ void clkp() {

wrcom(0xc4); dispone(csww+0x30); dispone(cww+0x30); dispone(':'); dispone(cqw+0x30); dispone(cbw+0x30); dispone(':'); dispone(csw+0x30); dispone(cgw+0x30); }

/****************************************void apfz()******************************** 加速度数据处理及显示子程序 辅助程序

******************************************************************************************/ void apfz() {

wrcom(0xc2); dispone('a'); wrcom(0xc6); dispone(qw+0x30); dispone(bw+0x30); dispone('.'); dispone(sw+0x30); dispone(gw+0x30); dispone(' '); dispone('m'); dispone('/'); dispone('s'); dispone('2'); }

/****************************************void ap()******************************** 加速度数据处理及显示子程序

******************************************************************************************/ void ap() {

if (sjiold==sji) {gw=sw=bw=qw=0; apfz();}

- 16 -

电子科技制作设计论文

自行车里程表 Designed by Jason else if(sjiold

{aa=360*tc*(sji-sjiold)/sji/sjiold/(sji+sjiold);

qw=aa/1000; bw=aa00/100; sw=aa0/10; gw=aa; wrcom(0xc5); dispone('-'); apfz();}

else if(sjiold>sji)

{aa=360*tc*(sjiold-sji)/sji/sjiold/(sji+sjiold); }

/****************************************void int0()******************************** 外部中断0(干簧管)中断服务程序

*****************************************************************************************/ void int0() interrupt 0 { EX0=0; qs++; TR1=0; sjiold=sji; sji=ssji;

if (mxsd!=0) {

if (sji

}

//重置T1定时常数

else mxsd=sji; TH1=0xb1; TL1=0xdf; ssji=0; TR1=1; {

case 0:wrcom(0x01);lcp();ttimep();break; case 1:wrcom(0x01);sdp();mxsdp();break;

//T1重新开始计时

switch(MODE)

//更新最大速度

//停止T1计时

//圈数+1

qw=aa/1000; bw=aa00/100; sw=aa0/10; gw=aa; wrcom(0xc5); dispone(' '); apfz();}

- 17 -

电子科技制作设计论文

自行车里程表 Designed by Jason case 2:wrcom(0x01);pjsdp();ap();break;

case 3:wrcom(0x01);dispmore(1,5,\ default:break; }

for(i=0;i<32000;i++); IE0=0; EX0=1; }

/****************************************void int1()******************************** 显示模式选择按钮(Disp)中断服务子程序

******************************************************************************************/ void int1() interrupt 2 { EX1=0;

if(++MODE>3) MODE=0; switch(MODE) {

case 0:wrcom(0x01);lcp();ttimep();break; case 1:wrcom(0x01);sdp();mxsdp();break; case 2:wrcom(0x01);pjsdp();ap();break;

case 3:wrcom(0x01);dispmore(1,5,\ default:break; }

for(i=0;i<32000;i++); IE1=0; EX1=1; }

/****************************************vvoid timer0()******************************** T0中断服务子程序,主要用于计算累计行驶时间,50ms一次中断,每20次sj++,更新累计行驶时间(单位秒)

*******************************************************************************************/ void timer0() interrupt 1 {

TH0=0x3c; TL0=0xb0; if(++ssj>19) { sj++; ssj=0; cgw++;

if(cgw>9){cgw=0;csw++;

if(csw>5){csw=0;++cbw;

- 18 -

电子科技制作设计论文

自行车里程表 Designed by Jason

if (MODE==0) {lcp();ttimep();} if (MODE==3) clkp(); } }

/****************************************void main()******************************** 主程序,初始化LCD,显示欢迎信息,更改时钟、直径设置,开中断、计时器等

******************************************************************************************/ void main() {

init_LCD();

dispmore(1,1,\ Meter-\for(i=0;i<25000;i++);

dispmore(2,1,\ Welcome \for(i=0;i<25000;i++);

dispmore(2,1,\ Welcome. \for(i=0;i<25000;i++);

dispmore(2,1,\ Welcome.. \for(i=0;i<25000;i++);

dispmore(2,1,\ Welcome... \for(i=0;i<25000;i++);

dispmore(2,1,\ Welcome.... \for(i=0;i<25000;i++);

dispmore(2,1,\ Welcome..... \for(i=0;i<30000;i++); wrcom(0x01); MODE=0; qs=0; P2=0xff;

cgw=csw=cbw=cqw=cww=csww=cww2=0; wrcom(0x01);

dispmore(1,5,\

if(cbw>9){cbw=0;++cqw; }

}

}

}

if(cqw>5){cqw=0;

cww2++;if(cww2>23)cww2=0;csww=cww2/10;cww=cww2;

- 19 -

电子科技制作设计论文

自行车里程表 Designed by Jason clkp(); while(1){

if(P23==0){for(i=0;i<4000;i++);if(P23==0)break;}

if(P20==0){for(i=0;i<4000;i++);if(P20==0){cww2++;if(cww2>23)cww2=0;csww=cww2/10;cww=cww2;clkp();for(i=0;i<32000;i++);}}

if(P21==0){for(i=0;i<4000;i++);if(P21==0){if(++cqw>5)cqw=0;clkp();for(i=0;i<32000;i++);}} if(P22==0){for(i=0;i<4000;i++);if(P22==0){if(++cbw>9)cbw=0;clkp();for(i=0;i<32000;i++);}} }

for(i=0;i<30000;i++); tr1=5; tr2=5; wrcom(0x01);

dispmore(1,1,\wrcom(0xc9); dispone('c'); wrcom(0xca); dispone('m'); P2=0xff;

wrcom(0xc6);dispone(tr1+0x30); wrcom(0xc7);dispone(tr2+0x30); while(1){

if(P20==0){for(i=0;i<4000;i++);if(P20==0){if(++tr1>9)tr1=0;wrcom(0xc6);dispone(tr1+0x30);for(i=0;i<32000;i++);}}

if(P21==0){for(i=0;i<4000;i++);if(P21==0){if(++tr2>9)tr2=0;wrcom(0xc7);dispone(tr2+0x30);for(i=0;i<32000;i++);}}

if(P23==0){for(i=0;i<4000;i++);if(P23==0)break;} }

tc=3.14*(10*tr1+tr2);

TMOD=0x11; TH0=0x3c; TL0=0xb0; TH1=0xb1; TL1=0xdf; IT0=1; IT1=1; IE=0x9f; IP=0x02; TR0=1; TR1=1;

//T0和T1开始计时

//开中断

//外部中断触发方式均是边缘触发

//T0和T1均是定时器方式 //置定时常数

- 20 -

电子科技制作设计论文

自行车里程表 Designed by Jason P32=1; IE0=0; wrcom(0x01); for (;;); }

- 21 -


自行车里程表设计论文附程序(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于以太网的桥梁健康监测系统的软件设计 - 图文

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219