|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<reg51.h>//我只能实现个位和十位的
#include<seg.h>//下面有seg包含内容
sbit K1=P3^2;
sbit K2=P3^3;
sbit K3=P3^4;
sbit K4=P3^5;
sbit beep=P2^5;
void main()
{
int number=0;
while(1)
{
displayInt(number);
if(!K1)
{
delay_ms(5);
if(!K4&&!K1)number+=10;
else number++;
while(!K1)
displayNzero(number);
delay_ms(5);
}
if(!K2)
{
delay_ms(5);
if(!K4&&!K2)number-=10;
else number--;
while(!K2)
displayNzero(number);
delay_ms(5);
}
if(!K3)number=0;
}
}
// k3+k4=+100,k3+k2=-100,k3+k1=+1000,k2+k1=-1000
//seg
#ifndef __SEG_H__
#define __SEG_H__
///////////////////////
#include <reg51.h>
unsigned char code seg_coma[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
unsigned char code wei[]={0xfe,0xfd,0xfb,0xf7};//λѡÂë
// oáÃ뼶Ñóê±oˉêy
void delay_ms(unsigned int time)
{
int i,j;
for(i=0;i<=time;i++)
for(j=0;j<=825;j++);
}
// ΢Ã뼶Ñóê±oˉêy
void delay_us(unsigned int time)
{
int i,j;
for(i=0;i<=time;i++)
for(j=0;j<=8;j++);
}
//êyÂë1ü2aêÔoˉêy£¬ËùóDμĶÎμãááéá˸èy′Î
void SEGTest()
{
int i;
for(i=0;i<3;i++)
{
P0=0;
P2=0XF0;
delay_ms(500);
P2=0XFF;
delay_ms(500);
}
}
/*************ÏÔê¾Õûêy£¬¸ßλ210********************/
void displayInt(int D)
{
int n;
for(n=3;n>=0;n--)
{
P0=seg_coma[D%10];
P2=wei[n];
delay_us(2);
P2=0xff;
delay_us(2);
D/=10;
}
}
/*************ÏÔê¾Õûêy£¬¸ßλÃe0********************/
void displayNzero(int D)
{
int n;
for(n=3;n>=0;n--)
{
P0=seg_coma[D%10];
P2=wei[n];
delay_us(2);
P2=0xff;
delay_us(2);
D/=10;
if(D==0) break;
}
}
/******D¡êyÏÔê¾£¬ËÄλóDD§êy×Ö************/
void displayFloat(float Data)
{
int temp,temp_Z;
float temp1;
if(Data<10.0)
{
temp1=Data;
temp_Z=Data;
temp1*=1000;//1.234*1000=1234
temp=temp1;
displayInt(temp);
P0=seg_coma[temp_Z]-0X80;
P2=wei[0];
delay_us(2);
P2=0XFF;
delay_us(2);
}
if(Data>=10.0&&Data<100.0)
{
temp1=Data;
temp_Z=Data;
temp1*=100;//12.34*100=1234
temp=temp1;
displayInt(temp);
P0=seg_coma[temp_Z%10]-0X80;
P2=wei[1];
delay_us(2);
P2=0XFF;
delay_us(2);
}
if(Data>=100.0&&Data<1000.0)
{
temp1=Data;
temp_Z=Data;
temp1*=10;//123.4*10=1234
temp=temp1;
displayInt(temp);
P0=seg_coma[temp_Z%10]-0X80;
P2=wei[2];
delay_us(2);
P2=0XFF;
delay_us(2);
}
if(Data>=1000.0)
{
temp=Data;
displayInt(temp);
}//*/
}
/////////Ôú4λêyÂë1üéÏÏÔê¾ËÄλêy×ÖμÄ×Ö·û′®£¬èç¡°1234¡±»òÕß¡°12.34¡±/////////////
void displayString(unsigned char *string)
{
int i,flag;
int j=3;
for(i=0;i<5;i++) //"1.234"
{
if(string[i]=='.') {flag=1;break;}
else flag=0;
}
if(flag==0)
{
for(i=0;i<4;i++)
{
P0=seg_coma[string[i]-0x30]; //Ëí¶ÎÂë
P2=wei[i];
delay_us(2);
P2=0xFF;
delay_us(2);
}
}
else
{
for(i=4;i>=0;i--) //"1.234"
{
if(string[i]=='.')
{i--;P0=seg_coma[string[i]-0x30]-0x80;}
else P0=seg_coma[string[i]-0x30];
P2=wei[j];
j--;
delay_us(2);
P2=0xFF;
delay_us(2);
}
}
}
#endif |
|