鱼C论坛

 找回密码
 立即注册
查看: 694|回复: 3

组合按键:四个按键实现个十百千每个位逐一增加减少,还要能清零

[复制链接]
发表于 2022-11-6 20:21:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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};//&#206;&#187;&#209;&#161;&#194;&#235;
// oá&#195;&#235;&#188;&#182;&#209;óê±oˉêy
void delay_ms(unsigned int time)
{
int i,j;
for(i=0;i<=time;i++)
for(j=0;j<=825;j++);
}
// &#206;¢&#195;&#235;&#188;&#182;&#209;óê±oˉêy
void delay_us(unsigned int time)
{
int i,j;
for(i=0;i<=time;i++)
for(j=0;j<=8;j++);
}
//êy&#194;&#235;1ü2aê&#212;oˉêy£&#172;&#203;ùóDμ&#196;&#182;&#206;μ&#227;ááéá&#203;&#184;èy′&#206;
void SEGTest()
{
int i;
for(i=0;i<3;i++)
{
P0=0;
P2=0XF0;
delay_ms(500);
P2=0XFF;
delay_ms(500);
}
}
/*************&#207;&#212;ê&#190;&#213;&#251;êy£&#172;&#184;&#223;&#206;&#187;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;
}
}
/*************&#207;&#212;ê&#190;&#213;&#251;êy£&#172;&#184;&#223;&#206;&#187;&#195;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&#161;êy&#207;&#212;ê&#190;£&#172;&#203;&#196;&#206;&#187;óDD§êy×&#214;************/
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);
  }//*/
}
/////////&#212;ú4&#206;&#187;êy&#194;&#235;1üé&#207;&#207;&#212;ê&#190;&#203;&#196;&#206;&#187;êy×&#214;μ&#196;×&#214;·&#251;′&#174;£&#172;è&#231;&#161;°1234&#161;±&#187;ò&#213;&#223;&#161;°12.34&#161;±/////////////
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]; //&#203;í&#182;&#206;&#194;&#235;
                 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-7 10:26:14 | 显示全部楼层
#include <reg51.h>
#include <seg.h>
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)
        {       
   displayNzero(number);
         if(!K1)
         {
                delay_ms(5);
                 if(!K1&&!K4)number+=10;
           else number++;
          while(!K1)
                        displayNzero(number);
                delay_ms(5);
         }
         if(!K2)
         {
                 delay_ms(5);
                 if(!K2&&!K4)number+=100;
           else number--;
                 while(!K2)
                         displayNzero(number);
                 delay_ms(5);
         }
   if(!K3)
         {
                delay_ms(5);
                 if(!K3&&!K4)number+=1000;
           else number=0;
                while(!K3)
                        displayNzero(number);
                delay_ms(5);
         }
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-7 17:17:07 | 显示全部楼层
兄弟,代码不是这样写的。奉劝你放弃STC吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-10 10:25:38 | 显示全部楼层
cmjx 发表于 2022-11-7 17:17
兄弟,代码不是这样写的。奉劝你放弃STC吧。

那你说说?我不会才问的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 14:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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