标题: 传送带产品计数器的矩形键盘设值问题 附单片机程序 [打印本页]

作者: 1465633027    时间: 2020-6-22 16:50
标题: 传送带产品计数器的矩形键盘设值问题 附单片机程序
这个是传送带产品计数器,想要在下列代码上,再加设计一个矩形键盘设置预值的部分,我是新手,求大神指教


单片机源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit STAR_KEY =P3^6;
sbit STOP_KEY =P3^7;
sbit L0=P1^0;
sbit L1=P1^1;
sbit L2=P1^2;
sbit L3=P1^3;
sbit L4=P1^4;
sbit L5=P1^5;
sbit L6=P1^6;
sbit L7=P1^7;
sbit L8=P2^0;
sbit L9=P2^1;
sbit L10=P2^2;
sbit L11=P2^3;
sbit L12=P2^4;
sbit LED4=P2^5;
sbit LED3=P2^6;
sbit LED2=P2^7;
sbit LED1=P3^0;
sbit MOTOR=P3^5;
uchar n[2]={1,0};
uchar code
dispcode[]= {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xff};
void delayms(uint x)
{
  uchar y;
  while(x--)
{
   for (y=0;y<123;y++) {;}
  }
}
uchar Keynum()
{
   uchar KEY=0;
  STAR_KEY=1;STOP_KEY=1;
   if (STAR_KEY==0) {delayms (10);if(STAR_KEY==0)n[0]=0;n[1]=1;}
   if (STOP_KEY==0) {delayms (10);if(STOP_KEY==0)n[0]=1;n[1]=0;}
   return n[2];
}
void xianshi(uint o)
{
   P0=0xff;
   P0=dispcode[o/1000];LED4=1 ;LED3=0;LED2=0;LED1=0;delayms(5);
  P0=0xff;
   P0=dispcode[(o/100)%10];LED4=0;LED3=1;LED2=0;LED1=0;delayms(5);
  P0=0xff;
   P0=dispcode[(o/10)%10];LED4=0;LED3=0;LED2=1;LED1=0;delayms(5);
  P0=0xff;
   P0=dispcode [o%10];LED4=0;LED3=0;LED2=0;LED1=1;delayms(5);
}







}
void main(void)
{
  uint q;
  IT0=1;
  EA=1;
EX0=1;
  TMOD=0X05;
  TL0=0x00;
  TH0=0x00;
while(1)
{
    q=qiuzhi();
    if (MOTOR==1){xianshi(q);} else{xianshi(TL0);Keynum();TR0=n[1];}
    if (TL0==q){TR0=0;MOTOR=1;} else{Keynum();MOTOR=n[0];}
}
}
void Int0(void) interrupt 0
{TL0=0x00;TR0=1;}






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