基于单片机的出租车计价系统设计论文内容摘要:
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 /。基于单片机的出租车计价系统设计论文
相关推荐
计数初值=99。 计数初值 =0 河南理工大学本科课程设计报告 10 4 Proteus 软件仿 真 仿真图 仿真步骤 ( 1) 根据电路图选择器件连接电路 ( 2)双击 AT89S52 装入源程序编译生成的 HEX 文件 ( 3)单击运行按钮 运 行仿真 ( 4) 根据仿真情况与 程序实现任务对比,对于不能实现的任务修改并调试程序,重新装载重新运行调试仿真,直到能完全实现 所要求的功能 为止
物理结构上分为程序存储器空间和数据存储器空间。 程序存储器 ROM:我们为了让单片机实现某一功能,需要利用利用汇编语言或其他语言编写一些源程序,然后再烧录到芯片中, 我们编写的这些程序,就存储在程序存储器空间中。 数据存储器 RAM:我们编写的源程序,在运行的过程中,会产生一些临时的运算结果,这些结果需要临时存放在一个地方,这个地方就是数据寄存器。 8051 单片机具有四个存储器空间:
而当 |e(t)|= β 时,则不管比例作用为正或为负,都使它向有利于接近给定值的方向调整,即取其值为|e(t)e(t1)|, 其符号与积分项一致。 利用这样的算 法,可以加快控制的动态过程。 增量算法的饱和作用及其抑制 在 PID增量算法中,由于执行元件本身是机械或物理的积分储存单元,如果给定值发生突变时,由算法的比例部分和微分部分计算出的控制增量可能比较大
、绿灯的状态即将切换。 ( 3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。 时间为 40 秒。 东西方向车流大 通行时间长。 ( 4)这样如上 方案 的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。 ( 5)此表可根据车流量动态设定红绿灯初始值东华理工大学毕业论文 7 总体设计框图 图 31 交通控制系统总体框图 复位电路 的基本功能是
,如果同时亮应关闭信号灯系统,并立即报警。 ( 3)南北红灯维持 25S,在南北红灯亮的同时东西绿灯也亮,并维持 20S,到 20S时,东西绿灯闪亮,闪亮 3S后熄灭,此时,东西黄灯亮并维持 2S后东西黄灯熄灭,东西红灯亮。 同时,南北红灯熄灭,南北绿灯亮。 ( 4)东西红灯亮维持 30S,南北绿灯亮维持 25S,然后闪亮 3S后熄灭,同时南北黄灯亮,维持 2S 后熄灭,这时南北红灯亮
气体传感器主要可以 分为金属氧化物半导体式传感器、固体电解质传感器、红外式传感器等,一般的半导体传感器测量时受环境影响较大,输出线性不稳定;电解式气体传感器气体的重复性比较差;红外线吸收散射式气体传感器灵敏度高,可重复性好,响应时间快,考虑到系统的长期稳定性和经济性选择采用红外二氧化碳传感器 6004。 中北大学信息商务学院 2020 届毕业设计 说明 书 8 红外二氧化碳传感器的工作原理