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

📄 demo.lst

📁 单片机实现直流数控稳压电源,可调电压为0-9.9伏,步进为0.1伏,可以自动扫描键盘以增加或者减少电压
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.01  DEMO                                                                   06/24/2005 22:51:56 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE DEMO
OBJECT MODULE PLACED IN demo.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE demo.c OPTIMIZE(2,SPEED) BROWSE ORDER INTVECTOR(0X8000) DEFINE(monitor51) D
                    -EBUG OBJECTEXTEND

stmt level    source

   1          /**************************************************************************************************
   2          
   3            项目名称:               简易数控直流电源
   4          
   5            设计任务:设计出有一定输出电压范围和功能的数控电源.
   6          
   7            设计要求:
   8                                                  1.基本要求
   9                (1)输出电压:范围0~+10V,步进1V,纹波不大于10mV;
  10                    (2)输出电流:500mA;
  11                    (3)由"+","-"两键分别控制输出电压步进增减;
  12          
  13                                                  2.发挥部分
  14                    (1)输出电压步进可达到0.1V并可预置在0~9.9V之间的任意一个值;
  15                    (2)输出电压值由数码管显示;
  16                    (3)采用单片机控制,用自动扫描代替人工按键,实现输出电压变化.
  17          
  18            
  19            键盘按键盘说明:16号键-------------设定初值键;
  20                                           0~9号键------------数字键;
  21                                           11号键-------------复位键;
  22                                           13号键-------------加法键,步进0.1V,长按时自动增加0.1V到松开为止;
  23                                           12号键-------------减法键,步进0.1V,长按时自动减少0.1V到松开为止.
  24          
  25          
  26          
  27            项目开发者:  张运福   ,   蔡龙    ,王珂
  28          
  29            项目开发时间    2005 年 05 月 20 日    到  2005 年 05 月 21日 
  30          
  31          ***************************************************************************************************/
  32          
  33          #include <reg51.H>
  34          sbit CS=P1^0;
  35          sbit CLK=P1^1;
  36          sbit DIO=P1^2;
  37          sbit AD_OK=P3^2;
  38          char KeyCode;
  39          char dispbuff[8];
  40          unsigned char adconvert(char channel);
  41          char ReadKeyCode();
  42          char ReadKB();
  43          void sent(unsigned char sent_buf);
  44          void delay(unsigned int time);
  45          void display();
  46          char TICK;
  47          unsigned char ADresult;
  48          char xdata *DAResult=0x6000;
  49          char ResetBuff[2]={0x00,0x00};
  50          char flag=0x00;
  51          char MidKeyCode=0x00;
  52          
  53          /******************************************************************
  54          函数名称:unsigned char DASource()
C51 COMPILER V7.01  DEMO                                                                   06/24/2005 22:51:56 PAGE 2   

  55          函数功能:将数字量转换成模拟量
  56          入口参数:无
  57          出口参数:MidDAresult     DA转换所需的中间数据
  58          全局变量:ResetBuff
  59          调用模块:main
  60          ******************************************************************/
  61          
  62          unsigned char DASource()
  63          {
  64   1        unsigned char MidDAresult;
  65   1        MidDAresult=(ResetBuff[0]*10+ResetBuff[1])*5.12;
  66   1        return MidDAresult;
  67   1      }
  68          
  69          /******************************************************************
  70          函数名称:char adconvert(char channel)
  71          函数功能:将模拟量转换为数字量
  72          入口参数:char channel AD转换的通道
  73          出口参数:char result 转换结果
  74          全局变量:sbit AD_OK=p3^2;
  75          调用模块:void Timer0() interrupt 1
  76                           main()
  77          ******************************************************************/
  78          
  79          unsigned char adconvert(char channel)
  80          {
  81   1         unsigned char result;
  82   1         char xdata *adport;
  83   1         adport=0x0000+channel;                          //AD转换通道选择
  84   1         *adport=0;                                      //启动转换
  85   1         while(AD_OK==1);                                //等待转换结束
  86   1         result=*adport;                                 //读转换结果
  87   1         return result;
  88   1      }
  89          
  90          /******************************************************************
  91          函数名称:void Timer0() interrupt 1
  92          函数功能:定时中断
  93          入口参数:无
  94          出口参数:无
  95          全局变量:TICK
  96          调用模块:
  97          ******************************************************************/
  98          
  99          void Timer0() interrupt 1
 100          {
 101   1         TMOD=0x01;                                        //定时器初始化
 102   1         TH0=0x3c;
 103   1         if(TICK==15)
 104   1         {
 105   2          display();
 106   2              TICK=0;
 107   2          
 108   2              }
 109   1              TICK++;
 110   1      }
 111          
 112          /******************************************************************
 113          函数名称:void KeyBoard() interrupt 2
 114          函数功能:按键后产生中断,如果按下的是11号键,则复位,否则标志位+1
 115          入口参数:无
 116          出口参数:无
C51 COMPILER V7.01  DEMO                                                                   06/24/2005 22:51:56 PAGE 3   

 117          全局变量:KeyCode
 118                           ResetBuff
 119                           dispbuff
 120                           flag;
 121          调用模块:
 122          ******************************************************************/
 123          
 124          void KeyBoard() interrupt 2
 125          {  
 126   1         KeyCode=ReadKB();
 127   1         if(KeyCode==0x0b)                           //判断是否为11号复位键
 128   1         {
 129   2           ResetBuff[0]=0x00;
 130   2               ResetBuff[1]=0x00;
 131   2           dispbuff[0]=ResetBuff[0]%16;
 132   2               dispbuff[1]=ResetBuff[1]%16;
 133   2               flag=0x00;
 134   2         }
 135   1         else flag++;
 136   1      }
 137          
 138          /******************************************************************
 139          函数名称:char ReadKB()
 140          函数功能:按键的处理
 141          入口参数:无
 142          出口参数:kb 按下的一个键
 143          全局变量:CS
 144                           CLK
 145          调用模块:KeyBoard
 146          ******************************************************************/
 147          
 148          char ReadKB()
 149          {  char kb=0;
 150   1         kb=ReadKeyCode();
 151   1         ET0=1;
 152   1         return(kb);
 153   1      }
 154          
 155          /******************************************************************
 156          函数名称:char ReadKeyCode()
 157          函数功能:加/减的处理
 158          入口参数:无
 159          出口参数:char RKC 键位代码
 160          全局变量: CS
 161                            CLK
 162                            DIO
 163          调用模块:ReadKeyCode
 164                           ReadKB 
 165          ******************************************************************/
 166          
 167          char ReadKeyCode()
 168          {
 169   1         char RKC=0x00,i;     
 170   1         CS=1;
 171   1         CLK=0;
 172   1         delay (50);
 173   1         sent(0x15);                                    //发送读键盘指令
 174   1         delay(10);
 175   1      
 176   1         DIO=1;
 177   1         CLK=1;
 178   1         delay(50);
C51 COMPILER V7.01  DEMO                                                                   06/24/2005 22:51:56 PAGE 4   

 179   1         for(i=0;i<8;i++)
 180   1         {
 181   2           CLK=0;
 182   2           RKC=RKC*2+(char)DIO;                         //读1位数据
 183   2           delay(10);
 184   2           CLK=1;
 185   2           delay(10);
 186   2         } 
 187   1         CS=1;
 188   1         if(RKC==0x0c)                                 
 189   1                     {
 190   2                  if(ResetBuff[1]==0x00)
 191   2                      if(ResetBuff[0]==0x00)
 192   2                                         ;
 193   2                      else
 194   2                             {ResetBuff[1]=0x09; ResetBuff[0]--;}
 195   2                      else ResetBuff[1]--;

⌨️ 快捷键说明

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