为什么原先程序是跑起来的,加上显示模块不运行了呢?

2019-07-15 23:09发布

#include<reg51.h>
#include<intrins.h>                        
#define uchar unsigned char       
#define uint unsigned int
uint a,b;
uint c=0;
uint d=0;
uint zh;
uchar num;
uchar code table1[]="Speed(n/min):";
sbit PWM=P0^0;
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
sbit RS=P0^1;            //RW直接接地
sbit EN=P0^2;                                           //LCD1602控制
                void de(uchar z)                                  //延时
                {
                 uchar x,y;
                 for(x=z;x>0;x--)
                 for(y=110;y>0;y--);
               
                }

         void cutiao()                                        //粗调
          {               
          
                    if(a==c)
                  {       
                  PWM=0;
                        }
                if(b==10)
                 PWM=1;
           }


        void PWM_init()                        //PWM初始
        {
          TMOD=0x01;
                   EA=1;
                   ET0=1;
                   TR0=1;
        }
/**************************lcd1602显示******************************/  
  void write_com(uchar com)                             //写指令到1602
{
   RS=0;
   EN=0;
   P2=com;
   de(1);
   EN=1;
   de(1);
   EN=0;
}
void write_date(uchar date)                          //写数据到1602
{
   RS=1;
   EN=0;
   P2=date;
   de(1);
   EN=1;
   de(1);
   EN=0;
}

void LCD_init()                                      //初始化
{  
       
    EN=0;
    write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
        write_com(0x80);
}
/**********************LCD显示****************/
                void display()
         
                   {
                         write_com(0x80);
                         for(num=0;num<13;num++)
                         {
                                 write_date(table1[num]);
                                                 de(1);
                         }
                          write_com(0x80+0x40);
                          write_date(zh+0x30);
                          de(1);
                          }
                                                                                                                                                 
/****************************主函数**************************************/
        void main()
        {  
                 


                PWM_init();
                LCD_init();
                 
                while(1)
                {
                  
                  display();     !!!!!!!!!就是这里,加了显示就不运行了。但是去掉,程序就是运行的。为什么???求大神
                   if(b>10)                   //PWM范围
                   {a=0;b=0;}
               
/***************键盘控制*****************************/
                   if(key1==0)                                //键盘控制,加
                  {de(50);//消抖
                        if(key1==0)
                        {        c++;
                                 if(c==9)c=9;
                         }
                         while(!key1);
                         }
               
               
                        if(key2==0)                                //减
                         { de(50);
                          if(key2==0)
                          {
                                   c--;
                          }
                                while(!key2);
                           }                                

                       
                         if(key3==0)                   //停止
                           {
                                                 d++;
                                                   while(1)
                                                   {
                                                            PWM=0;
                                                                if(key4==0)                  
                                                                                    {
                                                                                                   d++;
                                                                                                   if(d>=2)
                                                                                           break;
                                                                                 }         
                                                        }
                                                }
                          

/*******************频道选择**********************/       
                        switch(c)
                        {
                          case 0:cutiao();zh=0;
                          case 1:cutiao();zh=1;
                          case 2:cutiao();zh=2;
                          case 3:cutiao();zh=3;
                          case 4:cutiao();zh=4;
                          case 5:cutiao();zh=5;
                          case 6:cutiao();zh=6;
                          case 7:cutiao();zh=7;
                          case 8:cutiao();zh=8;
                          case 9:cutiao();zh=9;
                        }
                          cutiao();  //粗调
                       
                       
                       
                               
                                                                                                           
                }
        }



void DS0() interrupt 1        //中断服务程序
        {
                          TH0=(65536-50)/256;
                   TL0=(65536-50)%256;
                        a++;
                        b++;
        }









QQ截图20130809134234.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。