⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yue1112212.lst

📁 本系统的控制部分是以89C51为核心
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   YUE1112212                                                            01/22/2004 15:11:07 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE YUE1112212
OBJECT MODULE PLACED IN E:\SCY\液晶\YY\YUE1112212.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\SCY\液晶\YY\YUE1112212.C DB SB OE OT(0)

line level    source

   1          //#include <reg51.h>
   2          #include <at89x55.h>
   3          #include <stdio.h>
   4          #include <absacc.h>
   5          #include <intrins.h> //此文件中有_nop_()空操作函数
   6          #define uchar unsigned char
   7          #define uint unsigned int
   8          uchar biao1,biao2,biao3;//biao3高斯与磁通的转换,biao1是AD采样,biao2是量程转换
   9          uchar biao4=0;//biao4单位转换标志
  10          uchar biao5;//biao输入上、下限的标志位
  11          uchar srjs1, srjs2;
  12          uchar xueren=0;//计确定键的次数
  13          uchar m,n;//定义输入上、下限的范围位置
  14          unsigned long out; //存放1674测量值变量
  15          
  16          unsigned char code num[]={"0123456789 :.-"};
  17          unsigned char code idea1[]={"Gauss Meter"};
  18          unsigned char code idea2[]={"Magnaflux Meter"};
  19          unsigned char code idea3[]={"  磁信号检测仪  "};
  20          unsigned char code idea4[]={"指导老师:张  胜"};
  21          unsigned char code idea5[]={"设计者:  郑魏悦"};
  22          unsigned char code idea6[]={"学  号:03440126"};
  23          unsigned char code shape[]={"Shape"};
  24          unsigned char code poles[]={"poles"};
  25          unsigned char code work[]={"work"};
  26          unsigned char code range[]={"range "};
  27          
  28          uchar sz1[8] ; //AD转换数据暂存
  29          uchar sz2[8];   //上限输入数据暂存
  30          uchar sz3[8];    //下限输入数据暂存
  31          sbit P20=P2^0;
  32          sbit P21=P2^1;
  33          sbit P22=P2^2;
  34          /*************************************HD_7279引脚定义************************/
  35          
  36          sbit     hd_7279cs=P1^3;
  37          sbit     hd_7279clk=P1^4;
  38          sbit     hd_7279data=P1^5;
  39          sbit     hd_7279key=P3^3;
  40          //sbit hd_7279key=P1^6; // key 连接于P1.3
  41          /*************************************AD1674引脚定义************************/
  42          sbit AD1674RC=P2^5;
  43          sbit AD1674A0=P2^6;
  44          sbit AD1674TST=P3^2;
  45          sbit AD1674CS=P2^7;
  46          /*************************************LCD液晶脚定义***************************/
  47          sbit   lcdCS    =  P1^5;        //片选 高电平有效 单片LCD使用时可固定高电平
  48          sbit   lcdSID   =  P1^6;        //数据
  49          sbit   lcdSCLK  =  P1^7;        //时钟
  50          //sbit   lcdPSB   =  P2^3;
  51          //sbit   lcdRST  =  P2^4;
  52          
  53          /*********************************函数定义******************************/
  54          //7279
  55          void hd7279send_byte(uchar out_byte);
C51 COMPILER V7.50   YUE1112212                                                            01/22/2004 15:11:07 PAGE 2   

  56          void keyin(void);
  57          void ajcl(js);
  58          void axszj(uchar js);
  59          void long_delay(void);
  60          void short_delay(void);
  61          //12864
  62          void Write_char(bit start, unsigned char ddata);
  63          void Send_byte(unsigned char bbyte);
  64          void Delaynms(unsigned int di);
  65          void Lcd_init(void);
  66          void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s);
  67          void LCD_set_xy( unsigned char x, unsigned char y );
  68          //AD1674
  69           void qd1674(void);
  70           //
  71          void makerang(void) ;
  72          void disp(void);
  73          void panluan(void);
  74          
  75          
  76          
  77          /*************************写路一字节************************************/
  78          void hd7279send_byte(uchar out_byte)
  79          { uchar j;
  80   1        hd_7279cs=0;
  81   1        long_delay();   /*50uS引时*/
  82   1        for(j=8;j>0;j--)
  83   1         { if(out_byte & 0x80)
  84   2           {hd_7279data=1;}
  85   2               else
  86   2               {hd_7279data=0;}
  87   2                hd_7279clk=1;
  88   2                short_delay();
  89   2                hd_7279clk=0;
  90   2                short_delay();
  91   2                out_byte=out_byte<<1;
  92   2         }
  93   1         hd_7279data=0;
  94   1      }
  95          /**************************读一字节**********************************/
  96          uchar hd7279receive_byte(void)
  97          { uchar j,in_byte;
  98   1        hd_7279data=1;
  99   1        long_delay();   /*50uS引时*/
 100   1        for(j=8;j>0;j--)
 101   1         { hd_7279clk=1;
 102   2           short_delay();
 103   2               in_byte=in_byte<<1;
 104   2           if(hd_7279data)
 105   2           {in_byte=in_byte|0x01;}
 106   2                hd_7279clk=0;
 107   2                short_delay();
 108   2         }
 109   1         hd_7279data=0;
 110   1         return (in_byte);
 111   1      }
 112          
 113          //***长延时***
 114          void long_delay(void)
 115          {
 116   1      unsigned char i;
 117   1      for (i=0;i<0x30;i++);
C51 COMPILER V7.50   YUE1112212                                                            01/22/2004 15:11:07 PAGE 3   

 118   1      }
 119          
 120          //***短延时***
 121          void short_delay(void)
 122          {
 123   1      unsigned char i;
 124   1      for (i=0;i<8;i++);
 125   1      }
 126          /******************************************************************************/
 127          void Delaynms(unsigned int di) //延时
 128          {
 129   1              unsigned int da,db;
 130   1              for(da=0;da<di;da++)
 131   1              for(db=0;db<10;db++);
 132   1      }
 133           /*********************************AD1674转换****************************************/
 134           void qd1674(void)
 135          {
 136   1        unsigned char out1,out2;
 137   1      
 138   1        AD1674CS=0;
 139   1        AD1674RC=0;
 140   1        AD1674A0=1;
 141   1      
 142   1        /*测忙*/
 143   1        loop:
 144   1        if(AD1674TST)goto loop;
 145   1      
 146   1        /*读高8位*/
 147   1      
 148   1        AD1674RC=1;
 149   1        AD1674A0=0;
 150   1        out1=P0;
 151   1        out=out1&0x0f  ;
 152   1        out<<=8;
 153   1        out+=out1;
 154   1      
 155   1      
 156   1        /*读低4位*/
 157   1      
 158   1        AD1674RC=1;
 159   1        AD1674A0=1;
 160   1        out2=P0;
 161   1        out2=out2&0x0f;
 162   1        out+=out2;
 163   1        AD1674CS=1;
 164   1      }
 165          /******************************初始化LCD************************************************/
 166          void Lcd_init(void)
 167          {
 168   1             Delaynms(10); //启动等待,等LCM讲入工作状态
 169   1              lcdCS=1;
 170   1              //Write_char(0,0x82) ;
 171   1              Write_char(0,0x30) ;  //8 位介面,基本指令集
 172   1              Write_char(0,0x0c);  //显示打开,光标关,反白关
 173   1              Write_char(0,0x01);  //清屏,将DDRAM的地址计数器归零
 174   1      /*******************************************************/
 175   1              LCD_Write_string(1,0,idea3);
 176   1              LCD_Write_string(2,0,idea4);
 177   1              LCD_Write_string(3,0,idea5);
 178   1              LCD_Write_string(4,0,idea6);
 179   1      }
