求高手帮忙解答

2019-07-18 15:47发布

我们要求做一个仿真,要求是: MCS-51系列单片机作为控制器;采用2LED进行计数显示(00~99);采用光电传感器计数(仿真用按键代替);  用按键控制传送带电机的起停; 用拨码盘预置计数值,计数到预定值时,传送带停止,按键后传送带继续运行。有紧急按钮停止运行。这是我写的程序,没有错误,但仿真时LED数码管不显示,求大神指导下
#include<reg52.h>
#include"delayms.h"
#define uchar unsigned char
#define unit unsigned int
sbit LED1=P2^0;//十位
sbit LED2=P2^1;//个位
sbit motor=P3^0;
sbit KEY=P3^2;
sbit L0=P1^0;  //定义SFR中引脚的位
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;
uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uint shuzhi()//拨码盘数值函数
{
  uchar a;   
  uchar b;   
  uchar c;   
  uchar d;   
  uchar e;   
  uchar f;   
  uchar g;   
  uchar h;
  uint p=0;
   if (L0==1) {a=1;} else {a=0;} //将电平信号变为数字的值     
   if (L1==1) {b=1;} else {b=0;}   
   if (L2==1) {c=1;} else {c=0;}   
   if (L3==1) {d=1;} else {d=0;}   
   if (L4==1) {e=1;} else {e=0;}   
   if (L5==1) {f=1;} else {f=0;}   
   if (L6==1) {g=1;} else {g=0;}   
   if (L7==1) {h=1;} else {h=0;}
   p=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+g*2*2*2*2*2*2+g*2*2*2*2*2*2*2+h*2*2*2*2*2*2*2*2;
   return p;
}


uchar KeyScanNUM(void)
{
  uchar key=1;  //无键按下key=1
  KEY=1;
  if (KEY==0 )  
  {
      delayms(10);
          if (KEY==0) key=0;   
          else key=1;
   }
  
  return key;
}
void main(void)
{
    uint i;   
        IT0=1;       //负跳变触发   
        EA=1;         //开总允许中断   
        EX0=1;       //开INTO中断
    TMOD=0x05;
        TL0=0x00;
    TH0=0;
        TR0=1;
        while(1)
        {
          i=shuzhi();       //拨码盘数值
          P0=0xff;
      P0=dispcode[TL0/10];LED1=1;LED2=0;delayms(10);
      P0=0xff;
      P0=dispcode[TL0%10];LED1=0;LED2=1;delayms(10);
          KeyScanNUM();
          TR0=1;
       
          if (TL0==i)
          {TR0=0;motor=1;}                  //当计数值与所置数相同时关闭电机,停止计数,当计数值不等时则将电机启动与关闭交由按键控制
          else
          {KeyScanNUM();motor=0;}
                  
        }
}
void Int0(void) interrupt 0  //中断服务程序,工作寄存器用0组  
{     
   TL0=0x00;TR0=1;       //重置计数值,重新开始计数  
}

这是仿真运行的图 这是仿真运行的图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。