找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3300|回复: 1
打印 上一主题 下一主题
收起左侧

基于51单片机的出租车计价器设计(nokia5110显示,源程序和仿真)

[复制链接]
跳转到指定楼层
楼主
基于51单片机的出租车计价器,有两个独立按键一个是运行/停止按键另一个是停止时清零的按键


单片机源程序如下:
  1. #include<reg52.h>
  2. #include"nokia5110.h"
  3. #include"ds1302.h"
  4. unsigned int distance=0;
  5. unsigned char  S1_flag=0;
  6. unsigned int price=0;
  7. sbit S1=P3^2;//定义按键
  8. sbit S2=P3^3;

  9. void delay_ms(unsigned char ms)//延时k ms
  10. {
  11.    unsigned char i,j;
  12.          for(i=0;i<ms;i++)
  13.          for(j=0;j<110;j++);
  14. }
  15. void Int_Init(void)//外部中断初始化
  16. {
  17.         IT0=1;
  18.         EX0=1;
  19.         
  20.         IT1=1;
  21.         EX1=1;
  22.         PT1=1;
  23.         EA=1;
  24. }
  25. void Timer0_Init(void) //定时器0初始化
  26. {
  27.    TMOD|=0X05;
  28.          TH0=(65536-10)/256;
  29.          TL0=(65536-10)%256;
  30.          ET0=1;
  31.          TR0=1;
  32.          EA=1;
  33. }
  34. void Price_caculate(void)//价格计算 根据距离和起步价
  35. { if(distance==0)price=0;
  36.   else if(distance<300)price=50;
  37.         else if(distance<1000){price=(distance-300)*0.5+50;}
  38.   else if(distance<2000){price=190+(distance-1000)*0.3;}
  39.   else {price=340+(distance-2000)*0.1;}
  40. }
  41. void Key_Handler(void)//按键处理
  42. {
  43.         if(S1_flag==0){TR0=0;}
  44.   else if(S1_flag==1){TR0=1;S1_flag++;distance=0;}
  45. }
  46. void nokia5110_defaultshow(void)//显示屏固定显示
  47. {
  48.         LCD_write_hanzi(0,0,0);
  49.         LCD_write_hanzi(2,0,1);
  50.         LCD_write_char(4,0,':');
  51.         LCD_write_shu(7,0,10);
  52.         LCD_write_char(10,0,'K');
  53.         LCD_write_char(12,0,'M');
  54.         
  55.         LCD_write_hanzi(0,2,2);
  56.         LCD_write_hanzi(2,2,3);
  57.         LCD_write_char(4,2,':');
  58.         LCD_write_shu(8,2,10);
  59. );
  60. }
  61. void show_time(void)//显示时间及计价器运行状态
  62. {
  63.   LCD_write_shu(0,4,TIME[2]/16);
  64.         LCD_write_shu(1,4,TIME[2]%16);
  65.         LCD_write_char(2,4,':');
  66.         LCD_write_shu(3,4,TIME[1]/16);
  67.         LCD_write_shu(4,4,TIME[1]%16);
  68.         LCD_write_char(5,4,':');
  69.         LCD_write_shu(6,4,TIME[0]/16);
  70.         LCD_write_shu(7,4,TIME[0]%16);
  71.         if(S1_flag==0)
  72.         {
  73.         LCD_write_char(10,4,'O');
  74.                 LCD_write_char(11,4,'F');
  75.                 LCD_write_char(12,4,'F');
  76.         }else
  77.         {
  78.     LCD_write_char(10,4,'O');
  79.                 LCD_write_char(11,4,'N');
  80.                 LCD_write_char(12,4,' ');
  81.   }
  82. }
  83. void main()
  84. {
  85.         LCD_init();
  86.         //Ds1302Init();
  87.         LCD_clear();
  88.         Timer0_Init();
  89.   Int_Init();
  90. //        
  91.         nokia5110_defaultshow();
  92.         while(1)
  93.         {
  94.                 LCD_write_shu(5,0,distance/1000%10);//显示距离
  95.                 LCD_write_shu(6,0,distance/100%10);
  96.            LCD_write_shu(8,0,distance/10%10);
  97.                  LCD_write_shu(9,0,distance%10);
  98.                
  99.                 LCD_write_shu(5,2,price/1000%10);//显示价格
  100.                 LCD_write_shu(6,2,price/100%10);
  101.                 LCD_write_shu(7,2,price/10%10);
  102.                 LCD_write_shu(9,2,price%10);
  103.                 Key_Handler();//按键处理
  104.                 Price_caculate();//价格计算
  105.                 Ds1302ReadTime();//读取ds1302时间 存放在数组TIME[];
  106.                 show_time();//显示时间及计价器状态
  107.   }
  108. }
  109. void Timer0(void) interrupt 1//里程中断 计数器模式
  110. {
  111.    TH0=(65536-10)/256;
  112.          TL0=(65536-10)%256;
  113.          distance++;
  114.          
  115. }
  116. void Int0() interrupt 0//按键中断
  117. {
  118. ……………………

  119. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
出租车计价器.rar (127.09 KB, 下载次数: 138)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:258375 发表于 2017-12-7 00:12 | 只看该作者
proteus8.6链接:https://pan.baidu.com/s/1dF6g9JN 密码:xxuf
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表