电子科技制作设计论文
自行车里程表 Designed by Jason
******************************************************************************/ void wrcom(com) {P1=com;
RW=0; RS=0; E=0; E=1; wait(); }
/***************************************void init_LCD()******************************* 该函数的作用是初始化LCD.
*****************************************************************************************/ void init_LCD() {wrcom(0x01); wrcom(0x06); wrcom(0x38); wrcom(0x0c); }
/****************************************void dispmore()******************************** 该函数的作用是向LCD写入一串数据,并把数据串显示出来.
******************************************************************************************/ void dispmore(line,row,uchar dat[],i) //格式为dispmore(第几行,第几列,开始要显示的字符地址,显示几个字符); {uchar com; s=dat;
if(line==1) {com=0x80+row-1; wrcom(com);
while((i--)!=0&&com<=0x8f) } else
{com=0xc0+row-1; wrcom(com);
while((i--)!=0&&com<=0xcf) } }
{dispone(*s); com++; s++; }
{dispone(*s); s++; } com++;
- 11 -
电子科技制作设计论文
自行车里程表 Designed by Jason
/****************************************void ttimep()******************************** 累计行驶时间数据处理及显示子程序
******************************************************************************************/ void ttimep() {
sww=sj/36000; ww=sj6000/3600; qw=sj600/600; bw=sj`0/60; sw=sj`/10; gw=sj; wrcom(0xc1); dispone('T'); dispone('i'); dispone('m'); dispone('e'); dispone(' '); dispone(' ');
dispone(sww+0x30); dispone(ww+0x30); dispone(':');
dispone(qw+0x30); dispone(bw+0x30); dispone(':');
dispone(sw+0x30); dispone(gw+0x30); }
/****************************************void timer1()******************************** T1中断服务子程序,每20ms中断一次,ssji加1,根据公式S=tc*qs和V=tc/ssj计算累计里程和 ******************************************************************************************/ void timer1() interrupt 3 {
ssji++; TH1=0xb1; TL1=0xdf; }
/****************************************void lcp()******************************** 累计里程数据处理和显示子程序,若<999m则单位为m,若>999m则单位为km
******************************************************************************************/
- 12 -
电子科技制作设计论文
自行车里程表 Designed by Jason void lcp()
{
qsls=100000/tc; if(qs>qsls){
sww=qs*tc/10000000; ww=qs*tc000000/1000000; qw=qs*tc00000/100000; bw=qs*tc000000/10000; sw=qs*tc000/1000; wrcom(0x81); dispone('S'); dispone(' '); dispone(' '); dispone(' '); dispone(' '); dispone(sww+0x30); dispone(ww+0x30); dispone(qw+0x30); dispone('.'); dispone(bw+0x30); dispone(sw+0x30); dispone(' '); dispone('k'); dispone('m'); } else{
qw=qs*tc0000/10000; bw=qs*tc000/1000; sw=qs*tc00/100; gw=qs*tc0/10; wrcom(0x81); dispone('S');
dispone(' '); dispone(' '); dispone(' '); dispone(' '); dispone(' '); dispone(' '); dispone(qw+0x30); dispone(bw+0x30); dispone(sw+0x30); dispone('.'); dispone(gw+0x30); dispone(' ');
- 13 -
电子科技制作设计论文
自行车里程表 Designed by Jason dispone('m'); } }
/****************************************void pjsdp()******************************** 平均速度数据处理及显示子程序
******************************************************************************************/ void pjsdp() {
pjsd=qs*tc*36/sj; qw=pjsd0000/10000; bw=pjsd000/1000; sw=pjsd00/100; gw=pjsd0/10; wrcom(0x82); dispone('V'); dispone('a'); dispone(' '); dispone(' '); dispone(qw+0x30); dispone(bw+0x30); dispone('.'); dispone(sw+0x30); dispone(gw+0x30); dispone(' '); dispone('k'); dispone('m'); dispone('/'); dispone('h'); }
/****************************************void sdp()******************************** 当前速度数据处理及显示子程序
******************************************************************************************/ void sdp() { if(sji!=0) sd2=tc*1800/sji; else sd2=0;
qw=sd20000/10000; bw=sd2000/1000; sw=sd200/100; gw=sd20/10; wrcom(0x82);
- 14 -
电子科技制作设计论文
自行车里程表 Designed by Jason dispone('V'); dispone(' '); dispone(' '); dispone(' '); dispone(qw+0x30); dispone(bw+0x30); dispone('.'); dispone(sw+0x30); dispone(gw+0x30); dispone(' '); dispone('k'); dispone('m'); dispone('/'); dispone('h'); }
/****************************************void mxsdp()******************************** 最大速度数据处理及显示子程序
******************************************************************************************/ void mxsdp() {
if(mxsd!=0)
mxsd2=tc*1800/mxsd; else mxsd2=0;
qw=mxsd20000/10000; bw=mxsd2000/1000; sw=mxsd200/100; gw=mxsd20/10; wrcom(0xc2); dispone('V'); dispone('m'); dispone(' '); dispone(' '); dispone(qw+0x30); dispone(bw+0x30); dispone('.'); dispone(sw+0x30); dispone(gw+0x30); dispone(' '); dispone('k'); dispone('m'); dispone('/'); dispone('h'); }
- 15 -

