自行车测速系统 基于单片机c
自行车测速 c.docx
(11.66 KB, 下载次数: 10)
- #include <AT89X51.H>
- #define uchar unsigned char
- #define uint unsigned int
-
- uchar code seg7code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- uint sec,miaoshu,tcnt,count;
-
- sbit p00=P0^0; //各个口定义
- sbit p01=P0^1;
- sbit p02=P0^2;
- sbit p03=P0^3;
- sbit p04=P0^4;
- sbit p05=P0^5;
-
- void Delay(uchar t)
- {
- uchar i;
- while(t--)
- {
- for ( i = 0; i < 200 ;i ++);
- }
- }
-
-
-
- void t0(void) interrupt 1 using 0 //定时T0中断服务函数
- {
- tcnt++; //每过250ust tcnt 加一
- if(tcnt==40) //计满40 次(1/100 秒)时
- {
- tcnt=0; //重新再计
- sec++;
- if(sec==100) //定时1 秒,在从零开始计时
- {
- sec=0;
- TH0=0x06; //对TH0 TL0 赋值
- TL0=0x06;
- miaoshu=count;
- count=0;
- }
- }
- }
-
- void t1(void) interrupt 3 using 0 //计数T1中断服务函数
- {
- count=count+1;
- TF0=1;
- TH1=255;
- TL1=255;
- TR1=1;
- EA=1;
- }
-
- void LED()
- {
- if (miaoshu>=100)
- {
- p04=0;P1=0x00;
- }
- else
- {
- p04=1;P1=0xFF;
- }
-
- P2=seg7code[miaoshu/1000];
- p00=1;
- Delay(5);
- p00=0;
-
- P2=seg7code[miaoshu/100%10];
- p01=1;
- Delay(5);
- p01=0;
-
- P2=seg7code[(miaoshu%100)/10];
- p02=1;
- Delay(5);
- p02=0;
-
- P2=seg7code[miaoshu%10];
- p03=1;
- Delay(5);
- p03=0;
- }
-
- void main(void)//主程序
- {
- TMOD=0x62; //定时器T0工作在方式2 自动重装方式,计数器T1工作在方式2 自动重装方式
- TH0=0x06; //对TH0 TL0 赋值
- TL0=0x06;
- TR0=1; //开始定时
- ET0=1; //允许T0 产生中断
- EA=1;
- TH1=255;
- TL1=255;
- TR1=1;
- ET1=1;
-
- EA=1;
- sec=0;
- miaoshu=0;tcnt=0;count=0;
- while(1)//调用各个函数模块,死循环
- {
- LED();
- }
- }
-
复制代码
|