C51 COMPILER V7.50   YUE1112212                                                            01/22/2004 15:11:07 PAGE 4   

 180          
 181          /*******************************写指令或数据***********************************/
 182          
 183          void Write_char(bit start, unsigned char ddata) //
 184          {
 185   1              unsigned char start_data,Hdata,Ldata;
 186   1              if(start==0)
 187   1                      start_data=0xf8;         //写指令
 188   1          else
 189   1              start_data=0xfa;  //写数据
 190   1      
 191   1              Hdata=ddata&0xf0;                 //取高四位
 192   1              Ldata=(ddata<<4)&0xf0;  //取低四位
 193   1              Send_byte(start_data);    //发送起始信号
 194   1              Delaynms(5); //延时是必须的
 195   1              Send_byte(Hdata);             //发送高四位
 196   1              Delaynms(1);  //延时是必须的
 197   1              Send_byte(Ldata);                 //发送低四位
 198   1              Delaynms(1);  //延时是必须的
 199   1      }
 200          
 201          /******************************************************************************/
 202          void Send_byte(unsigned char bbyte) //发送一个字节
 203          {
 204   1              unsigned char i;
 205   1              for(i=0;i<8;i++)
 206   1              {
 207   2      
 208   2                      lcdSCLK=0;                      lcdSID=bbyte&0x80; //取出最高位
 209   2                      lcdSCLK=1;
 210   2                      bbyte<<=1; //左移
 211   2              }
 212   1      }
 213          
 214          
 215          /******************************************************************************/
 216          void Clr_Scr(void)//清屏函数
 217          {
 218   1              Write_char(0,0x01);
 219   1      
 220   1      }
 221          /******************************************************************************/
 222          void LCD_set_xy( unsigned char x, unsigned char y )
 223          {       //设置LCD显示的起始位置,X为行,Y为列
 224   1          unsigned char address;
 225   1              switch(x)
 226   1              {
 227   2                      case 0: address = 0x80 + y; break;
 228   2              case 1: address = 0x80 + y; break;
 229   2                      case 2: address = 0x90 + y; break;
 230   2                      case 3: address = 0x88 + y; break;
 231   2                      case 4: address = 0x98 + y; break;
 232   2                      default:address = 0x80 + y; break;
 233   2              }
 234   1          Write_char(0, address);
 235   1      }
 236          /******************************************************************************/
 237          void LCD_Write_number(unsigned char s)//        数字显示函数
 238          {
 239   1              Write_char(1,num[s]);
 240   1              Delaynms(1);
 241   1      }
C51 COMPILER V7.50   YUE1112212                                                            01/22/2004 15:11:07 PAGE 5   

 242          
 243          
 244          /******************************************************************************/
 245          void Delay(int num)//延时函数
 246          {
 247   1              while(num--) ;
 248   1      }
 249          
 250          /******************************************************************************/
 251          void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
 252          {       //      中英文字符串显示函数
 253   1          LCD_set_xy( X, Y );
 254   1          while (*s)
 255   1          {
 256   2               Write_char( 1, *s );
 257   2                 s ++;
 258   2               Delaynms(1);
 259   2         }
 260   1      }
 261          
 262           /****************************************************************************/
 263          void Lcd_Mark1(void)//在预定的位置上写入汉字
 264          {
 265   1              Clr_Scr();//清屏
 266   1              LCD_Write_string(1,0,idea1);//标题-高斯计-
 267   1              LCD_Write_string(2,0,"B:          ");
 268   1              LCD_Write_string(3,0,range);//
 269   1              LCD_Write_string(3,4,work);//
 270   1              LCD_Write_string(3,6," off") ;
 271   1      
 272   1      }
 273           void Lcd_Mark2(void)//在预定的位置上写入汉字
 274          {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -