找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2492|回复: 10
打印 上一主题 下一主题
收起左侧

一个51单片机直流电子负载程序出现了问题,求助,急急急。

[复制链接]
跳转到指定楼层
楼主
ID:197405 发表于 2017-5-6 17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有哪位好心人能帮我看看这电子负载的程序是怎么回事,不胜感激。下面是编译显示的错误

Build target 'Target 1'
compiling electrical load.c...
electrical load.c(4): warning C318: can't open file 'tlc5614.h'
electrical load.c(5): warning C318: can't open file 'keys.h'
electrical load.c(6): warning C318: can't open file 'max1223.h'
electrical load.c(7): warning C318: can't open file 'nokia.h'
electrical load.c(8): warning C318: can't open file 'main.h'
ELECTRICAL LOAD.C(9): error C129: missing ';' before 'delay'
electrical load.c(26): warning C318: can't open file 'main.h'
electrical load.c(447): warning C318: can't open file 'keys.h'
electrical load.c(506): warning C318: can't open file 'tlc5614.h'
electrical load.c(507): warning C318: can't open file 'spi.h'
electrical load.c(519): warning C318: can't open file 'spi.h'
electrical load.c(520): warning C318: can't open file 'comm.h'
electrical load.c(544): warning C318: can't open file 'tlc1549.h'
electrical load.c(548): warning C318: can't open file 'comm.h'
electrical load.c(550): warning C318: can't open file 'nokia.h'
electrical load.c(654): warning C318: can't open file 'nokia.h'
electrical load.c(655): warning C318: can't open file 'comm.h'
electrical load.c(804): warning C318: can't open file 'comm.h'
Target not created



这是完整程序

