zoukankan      html  css  js  c++  java
  • 数模转换ADC08009应用

     1 #include <reg52.h>             //头文件
     2 #define uchar unsigned char           //宏定义无符号字符型
     3 #define uint  unsigned  int           //宏定义无符号整型
     4 code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟
     5 uchar wei[4]={0XEf,0XDf,0XBf,0X7f};  //位的控制端                                                                 //位控制码
     6 sbit ST=P3^0;   //A/D启动转换信号
     7 sbit OE=P3^1;   //数据输出允许信号
     8 sbit EOC=P3^2;  //A/D转换结束信号
     9 sbit CLK=P3^3;  //时钟脉冲  
    10 uint z,x,c,v,AD0809, date;        //定义数据类型
    11 /******************************************************************
    12 延时函数
    13 ******************************************************************/
    14 void delay(uchar t)
    15 {
    16   uchar i,j;
    17    for(i=0;i<t;i++)
    18    {
    19             for(j=13;j>0;j--);
    20          { ;
    21          }
    22    }
    23 }
    24 /**********************************************************************
    25                 数码管动态扫描
    26 *********************************************************************/
    27 void xianshi() //显示函数
    28  { 
    29 uint z,x,c,v;
    30   z=date/1000;                         //求千位
    31   x=date%1000/100;                 //求百位
    32   c=date%100/10;                 //求十位
    33   v=date%10;                         //求个位
    34 
    35       P2=0XFF;
    36           P0=seg7code[z]&0x7f;
    37           P2=wei[0];
    38           delay(80);
    39           P2=0XFF;  
    40       P0=seg7code[x];
    41           P2=wei[1];
    42           delay(80);
    43           P2=0XFF;  
    44              P0=seg7code[c];
    45           P2=wei[2];
    46           delay(80);
    47           P2=0XFF;  
    48       P0=seg7code[v];
    49           P2=wei[3];
    50           delay(80); 
    51           P2=0XFF;
    52   }
    53  /*************************************************************************
    54                                 CLK振荡信号        
    55 **************************************************************************/
    56 void timer0( ) interrupt 1 //定时器0工作方式1
    57 {
    58 
    59 TH0=(65536-2)/256;          //重装计数初值
    60 TL0=(65536-2)%256;          //重装计数初值
    61 CLK=!CLK;                          //取反
    62 }
    63 
    64  /*************************************************************************
    65                                 主函数        
    66 **************************************************************************/
    67  void main()
    68 { 
    69 TMOD=0X01;                          //定时器中断0
    70 
    71 CLK=0;                                  //脉冲信号初始值为0
    72 TH0=(65536-2)/256;          //定时时间高八位初值
    73 TL0=(65536-2)%256;          //定时时间低八位初值
    74 EA=1;                                  //开CPU中断
    75 ET0=1;                                  //开T/C0中断
    76 TR0=1;
    77  while(1)                           //无限循环
    78         {
    79         ST=0;                                //使采集信号为低
    80         ST=1;                                //开始数据转换
    81         ST=0;                                //停止数据转换
    82         while(!EOC);                //等待数据转换完毕
    83         OE=1;                                //允许数据输出信号
    84         AD0809=P1;                    //读取数据
    85         OE=0;                                //关闭数据输出允许信号
    86         if(AD0809>=251)                //电压显示不能超过5V
    87         AD0809=250;
    88         date=AD0809*20;                //数码管显示的数据值,其中20为采集数据的毫安值
    89         xianshi();                        //数码管显示函数
    90     
    91     }
    92 }        
  • 相关阅读:
    D3.js 几种常用的坐标轴
    前端页面的用户体验优化设计
    用can-fixture拦截Ajax并模拟响应
    webpack入门及使用
    CommonJS和AMD规范
    凝思6.0虚拟机搭建--遇到的问题
    凝思6.0安装vmware tools记录
    linux定时任务crontab命令
    find命令使用指南
    关于字体、字形、字符集、字体大小
  • 原文地址:https://www.cnblogs.com/kinson/p/7454869.html
Copyright © 2011-2022 走看看