找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1975|回复: 0
收起左侧

做了一个单片机出租车计费系统的Proteus仿真程序

[复制链接]
ID:474723 发表于 2021-5-8 20:38 | 显示全部楼层 |阅读模式
抄了“基于proteus和校企对接的单片机实验与综合设计实例”上的“出租车计费系统”的程序,想要的下。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png

单片机源程序如下:
  1. #include        <reg51.h>
  2. #define uchar unsigned char
  3. #define  uint unsigned int
  4. sbit        RESET                =        P3^7;
  5. int                Price                =        80,        Mileage                =        0;
  6. uchar        count                =        0;
  7. uchar code tab_d[10]                =        {0x3F,        0X06,        0X5B,        0X4F,        0X66,        0X6D,        0X7D,        0X07,        0X7F,        0X6F};
  8. uchar code tab_wei[8]                ={0x7f,        0xbf,        0xdf,        0xef,        0xf7,        0xfb,        0xfd,        0xfe};

  9. //延时函数ms
  10. void        delay(uint t)
  11. {
  12.         uchar                i                =        0;
  13.         while(t--)
  14.                 for        (i;        i<120;        i++);
  15. }

  16. //数码管显示函数
  17. /*
  18.   参数说明:
  19.    d : 表示要显示的值
  20.          x : 表示是否要显示点(0x80 显示 0不显
  21.    w :显示第几位
  22. */
  23. void        disp(uchar d,        uchar x,        uchar w)
  24. {
  25.         P2                =        0XFF;
  26.         P2                =        tab_wei[w];
  27.         P0                =        0;
  28.         P0                =        tab_d[d]        | x;
  29.         delay        (100);
  30. }

  31. //刷新函数
  32. void        refresh()
  33. {
  34.         disp(Mileage%10,        0,        0);//公里
  35.         disp(Mileage/10%10,        0x80,        1);        
  36.         if        (Mileage >= 100)               
  37.                         disp(Mileage/100%10,        0,        2);               
  38.         if        (Mileage >= 1000)               
  39.                         disp(Mileage/1000%10,        0,        3);        
  40.         disp(Price%10,        0,        4);
  41.         disp(Price/10%10,        0x80,        5);        
  42.         if        (Price        >= 100)
  43.                 disp(Price/100%10,        0,        6);
  44.         if        (Price        >=        1000)
  45.                 disp(Price/1000%10,        0,        7);
  46. }
  47. void timer1        ()        interrupt 1
  48. {
  49.         count++;
  50.         Mileage +=        1;
  51.         if(        count        ==        5)
  52.         {
  53.                 count        =        0;
  54.                 if        (Mileage        >        30)
  55.                                 Price +=10;
  56.                 }
  57. }

  58. //系统初始化
  59. void init()
  60. {
  61.         P0                        =        0;
  62.         P2                        =        0XFF;
  63.         TMOD                =        0X0E;   //设置计数器模式
  64.         IT0                        =        1;                  //电平触发        
  65.         TH0                        =        255;                //1个脉冲延时
  66.         TL0                        =        255;
  67.         TR0                        =        1;
  68.         IE                        =        0X82;
  69. }

  70. void        judgeReset()
  71. {
  72.         if(RESET        ==        0)
  73.         {
  74.                 Price                =        80;
  75.                 Mileage        =        0;
  76.         }
  77. }
  78. void        main()
  79. {
  80.                 init        ();                //系统初始化
  81.                 while        (1)
  82.                 {
  83.                         judgeReset        ();
  84.                         refresh                        ();
  85.                         }                        
  86. }
复制代码
51hei.png

所有资料51hei提供下载:
出租车计费系统.rar (40.57 KB, 下载次数: 41)

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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