****************************************
*//zhuchengxu//*
*****************************************
#include "tlc5614.h"
#include "keys.h"
#include "max1223.h"
#include "nokia.h"
#include "main.h"
uchar delay(uchar x);       
void main()
{
         int rst=0;                                                                                                 //液晶初始化
         delay(1);
         rst=1;
         init();
         clear();
         writehanzi(0,0,0);                                    
         writehanzi(2,0,2);
         writehanzi(4,0,3);
         writehanzi(6,0,4);                                   
         keychu();
}
****************************************
*键盘处理子程序 *
*****************************************
#include "main.h"
void keychu()
{
  uint value,value1;                                        //DA输出变量值
        float x=0,out=0,dianl=0;
        uchar readkey,flag=0,readkey1,readkey2,readkey3,readkey4,readkey5,zan,readkey6;                  //存储键值变量
         bit  flag2=0,flag1=0,flag0=0;                                            //小数点及切换标志位
         while( 1 )
     {      
                if(flag==0)                                                 // 第一位扫描
                {
                  readkey=keyscan();
                  zan=readkey;
          if(readkey==12)
              {
                 if(readkey!=NOKEY&&readkey!=10&&readkey!=11&&readkey!=15&&readkey!=14)
                  {       
                    flag=1;                                     //输入第二位
                    writeshuzi(0,2,readkey);               //显示第一位                                    
                  }
                        else                                                 //无按键显示0
                        {
                          flag=0;
                          writeshuzi(0,2,0);
                        }
                  }                  
                }
        }
                if(flag==1)                                                 //第二位扫描
                {
                  readkey1=keyscan();
                  if(readkey1!=15)                                 //未确认扫描
                  {
                  if(readkey1!=11)                                   //清除键
                  {
                  if(readkey1!=zan)                         //防止连输入
              {         zan=readkey1;
                     if(zan==10)                          //检测是否小数点,是则置第二位标志位,否则显示输入值
                         {
                         flag1=1;
                         flag2=1;
                         }
                     if(readkey1!=NOKEY&&readkey1!=14)         //有键值且非模式切换键,则显示数值
                     {
                       flag=2;                                                        //第三位输入
                           writeshuzi(1,2,readkey1);
                     }                         
                  }}
                  else                                                                        //清除键清零,重新输入
                  {
                     flag=0;
                         flag1=0;                                                    //清除小数点标志
                         writeshuzi(0,2,0);                          
                  }
                }
                else                                                                        //确认输入
                {                                                                        //赋值输出
                   x=readkey;                                                        //锁定按键
                   flag=6;
                   flag3=1;                                                        //显示测得电压电流
                   writehanzi(0,0,5);                                        //显示测得电压电流
                   writehanzi(2,0,2);
                   writehanzi(0,2,5);
                   writehanzi(2,2,1);
                   writehanzi(0,4,6);
                   writehanzi(2,4,7);
                   out=x*0.25;
               value=1024*out/4.0;                                               
               dianl=x/11.0;
               value1=1024*dianl/4.0;                                                 //恒流基准电压输出
               tlc5615(value1);
                      adzh();                                                                //电压显示
                   adzh_1();
                   power();                                                   //电流、功率显示
                }}                                                                          
                if(flag==2)                                                           //扫描第三位
                {
                  readkey2=keyscan();                                  
                  if(readkey2!=15)                                           //未确认
                  {
                  if(readkey2!=11)                                       //未清零
                  {
                  if(flag1)                                        //第二位有小数点,则不允许再输入小数点
                  {                                                                            
                  if(readkey2!=zan&&readkey2!=10)
              {         zan=readkey2;
                     if(readkey2!=NOKEY&&readkey2!=14) //非小数点,非切换,显示数值
                     {                                                                         
                       flag=3;                                                                //第四位输入
                           writeshuzi(2,2,readkey2);
                     }
                  }
                  else                                                                           //小数点无效
                  {
                     flag=2;                         
                  }}
                  else
                  {
                     if(readkey2!=zan)                                 
                 {         zan=readkey2;
                             if(zan==10) flag1=1;                          //第二位无小数点,第三位输入小数点,置第三位小数标志位
                         if(readkey2!=NOKEY&&readkey2!=14)                  
                         {  
                            flag=3;
                                writeshuzi(2,2,readkey2);
                         }
                     }                         
                  }}
                  else
                  {
                     flag=0;
                         flag1=0;
                         flag2=0;
                         writeshuzi(0,2,0);
                         writeshuzi(1,2,11);
                  }
                }
                else
                {
                   if(flag1&&flag2)                           //第二位小数
                   {
                     x=readkey;                          
                          flag=6;
                          flag3=1;
                          writehanzi(0,0,5);                                        //显示测得电压电流
                      writehanzi(2,0,2);
                      writehanzi(0,2,5);
                      writehanzi(2,2,1);
                          writehanzi(0,4,6);
                      writehanzi(2,4,7);
                          out=x*0.25;
                  value=1024*out/4.0;                                               
                  dianl=x/11.0;
                  value1=1024*dianl/4.0;                                         //恒流基准电压输出
                  tlc5615(value1);
                  tlc5615_1(value);
                          adzh();                                                                //电压显示
                      adzh_1();                                                   //电流显示
                          power();
                   }                                                                  //无小数  输出
                   else
                   {
                      x=readkey*10+readkey1;
                          flag=6;
                          flag3=1;
                          writehanzi(0,0,5);                                        //显示测得电压电流
                      writehanzi(2,0,2);
                      writehanzi(0,2,5);
                      writehanzi(2,2,1);
                      writehanzi(0,4,6);
                      writehanzi(2,4,7);
                           out=x*0.25;
                  value=1024*out/4.0;                                       
                  dianl=x/11.0;                      //恒流基准电压输出
                  tlc5615(value1);            
                           adzh();                                                                //电压显示
                       adzh_1();                                                   //电流显示
                           power();
                   }
                }}
                if(flag==3)                                                    // 扫描第四位
                {
                  readkey3=keyscan();
                  if(readkey3!=15)                                    //未确认
                  {
                  if(readkey3!=11)                                     //未清零
                  {
                  if(flag1)                                         //前两位有小数输入        ,不允许输入小数
                  {
                     if(readkey3!=zan&&readkey3!=10)
                 {         zan=readkey3;
                         if(readkey3!=NOKEY&&readkey3!=14)            //无切换         
                         {
                           flag=4;                                                           //第五位输入
                               writeshuzi(3,2,readkey3);
                         }
                     }
                    else
                    {
                       flag=3;                         
                    }}
                  else                                                                                  //无小数,则正常输出
                  {
                     if(readkey3!=zan)
                 {         zan=readkey3;                             
                         if(readkey3!=NOKEY&&readkey3!=14)                  
                         {
                           flag=4;
                               writeshuzi(3,2,readkey3);
                         }
                     }
                  }
                  }
                  else                                                                                //清零,重新输入
                  {
                     flag=0;
                         flag1=0;
                         flag2=0;
                         writeshuzi(0,2,0);
                         writeshuzi(1,2,11);
                         writeshuzi(2,2,11);
                  }
                }                                                                                   //确认输入
                else
                {                                                                                   //第二位小数输入是赋值
                   if(flag2)
                   {
                      x=readkey+readkey2*0.1;
                          flag=6;
                          flag3=1;
                          writehanzi(0,0,5);                                        //显示测得电压电流
                     writehanzi(2,0,2);
                     writehanzi(0,2,5);
                     writehanzi(2,2,1);
                     writehanzi(0,4,6);
                     writehanzi(2,4,7);
                          out=x*0.25;
        value=1024*out/4.0;                                                                  dianl=x/11.0;
                 tlc5615(value1);                                         //恒流基准电压输出
                          adzh();                                                                //电压显示
                     adzh_1();                                                   //电流显示
                          power();                            
                   }
                   else                                                                   
                   {
                      if(flag1!=1)                                //不是小数,三位数无效,重新输入
                          {
                             flag=0;
                                 writeshuzi(0,2,0);
                             writeshuzi(1,2,11);
                             writeshuzi(2,2,11);
                          }
                          else                                                 //第三位输入小数点,则按下面公式赋值
                          {
                             x=readkey*10+readkey1;
                             flag=6;
                                 flag3=1;
                                 writehanzi(0,0,5);                                        //显示测得电压电流
                         writehanzi(2,0,2);
                         writehanzi(0,2,5);
                         writehanzi(2,2,1);
                         writehanzi(0,4,6);
                         writehanzi(2,4,7);
                                 out=x*0.25;
                     value=1024*out/4.0;                                               
                     dianl=x/11.0;
                     value1=1024*dianl/4.0;                         //恒流基准电压输出
                     tlc5615(value1);
                                 adzh();                                                                //电压显示
                         adzh_1();                                                   //电流显示         
                                 power();                  
                          }                          
                   }                  
                  }}
                if(flag==4)                                                                       //扫描第五位数
                {
                  readkey4=keyscan();
                  if(readkey4!=15)                                                       //未确认
                  {
                  if(readkey4!=11)                                                        //未清零
                  {
                  if(readkey4!=zan&&readkey4!=10&&flag2!=1)        //输入小数点无效
              {         zan=NOKEY;
                     if(readkey4!=NOKEY&&readkey4!=14)                  
                     {
                           flag=5;                                                                  //第六位输入
                       writeshuzi(4,2,readkey4);
                     }
                  }
                 }
                  else                                                                                 //清零,重新输入
                  {
                     flag=0;
                         flag1=0;
                         flag2=0;
                         writeshuzi(0,2,0);
                         writeshuzi(1,2,11);
                         writeshuzi(2,2,11);
                         writeshuzi(3,2,11);
                         writeshuzi(4,2,11);
                  }
                }
                else                                                                                  //输入确认
                {
                   if(flag2)                                                         //第二位小数输入,则精确到0.01
                   {
                      x=readkey+readkey2*0.1+readkey3*0.01;
                          flag=6;
                          flag3=1;
                          writehanzi(0,0,5);                                        //显示测得电压电流
                      writehanzi(2,0,2);
                      writehanzi(0,2,5);
                      writehanzi(2,2,1);
                      writehanzi(0,4,6);
                      writehanzi(2,4,7);
                          out=x*0.25;
                  value=1024*out/4.0;                                                 
                  dianl=x/11.0;
                  value1=1024*dianl/4.0;                                        //恒流基准电压输出
                  tlc5615(value1);
                  adzh();                                                                //电压显示
                      adzh_1();                                                   //电流显示
                          power();
                   }
                   else
                   {
                      if(flag1)                                                                  //第三位输入小数
                      {
                         x=readkey*10+readkey2+readkey3*0.1;
                                 flag=6;
                                 flag3=1;
                                  writehanzi(0,0,5);                                              //显示测得电压电流
                         writehanzi(2,0,2);
                         writehanzi(0,2,5);
                         writehanzi(2,2,1);
                         writehanzi(0,4,6);
                         writehanzi(2,4,7);
                                  out=x*0.25;
         value=1024*out/4.0;                                                                     dianl=x/11.0;
                     value1=1024*dianl/4.0;                                 //恒流基准电压输出
                     tlc5615(value1);
                     tlc5615_1(value);
                                 adzh();                                                                     //电压显示
                         adzh_1();                                                         //电流显示
                                 power();
                      }
                          else
                          {                                                                                     //非小数无效,重新输入
                             flag=0;
                                 flag1=0;
                                 flag2=0;
                             writeshuzi(0,2,0);
                             writeshuzi(1,2,11);
                             writeshuzi(2,2,11);
                             writeshuzi(3,2,11);
                             writeshuzi(4,2,11);
                          }
                   }
                }}
                if(flag==5)                                                                        //扫描第六位输入
                {
                  readkey5=keyscan();
                  if(readkey5!=15)                                                            //未确认
                  {
                  if(readkey5==11)                                                         //清零,重新输入
                  {
                     flag=0;
                         flag1=0;
                         flag2=0;
                         writeshuzi(0,2,0);
                         writeshuzi(1,2,11);
                         writeshuzi(2,2,11);
                         writeshuzi(3,2,11);
                         writeshuzi(4,2,11);
                  }}
                  else                                                                           //确认输入
                  {
                     if(flag1&&flag2!=1)                                     //第三位小数输入
                         {
                            x=readkey*10+readkey2+readkey3*0.1+readkey4*0.01;
                                flag=6;
                                flag3=1;
                                writehanzi(0,0,5);                                         //显示测得电压电流
                        writehanzi(2,0,2);
                        writehanzi(0,2,5);
                        writehanzi(2,2,1);
                        writehanzi(0,4,6);
                        writehanzi(2,4,7);
                                 out=x*0.25;
                    value=1024*out/4.0;                                               
                    dianl=x/11.0;
                   tlc5615(value1);                    //恒流基准电压输出
                                 adzh();                                                                //电压显示
                        adzh_1();                                                   //电流显示
                                 power();
                         }
                         else                                                                   //非小数输入无效,重新输入
                         {
                            flag=0;
                                flag1=0;
                                writeshuzi(0,2,0);
                            writeshuzi(1,2,11);
                            writeshuzi(2,2,11);
                            writeshuzi(3,2,11);
                            writeshuzi(4,2,11);
                         }
                  }
                }
           if(flag==6)                                                                   //确认输入后的处理
           {
              readkey6=keyscan();                                           //重新再次输入
                  if(readkey6==11)
                  {
                     flag=0;
                         flag1=0;
                         flag2=0;
                         flag3=0;
                         x=0;                                                                   // DA输出清零
                         writeshuzi(0,2,0);                                              //清零后显示
                         writeshuzi(1,2,11);
                         writeshuzi(2,2,11);
                         writeshuzi(3,2,11);
                         writeshuzi(4,2,11);
                         writeshuzi(0,4,11);          
            writeshuzi(1,4,11);
            writeshuzi(2,4,11);
            writeshuzi(3,4,11);
            writeshuzi(4,4,11);
                          writeshuzi(5,2,11);
                          writeshuzi(5,4,11);                           
                  }
           }
               adzh();                                                                //电压显示
                   adzh_1();                                                       //电流显示
                   power();
                                                                                                                                                                       
     }
}
****************************************
*扫描法判键子程序 *
****************************************
#include "keys.h"
uchar keycode()
{
   uchar scancode=0,keyvalue;
   delay(120);                                            //延时去抖
   scancode=P0;                                         //扫描法查键值                                 
   switch(scancode)     
{
     case 0x7e: keyvalue=3; break;                     
          case 0xbe: keyvalue=2; break;
          case 0xee: keyvalue=0; break;
          case 0xde: keyvalue=1; break;
          case 0x7d: keyvalue=7; break;
          case 0xbd: keyvalue=6; break;
          case 0xed: keyvalue=4; break;
          case 0xdd: keyvalue=5; break;
          case 0x7b: keyvalue=11; break;
          case 0xbb: keyvalue=10; break;
          case 0xeb: keyvalue=8;break;
          case 0xdb: keyvalue=9;break;
          case 0xd7: keyvalue=12;break;
          case 0xb7: keyvalue=14;break;
          case 0x77: keyvalue=15;break;
          default:   return NOKEY;                 
   }
   return keyvalue;
}
uchar keyscan()
{
   uchar keyval;
   P0=0xfe;               
   keyval=keycode();  
   if(keyval==NOKEY)
   {         
   P0=0xfd;
   keyval=keycode();
   if(keyval==NOKEY)
   {
     P0=0xfb;
     keyval=keycode();
         if(keyval==NOKEY)
          {
            P0=0xf7;
        keyval=keycode();
                if(keyval==NOKEY)
                {
                   return NOKEY;
                }
          }
    }
   }   
   return keyval;
}



