📄 电动自行车.c
字号:
/****************************************
AT89S51电动自行车程序
作者:yuri
时间:2006.12.1-2006.12.22
QQ:285123356
E-mail:Yuri_su@163.com
-----------------------------------------
程序,分??分:
1-定义接口
2-调速中断0
3-显示子程序
4-主程序
****************************************/
#include<reg51.h>
#define uchar unsigned char //定义
#define uint unsigned int
sbit P17 = P1^7; //mover
//sbit P11 = P1^1;
//sbit P12 = P1^2;
//sbit P13 = P1^3;
sbit rin = P1^0; //ring
//sbit k1= P3^5; //按键
//sbit k2= P3^6;
uchar scale,tt,j;//用于保存占空比的输出0的时间份额,总共255份
//tt用来保存当前时间在一秒中的比例位置
//模拟PWM输出控制灯的255个亮度级别
void delay(uchar k)
{
while(k--);
}
void off()
{
P0=0x00;
P2=0x00;
}
void display() //动态扫描显示
{
uchar code duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,};///////-----共阳
uchar code zhi[6]={0x01,0x02,0x04,0x08,0x10,0x20};
uint c=0,d=0,e=0,f=0,sa=0,sb=0,t,q;
sa=scale%10;
q=scale/10;
sb=q%10;
q=q/10;
c=q%10; //个位分数
q=q/10;
d=q%10; //十位分数
q=q/10;
e=q%10; //个位时数
q=q/10;
f=q%10; //十位时数
t=25;//************ delay time
off();
P2=zhi[3]; //个位分数段显示
P0=duan[c]; //个位分数字显示
delay(t);//延时
off();
P2=zhi[2]; //十位分数段显示
P0=duan[d]; //十位分数字显示
delay(t);//延时
off();
P2=zhi[1]; //个位时数段显示
P0=duan[e]; //个位时数字显示
delay(t);
off();
P2=zhi[0]; //十位时数段显示
P0=duan[f]; //十位时数字显示
delay(t);
off();
P2=zhi[5]; //十位秒
P0=duan[sa];
delay(t);
off();
P2=zhi[4];
P0=duan[sb];
delay(t);
off();
}
void main() // 主程序
{
//uchar i;
PA=0;
P2=0xff;
//P3=0x00;
P0=0x00;
EA=1;
TMOD=0x02; //*T0定时器方式1*
ET0=1;
TR0=1;
TH0=0xf4; //赋T2的预置值,溢出1次是60uS钟
TL0=0xf4;
scale=1;
//TR1=1; //启动定时器
//ET1=1; //打开定时器2中断
//EA=1; //打开总中断
while(1) //程序循环
{ //主程序在这里就不断自循环,实际应用中,这里是做主要工作
//for(n=0;n<50000;n++)red=1; //每过一会儿就自动加一个档次的亮度
//red=0;
//scale=995;
//delay(2000);
if(k1==0)
scale++;
if(k2==0)
{
if(scale==1)scale=255;
scale--;
}
if(scale==255)scale=0;
display();
}
}
//1/1200秒定时器2中断
void timer0() interrupt 1 using 1
{
TF0=0;
tt++;
if(tt==255) //开始输出低电平
{
tt=1;
P17=1;
}
if(scale!=0){ //这里加这一句是为了消除灭灯状态产生的鬼影
P17=1;
}
if(scale>tt){ //按照当前占空比切换输出高电平
P17=0;
}
}
/*
void timer2() interrupt 2
{
dispaly();
} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -