标题: 简易单片机车辆里程表源程序+Proteus仿真 [打印本页]

作者: 158751hei0141    时间: 2020-4-12 17:32
标题: 简易单片机车辆里程表源程序+Proteus仿真


单片机源程序如下:
  1. #include <REG52.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint count_km;        //记录里程数
  5. uchar count0,count1,count2,count3;//用于分离里程数的各位数字  
  6. sbit P20=P2^0;
  7. sbit P21=P2^1;
  8. sbit P22=P2^2;
  9. sbit P23=P2^3;

  10. const uchar table0[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//显示码显示数字0~9

  11. void delay()
  12. {
  13.          uint i;
  14.          for(i=0;i<256;i++);
  15. }

  16. void timer0isr(void) interrupt 1 using 1
  17. {
  18.     count_km=count_km + 1500;
  19.         if(count_km>9999)
  20.         count_km=9999;
  21. }

  22. void main(void)
  23. {
  24.         TMOD = 0x06;  //设定T/C0工作在计数器,工作方式2               
  25.         TH0 = 0xFB;
  26.         TL0 = 0xFB;         //装载计数初值
  27.         EA = 1;                 //开总中断
  28.         ET0 = 1;         //开T/C0中断
  29.         TR0 = 1;         //启动T/C0

  30.         while(1)
  31.         {
  32.                   count0=count_km%10;
  33.                   count1=count_km/10%10;
  34.                   count2=count_km/100%10;
  35.                   count3=count_km/1000%10;
  36.                   P1=table0[count0];
  37.                   P23=1;delay();P23=0;
  38.                   P1=table0[count1];
  39.                   P22=1;delay();P22=0;
  40.                   P1=table0[count2];
  41.                   P21=1;delay();P21=0;
  42.                   P1=table0[count3];
  43.                   P20=1;delay();P20=0;               
  44.         }
  45. }
复制代码

所有资料51hei提供下载:
简易车辆里程表.rar (60.91 KB, 下载次数: 91)


作者: Unique。    时间: 2020-10-22 19:47
6位数码管的怎么改啊?
作者: 风星子    时间: 2020-10-28 20:32
Unique。 发表于 2020-10-22 19:47
6位数码管的怎么改啊?

单片机的P2口再加两个数码管。程序开头添加对应的位声明,主程序中的while循环中添加两位数码管的数值计算表达式,并且添加两条显示程序就好了。
作者: wsxg121314    时间: 2020-11-4 21:13
请问用脉冲控制的,咋改





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1