****************************************
*D/A转换子程序 *
*****************************************
#include "tlc5614.h"
#include "spi.h"
void tlc5615(uint da)                                //10位DA扫描子程序
{
     da<<=2;
         scs=0;
         spiwrite(da>>8);                                  //调用spi串行通信
         spiwrite(da);
         scs=1;
}
****************************************
*spi串行口通信子程序*
*****************************************
#include "spi.h"
#include "comm.h"
#include "reg51.h"  
#define  trytime  200
#define DELAY_TIME 20
sbit sdi=P1^0;                               //TLC 5615DA转换与单片机接口
sbit sclk=P1^1;
sbit scs=P1^2;
sbit sdo=P1^3;
void spiwrite(uchar x)
{
   uchar i;
   for(i=0;i<8;i++)
   {
                   sdi=(x<<i)&0x80;
                sclk=0;
                delay(DELAY_TIME);
                sclk=1;
                delay(DELAY_TIME);
   }
}

****************************************
*A/D转换子程序*
*****************************************
#include "tlc1549.h"
#include "intrins.h"
bit flag3=0;
ulong int temp_1,temp;
#include "comm.h"
#include "reg51.h"
#include "nokia.h"
sbit  ccs=P3^2;                               //TLC1549与单片机连接接口
sbit  ioclk=P3^4;
sbit  dout=P3^3;
sbit  ccs_1=P3^5;
sbit  ioclk_1=P3^7;
sbit  dout_1=P3^6;
extern bit flag3 ;
uint tlc1549()                                       //AD转换
{
   uchar i;   
   uint temp = 0;
   ccs=1;
   _nop_();
  ccs = 0;  
  for(i=0;i<10;i++)  
  {
    ioclk = 0;        
    temp=(temp<<1)|dout;  
    ioclk = 1;
   _nop_();
   }
  ccs = 1;
  return (temp);            
}
void adzh()
{
   uchar ge,shi,x1,x2;                           //电流检测测出电流实际值
   temp=tlc1549();
   temp/=1.0;
   temp/=0.25;                                    //输出AD转换后的电流值  
   shi=temp/1000;
   ge=(temp/100)%10;
   x1=(temp/10)%10;
   x2=temp%10;
   if(flag3)
   {
   writeshuzi(4,0,shi);                                          //显示电流值
   writeshuzi(5,0,ge);
   writeshuzi(6,0,10);
   writeshuzi(7,0,x1);
   writeshuzi(8,0,x2);
   writeshuzi(9,0,13);
   }
}
uint tlc1549_1()                                          //AD转换
{
   uchar i;   
   uint temp = 0;
   ccs_1=1;
   _nop_();
  ccs_1 = 0;  
  for(i=0;i<10;i++)  
  {
    ioclk_1 = 0;        
    temp=(temp<<1)|dout_1;  
    ioclk_1 = 1;
   _nop_();
   }
  ccs_1 = 1;
  return (temp);
  }
