基于单片机的出租车计价系统设计论文内容摘要:

0xA3,0xAF,0x4B,0x4D}。 /* 元 / k m */ void initial (void)。 /*初始化子程序 */ void delay(void)。 /*延时子程序 */ void check_lcd(void)。 /*LCD 设置子程序 */ void show_lcd(uchar *,uchar *,uchar *)。 /*LCD 显示子程序 */ void lcd_busy(void)。 /*LCD 忙状态检测函数 */ void pute(void)。 /*路程 费用数字位拆分子程序 */ void change_pri(void)。 /*单价修改子程序 */ void change_time(void)。 /*时间修改子程序 */ 本科毕业论文 void clock(void)。 /*时钟显示子程序 */ void check_ds12887(void)。 /*时钟设置子程序 */ main() /*主函数 */ { uint inf=0。 /*第一次标志位 */ initial()。 show_lcd(hz2,hz3,hz4)。 while(1) { clock()。 if(begin==1) //开始计价 { if(inf==0) { fate=20。 //第一次加上起价费 inf=1。 } if(state==0) //不是设置状态 { if(num=LOW) //大于最低速度 { COUT=0。 //低速计数清零 price=a*10+b。 //单价 len+=num*L/HN。 //本次路程加上上次剩余 if(len/TI=0) //达到千位 { leng=len/TI。 //千位增加 len%=TI。 //去除千位 } 本科毕业论文 fa=leng*price。 //临时费用 length+=leng。 //全部路程 leng=0。 fate+=fa。 //全部费用 } else { if(COUT)=60) //低速计数 { length++。 fate+=(10*a+b)。 COUT=0。 } } pute()。 //将数字按位拆分 用以显示 show_lcd(hz2,hz3,hz4)。 } else //设置状态 调用修改子程序 { if(pri==1) change_pri()。 if(tim==1) change_time()。 } } if(clear==1) //清零 { length=0。 fate=0。 inf=0。 本科毕业论文 COM=0xd1。 /* 清除 LED 显示 */ pute()。 show_lcd(hz2,hz3,hz4)。 if(pri==1) change_pri()。 if(tim==1) change_time()。 } }//while(1) }//main /******************** 以 下 是 子 程 序 代 码 ( 包 括 中 断 )********************************/ void keybord(void) interrupt 0 using 1 /*按键中断服务程序 */ { uchar keyboard=0。 EX0=0。 //关中断 COM=0x50。 keyboard=DAT。 keyboard amp。 =0x0f。 /* 保留低四位 */ switch(keyboard) //键值转换为可用数据 并且修改相应标志位 { case 0x0: key=0。 tt++。 nn=1。 cc++。 break。 case 0x1: key=1。 tt++。 nn=1。 cc++。 break。 case 0x2: key=2。 tt++。 nn=1。 cc++。 break。 case 0x3: key=3。 tt++。 nn=1。 cc++。 break。 case 0x4: key=4。 tt++。 nn=1。 cc++。 break。 case 0x5: key=5。 tt++。 nn=1。 cc++。 break。 case 0x6: key=6。 tt++。 nn=1。 cc++。 break。 case 0x7: key=7。 tt++。 nn=1。 cc++。 break。 case 0x8: key=8。 tt++。 nn=1。 cc++。 break。 本科毕业论文 case 0x9: key=9。 tt++。 nn=1。 cc++。 break。 case 0x0B: key=11。 begin=1。 clear=0。 nn=0。 break。 /*B begin*/ case 0x0C: key=12。 clear=1。 begin=0。 nn=0。 break。 /*C clear*/ case 0X0D: key=13。 state=1。 pri=1。 tim=0。 nn=0。 break。 /*D set price*/ case 0x0E: key=14。 state=1。 tim=1。 pri=0。 nn=0。 break。 /*E set time*/ default: key=15。 nn=0。 break。 /*F finish*/ } keyboard=tab[keyboard]。 //按键后 在 LED 上显示 if(pri==1) if(nn==0) //字母 是功能键 在第一位上显示 COM=0x80+8。 else //数字 在后面依次显示 COM=0x80+4+tt。 if(tim==1) if(nn==0) COM=0x80+8。 else COM=0x80+1+cc。 DAT=keyboard。 EX0=1。 //开中断 } void clockserve() interrupt 2 using 2 /*时钟中断服务程序 */ { unsigned char temp2。 COUT++: //低速计数加一 EX1=0。 //关中断 rflag=1。 sta_ds=rega。 //取数据 (小时、分钟、秒) while(uip)。 ds_h=hour。 本科毕业论文 ds_m=minute。 ds_s=second。 temp2=regc。 rflag=0。 EX1=1。 //开中断 } void timer(void) interrupt 3 using 3 /。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。