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

📄 chengxu.lst

📁 单路带数码管可编程可调节延时模块
💻 LST
字号:
C51 COMPILER V9.00   CHENGXU                                                               05/13/2013 13:04:19 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:AD_UART程序,数码管显示模拟量值
   5          使用芯片:STC12C5204AD
   6          晶振:11.0592MHZ
   7          编译环境:Keil
   8          硬件环境:四位数显两路输入三按键
   9          作者:yang
  10          QQ:790244909
  11          网站:www.ourhc.cn
  12          物联网测试网站:http://hualongelectron.eicp.net/
  13          日期:2013-04-02
  14          淘宝店:
  15                华龙电子直销:http://hlelectrony.taobao.com 
  16                电子开发直销:http://shop63233873.taobao.com 
  17                    汇诚科技网路购物:http://shop36330473.taobao.com
  18          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  19          ********************************************************************/    
  20              
  21          /********************************************************************
  22          程序说明:
  23          1、P1口八路AD数据转换。
  24          2、将转换的数据通过串口发送出去。
  25          3、发送数据的格式是:(通道口-数据)
  26          
  27          注意:通道口必须有模拟量输入数据才有效。
  28          
  29          ********************************************************************/
  30          
  31          #include<STC12C5A60S2.H>               //库文件
  32          #include <intrins.h>
  33          #include"SMG.H"
  34          #define uchar unsigned char//宏定义无符号字符型
  35          #define uint unsigned int  //宏定义无符号整型
  36          #define FOSC 11059200L
  37          #define BAUD  9600
  38          
  39          #define ADC_POWER   0x80            //ADC 电源控制位
  40          #define ADC_FLAG    0x10            //ADC 转换结束标志位
  41          #define ADC_START   0x08            //ADC 开始转换控制位
  42          #define ADC_SPEEDLL 0x00            //420个时钟周期转换一次
  43          #define ADC_SPEEDL  0x20            //280 个时钟周期转换一次
  44          #define ADC_SPEEDH  0x40            //140个时钟周期转换一次
  45          #define ADC_SPEEDHH 0x60            //70个时钟周期转换一次
  46           void delay(uint x);
  47          extern void t_to_dis(void);
  48          extern void display(void);           //显示函数
  49          
  50          /********************************************************************
  51                                      延时函数
  52          *********************************************************************/
  53          void delay(uint x)//延时程序 0.1秒
  54          {
  55   1              uchar m,n,s;
C51 COMPILER V9.00   CHENGXU                                                               05/13/2013 13:04:19 PAGE 2   

  56   1              for(m=x;m>0;m--)
  57   1              for(n=20;n>0;n--)
  58   1              for(s=248;s>0;s--);
  59   1      }
  60          
  61          /********************************************************************
  62                         功能:串口初始化,波特率9600,方式1
  63          *********************************************************************/
  64          
  65          void Init_Com(void)
  66          {
  67   1              TMOD = 0x20;
  68   1              PCON = 0x00;
  69   1              SCON = 0x50;
  70   1              TH1 = 0xFd;
  71   1              TL1 = 0xFd;
  72   1              TR1 = 1;
  73   1      }
  74                             
  75          /********************************************************************
  76                                   AD转换初始化程序
  77          *********************************************************************/
  78          
  79          void InitADC()
  80          {
  81   1          P1ASF|=0x10;        //设置P1口为开漏模式,使用AD功能
  82   1          ADC_RES=0;        //AD数据寄存器清空
  83   1          ADC_CONTR=ADC_POWER|ADC_SPEEDL|ADC_START;//打开AD电源,转换周期XX
  84   1          delay(10);                //延时
  85   1      }
  86          
  87          /********************************************************************
  88                                   AD转换控制程序
  89          *********************************************************************/
  90          uchar GetADCResult(uchar px)      //转换输出的数据 (PX为通道口)
  91          {
  92   1          ADC_CONTR = ADC_POWER | ADC_SPEEDLL |px| ADC_START;//开始转换
  93   1          _nop_();                        //延时一个机器周期
  94   1          _nop_();                                            //延时一个机器周期
  95   1          _nop_();                                            //延时一个机器周期
  96   1          _nop_();                                            //延时一个机器周期
  97   1          while (!(ADC_CONTR & ADC_FLAG));//等待转换结束
  98   1          ADC_CONTR &= ~ADC_FLAG;         //关闭AD转换
  99   1          return ADC_RES;                 //返回数据
 100   1      }
 101          /********************************************************************
 102                                   串口数据发送
 103          *********************************************************************/
 104          void SendData(uchar dat)
 105          {
 106   1              SBUF = dat;                                             //发送数据
 107   1          while (!TI);                    //等待数据
 108   1          TI = 0;                         //清零标志位
 109   1      }
 110          /********************************************************************
 111                                      编辑数据函数
 112          *********************************************************************/
 113          void show(uchar ch)
 114          {
 115   1          SendData(ch);                   //发送显示通道
 116   1          SendData(GetADCResult(ch));     //发送对应通道的数据
 117   1      }
C51 COMPILER V9.00   CHENGXU                                                               05/13/2013 13:04:19 PAGE 3   

 118          /********************************************************************     
 119          /********************************************************************
 120                                      主函数
 121          *********************************************************************/
 122          void main()
 123          {        
 124   1              P2M1=0;
 125   1              P2M0=0xff;
 126   1              P1M1=0;
 127   1              P1M0=0x0f;
 128   1              P3M1&=0x7f;
 129   1              P3M0|=0x80;
 130   1               
 131   1              Init_Com();//串口初始化
 132   1              InitADC(); //AD转换初始化
 133   1              while(1)
 134   1              {  
 135   2               //    show(0);   //显示第一通道的数值
 136   2           // show(1);   //显示第二通道的数值
 137   2               //    show(2);   //显示第三通道的数值
 138   2               //    show(3);   //显示第四通道的数值
 139   2                    show(4);   //显示第五通道的数值
 140   2               //    show(5);   //显示第六通道的数值
 141   2               //    show(6);   //显示第七通道的数值
 142   2               //    show(7);   //显示第八通道的数值  
 143   2                      t_to_dis();
 144   2                      display();
 145   2           }
 146   1      }
 147                  
 148          /********************************************************************
 149                                        结束
 150          *********************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    265    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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