void adzh_1()                                    //电压检测测出电压实际值
{
   uchar ge,shi,x1,x2;
   temp_1=tlc1549_1();                              
   temp_1/=1.0;                                     //输出AD转换后的电压
   temp_1=temp_1*11.0;   
   shi=temp_1/1000;                                 
   ge=(temp_1/100)%10;                              
   x1=(temp_1/10)%10;                                 
   x2=temp_1%10;
   if(flag3)
   {
   writeshuzi(4,2,shi);                                       //显示实测电压值
   writeshuzi(5,2,ge);
   writeshuzi(6,2,10);
   writeshuzi(7,2,x1);
   writeshuzi(8,2,x2);
   writeshuzi(9,2,12);
   }
}       
void power()                                          //测出功率
{
   ulong int power;
   uchar ge,shi,x1,x2;
   power=temp*temp_1;
   shi=power/100000;
   ge=(power/10000)%10;
   x1=(power/1000)%10;
   x2=(power/100)%10;
   if(flag3)
   {
   writeshuzi(4,4,shi);                                         //显示功率
   writeshuzi(5,4,ge);
   writeshuzi(6,4,10);
   writeshuzi(7,4,x1);
   writeshuzi(8,4,x2);
   writeshuzi(9,4,14);
   }
}
****************************************
*诺基亚液晶显示子程序 *
*****************************************
#include "nokia.h"
#include "comm.h"
#include "reg52.h"
sbit rst =P2^0;
sbit ce  =P2^1;
sbit dc  =P2^2;
sbit sdin=P2^3;
sbit sclk=P2^4;
char code hz[][24]={
//恒
        {0x18,0xFF,0x08,0x02,0xFA,0x2A,0x2A,0x2A,0x2A,0xFB,0x02,0x00,0x00,0x07,0x00,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x04,0x00},
//压
        {0x00,0xFF,0x01,0x21,0x21,0xFD,0x21,0x61,0xA1,0x21,0x01,0x00,0x06,0x01,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x05,0x04,0x00},
//流
        {0x11,0xA6,0x70,0x02,0xD2,0x1A,0xD7,0x12,0xDA,0x32,0x02,0x00,0x01,0x07,0x04,0x02,0x01,0x00,0x07,0x00,0x07,0x04,0x07,0x00},
//模
        {0xC4,0x34,0xFF,0x24,0x01,0x7D,0x57,0xD5,0x57,0x7D,0x01,0x00,0x00,0x00,0x07,0x00,0x05,0x05,0x03,0x01,0x03,0x05,0x05,0x00},
//式
        {0x24,0x24,0x24,0xE4,0x24,0x24,0x7F,0x84,0x05,0x06,0x04,0x00,0x04,0x04,0x04,0x03,0x02,0x02,0x00,0x01,0x02,0x04,0x07,0x00},
//电
        {0x00,0xFC,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xFE,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x04,0x06,0x00},
//功
        {0x02,0x02,0xFE,0x82,0x82,0x08,0x88,0x7F,0x08,0x08,0xF8,0x00,0x01,0x01,0x00,0x04,0x04,0x02,0x01,0x04,0x04,0x04,0x03,0x00},
//率
        {0x42,0x46,0x2A,0x52,0x6A,0xD7,0x6A,0x52,0x2A,0x46,0x02,0x00,0x01,0x01,0x01,0x01,0x01,0x07,0x01,0x01,0x01,0x01,0x01,0x00},
//空
    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
        };
