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

📄 main.lst

📁 该程序是基于c8051f020的平台
💻 LST
📖 第 1 页 / 共 3 页
字号:
 203          long     int  vb,vb_2,vc,ve ,vbe,AD;
 204          uchar    counter;
 205          uchar    yow,xolumn;
 206          bit      enable,b,sb;
 207          extern   unsigned char row,column;
 208          float    base;
 209          
 210          
 211          main(void)
 212          {
 213   1            unsigned char j=0,k=0;
 214   1            
 215   1            SYSCLK_Init ();                   
 216   1            PORT_Init ();    
 217   1            Lcd_Ini();
 218   1                //Timer0_Init ();
 219   1            //Timer3_Init(0XFC);
 220   1              ADC0_Init(); 
 221   1                dac0832_1=0x83;
 222   1                delay(200,200);
 223   1                
 224   1              dac0832_2=0xc8;  
 225   1                /* for(j=0;j<64;j++)
 226   1                {
 227   1                 delay(200,200);
 228   1                 delay(200,200);
 229   1                 delay(200,200);
 230   1                 delay(200,200);
 231   1                 delay(200,200);
 232   1                 dac0832_1=char7[j];
 233   1                } */                           
 234   1            // DAC0_Init ();
 235   1                ShowPicture(0,0,16,128,PictureTab,0x0400);
 236   1                 Send_cmd3(0x00,0x05,0x42);    //图形区首址设置
 237   1                 for(j=0;j<150;j++)
 238   1                    delay(50,50);
 239   1                 Send_cmd3(0x00,0x06,0x42);    //图形区首址设置
 240   1                 for(j=0;j<150;j++)
 241   1                    delay(50,50);
C51 COMPILER V8.02   MAIN                                                                  07/09/2007 08:18:06 PAGE 5   

 242   1                 Send_cmd3(0x00,0x07,0x42);    //图形区首址设置
 243   1                 for(j=0;j<150;j++)
 244   1                    delay(50,50);
 245   1                 Send_cmd3(0x00,0x04,0x42);    //图形区首址设置 
 246   1                 //ShowPicture(0,0,16,64,PictureTab,0x0800); 
 247   1                 /*Clr_Char_Area();
 248   1                 Clr_Graph_Area();
 249   1                 Locat_Dot(0,0);
 250   1                 Locat_Dot(0,10);
 251   1                 Locat_Dot(0,64);
 252   1                 Line(10,15,75,30);
 253   1                 Line(10,15,10,15);
 254   1                 Line(10,15,20,30);
 255   1                 Line(70,50,10,18);
 256   1                 Line(10,20,10,50);
 257   1                 Line(50,50,50,10);
 258   1                 Line(10,60,80,15);
 259   1                 Line(10,60,50,60); 
 260   1                 Line(10,60,20,10);
 261   1                 Line(30,60,10,10);
 262   1                 Line(0,0,127,0);
 263   1                 Line(0,0,0,63); */
 264   1             EA = 1;                           // 允许全部中断
 265   1            // EIE2 |= 0x02;                   // 允许ADC0中断            
 266   1                while(1)
 267   1                 { 
 268   2                               read();
 269   2                      }    
 270   1                      while(1)
 271   1              Send_data('a');           
 272   1             
 273   1      }
 274          //--------------------------------------------------------------------------
 275          //--------------------------------------------------------------------------
 276          void SYSCLK_Init (void)
 277          {
 278   1           int i;                     // 延时计数器
 279   1               WDTCN = 0xde;                     // 禁止看门狗定时器
 280   1           WDTCN = 0xad;
 281   1           OSCXCN = 0x67;             // 开启外部振荡器22.1184MHz晶体
 282   1           for (i=0; i < 256; i++) ;  // 等待振荡器启振
 283   1           while (!(OSCXCN & 0x80)) ; // 等待晶体振荡器稳定
 284   1           OSCICN = 0x88;             // 选择外部振荡器为系统时钟源并允许丢失时钟检测器 
 285   1      }                                                                                                                                       
 286          //--------------------------------------------------------------------------
 287          //--------------------------------------------------------------------------
 288          void PORT_Init (void)
 289          {
 290   1         P1MDOUT=0Xff;
 291   1         P2MDOUT=0XFF;
 292   1         XBR1 = 0x00;
 293   1         XBR2 = 0x40;           // 使能数据交叉开关和弱上拉
 294   1         P74OUT=0x3f;           /*P4 is PUSH-PULL*/
 295   1                                /*用到显示的时候,必须有这句*/
 296   1      }
 297          //--------------------------------------------------------------------------
 298          //--------------------------------------------------------------------------
 299          void ADC0_Init (void)
 300          {
 301   1          ADC0CN = 0x00;         // ADC0 禁止; 正常跟踪模式定时器3溢出ADC0转换开始 ADC0数据右对齐
 302   1          REF0CN = 0x03;         // 禁止温度传感器, 片内 VREF,和 VREF 输出缓冲器
 303   1          AMX0CF = 0x00;
C51 COMPILER V8.02   MAIN                                                                  07/09/2007 08:18:06 PAGE 6   

 304   1          AMX0SL = 0x00;         // 选择AIN0作为ADC多路转换输出
 305   1          ADC0CF = (SYSCLK/2500000) << 3;    // ADC转换时钟2.5MHz
 306   1          ADC0CF &= ~0x07;       // PGA增益 = 1
 307   1          EIE2 &= ~0x02;         // 禁止ADC0中断
 308   1          AD0EN = 1;             // 使能ADC0
 309   1      }
 310          
 311          //--------------------------------------------------------------------------
 312          //--------------------------------------------------------------------------
 313          void lcd_display(void)
 314          {        
 315   1           Clr_Char_Area();
 316   1               Clr_Graph_Area();
 317   1               ShowChar(1,1,char1);
 318   1               ShowChar(2,1,char2);
 319   1               ShowChar(3,1,char3);
 320   1               ShowChar(4,1,char4);
 321   1      
 322   1                
 323   1      }
 324          void read (void)
 325          {  
 326   1         EA = 0;
 327   1         P1=0xf0;
 328   1         e=P1;
 329   1         if(e!=0xf0)             //有输入
 330   1           {
 331   2               delay(30,30);     //去抖
 332   2               P1=0xf0;
 333   2               e=P1;
 334   2               if(e!=0xf0)       //确认有键
 335   2                 {            
 336   3                     P1=0xf0;
 337   3                     delay(1,10);
 338   3                     H=P1&0xf0;      //读键值高4位
 339   3                     P1=0x0f;
 340   3                     delay(1,10);
 341   3                     L=P1&0x0f;      //读键值低4位
 342   3                     key=H|L;
 343   3                     key=~key;
 344   3                     switch(key)
 345   3                        { 
 346   4                           case 0x11 : dat='0';break;
 347   4                           case 0x21 : dat='1';break;
 348   4                           case 0x41 : dat='2';break;
 349   4                           case 0x81 : dat='3';break;   
 350   4                           case 0x12 : dat='4';break;
 351   4                           case 0x22 : dat='5';break;
 352   4                           case 0x42 : dat='6';break;
 353   4                           case 0x82 : dat='7';break;    
 354   4                           case 0x14 : dat='8';break;   
 355   4                           case 0x24 : dat='9';break;
 356   4                           case 0x44 : dat='S';break;
 357   4                           case 0x84 : dat='E';break;    
 358   4                           case 0x18 : dat='a';break;   
 359   4                           case 0x28 : dat='d';break;
 360   4                           case 0x48 : dat='A';break;    
 361   4                           case 0x88 : dat='D';break;    
 362   4                           default : break;
 363   4                        }
 364   3                    P1=0xf0;
 365   3                    while(P1!=0xf0);     //等待键释放
C51 COMPILER V8.02   MAIN                                                                  07/09/2007 08:18:06 PAGE 7   

 366   3                    data_deal();  
 367   3                 }
 368   2            }
 369   1           EA = 1;                    
 370   1      } 
 371          void data_deal(void)
 372          {   
 373   1          uchar a ,i,j,n,l,p;
 374   1              char m,k;
 375   1          if(dat=='S')            //功能键按下时初始化相应数据
 376   1            {  
 377   2                enable=1;
 378   2                lcd_display() ;
 379   2            }
 380   1                if(enable==1)
 381   1            {  
 382   2                         AMX0CF = 0x00;
 383   2                 AMX0SL = 0x00;                   //选用通道AIN0测试vb
 384   2                         delay(10,10);
 385   2                         adc_change();
 386   2                         vb=ADc*655L;
 387   2                         vb=vb/1000;
 388   2                         AMX0CF = 0x00;
 389   2                 AMX0SL = 0x05;                           //选用通道AIN5测试vb_2
 390   2                         delay(10,10);
 391   2                         adc_change();
 392   2                         vb_2=ADc*655L;
 393   2                         vb_2=vb_2/1000;
 394   2                         AMX0CF = 0x00;
 395   2                 AMX0SL = 0x02;                               //选用通道AIN2测试vc
 396   2                         delay(10,10);
 397   2                         PGA();
 398   2                         vc=AD*655L;
 399   2                         vc=vc/1000;
 400   2                         AMX0CF = 0x00;
 401   2                 AMX0SL = 0x03;                               //选用通道AIN3测试ve
 402   2                         delay(10,10);
 403   2                         adc_change();
 404   2                         ve=ADc*655L;
 405   2                         ve=ve/1000;
 406   2                        if(dat=='1')
 407   2                         {
 408   3                          ve=ve*45;
 409   3                          Amp=ve/vb;
 410   3                  aa[0]=(uchar)(Amp/100)+'0';
 411   3                      aa[1]=(uchar)((Amp/10)%10)+'0';
 412   3                      aa[2]=(uchar)(Amp%10)+'0';
 413   3                              Clr_Char_Area();

⌨️ 快捷键说明

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