char code sz[][16]={
    /*--  文字:  0  --*/
    {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},
/*--  文字:  1  --*/
    {0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},
/*--  文字:  2  --*/
    {0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},
/*--  文字:  3  --*/
    {0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},
/*--  文字:  4  --*/
    {0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},
/*--  文字:  5  --*/
    {0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},
/*--  文字:  6  --*/
    {0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},       
/*--  文字:  7  --*/
    {0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},       
/*--  文字:  8  --*/
    {0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},
/*--  文字:  9  --*/
    {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00},
/*--  文字:  .  --*/
        {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00},
/*--  文字:     --*/  
    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
/*--  文字:  V  --*/
    {0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00},
/*--  文字:  A  --*/
    {0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20},
/*--  文字:  W  --*/
    {0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00},
        };
write_byte(uchar dat,uchar command)
{
    uchar i;
        ce=0;
        if(command==0)
        {
           dc=0;
        }
        else dc=1;
        for(i=0;i<8;i++)
        {
            if(dat&0x80)
                   sdin=1;
                 else sdin=0;
                 sclk=0;
                 dat=dat<<1;
                 sclk=1;
        }
        ce=1;
        return 0;
}
setxy(uchar x,uchar y)
{
   write_byte(0x40|y,0);
   write_byte(0x80|x,0);
   return 0;
}
clear()
{
    uchar t,k;
        setxy(0,0);
        for(t=0;t<6;t++)
        {
           for(k=0;k<84;k++)
           write_byte(0x00,1);
        }
        return 0;
}
init()
{
     rst=0;
         delay(1);
         rst=1;
         ce=0;
         delay(1);
         ce=1;
         delay(1);
         write_byte(0x21,0);
         write_byte(0xc8,0);
         write_byte(0x06,0);
         write_byte(0x13,0);
         write_byte(0x20,0);
         clear();
         write_byte(0x0c,0);
         ce=0;
         return 0;                          
}
writehanzi(uchar row,uchar l,uchar c)
{
       uchar i;
           setxy(row*8,l);
           for(i=0;i<12;i++)
           {
               write_byte(hz[c][i],1);
           }
           setxy(row*8,l+1);
           for(i=12;i<24;i++)
           {
               write_byte(hz[c][i],1);
           }
           return 0;
}
writeshuzi(uchar row,uchar l,uchar c)
{
      uchar i;
          setxy(row*8,l);
          for(i=0;i<8;i++)
          {
              write_byte(sz[c][i],1);
          }
          setxy(row*8,l+1);
          for(i=8;i<16;i++)
          {
              write_byte(sz[c][i],1);
          }
          return 0;
}       
****************************************
*延时子程序*
*****************************************
#include "comm.h"
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
void delay(uchar x)                           //延时子程序
{
   uchar i,j;
   for(i=0;i<x;i++)
      for(j=0;j<120;j++);                       //延时120秒
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:7485 发表于 2017-5-6 21:55 | 只看该作者
错误是打不开这几个头文件。
你有这几个头文件吗?
回复

使用道具 举报

板凳
ID:197558 发表于 2017-5-6 23:46 | 只看该作者
好厉害
回复

使用道具 举报

地板
ID:197405 发表于 2017-5-7 11:35 | 只看该作者
ahshmj 发表于 2017-5-6 21:55
错误是打不开这几个头文件。
你有这几个头文件吗?

没有呢,怎么办?
回复

使用道具 举报

5#
ID:111634 发表于 2017-5-7 11:35 | 只看该作者
冗长的程序,一看就头疼。
回复

使用道具 举报

6#
ID:197658 发表于 2017-5-7 11:54 | 只看该作者
太长了把     把注释标上
回复

使用道具 举报

7#
ID:197405 发表于 2017-5-7 22:00 | 只看该作者
令狐补充2009 发表于 2017-5-7 11:54
太长了把     把注释标上

有注释啊,主要是头文件怎么弄?
回复

使用道具 举报

8#
ID:151063 发表于 2017-5-20 14:52 | 只看该作者
虽说不知道你搞定没,不过还是给你说下吧。
点keil里的  魔术棒 选c51 下面有include paths 在这里添加头文件路径
回复

使用道具 举报

9#
ID:151348 发表于 2017-5-20 16:50 | 只看该作者
缺少头文件(.h),这些头文件里应该主要是定义了硬件的管脚
回复

使用道具 举报

10#
ID:4150 发表于 2017-7-31 10:45 | 只看该作者
没有原理图,只有程序看了头痛
回复

使用道具 举报

11#
ID:188030 发表于 2017-7-31 13:05 来自手机 | 只看该作者
缺少头文件
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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