找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3929|回复: 1
收起左侧

基于adc0809和51单片机检测电源电压并显示(4位数码管)

[复制链接]
ID:466137 发表于 2019-1-13 11:09 | 显示全部楼层 |阅读模式
0.png

单片机源程序如下:
  1. //程序头函数
  2. #include <reg52.h>

  3. //宏定义
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. #define Data_ADC0809 P1

  7. //ADC0809
  8. sbit ST=P3^2;
  9. sbit EOC=P3^3;
  10. sbit OE=P3^1;

  11. sbit DIAN = P0^5;                        //小数点
  12. /*******************************定义全局变量********************************/
  13. unsigned char dis[3];       //显示数值
  14. unsigned int sum=0;
  15. unsigned int temp=0;
  16. unsigned int dat=0;
  17. /*******************************共阴LED段码表*******************************/

  18. unsigned char code tab[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0x5e/*字母U*/};        //gc.debfa

  19. /****************************************************************************
  20. 函数功能:AD转换子程序
  21. ****************************************************************************/
  22. //ADC0809读取信息
  23. uchar ADC0809()
  24. {
  25.         uchar temp_=0x00;
  26.         //初始化高阻太
  27.         OE=0;
  28.         //转化初始化
  29.         ST=0;
  30.         //开始转换
  31.         ST=1;
  32.         ST=0;
  33.         //外部中断等待AD转换结束
  34.         while(EOC==0)
  35.         //读取转换的AD值
  36.         OE=1;
  37.         temp_=Data_ADC0809;
  38.         OE=0;
  39.         return temp_;
  40. }
  41. /****************************************************************************
  42. 函数功能:延时子程序
  43. 入口参数:
  44. 出口参数:
  45. ****************************************************************************/
  46. void delay(unsigned int x)
  47. {
  48.     unsigned int i,j;
  49.     for(i=0;i<x;i++)
  50.         for(j=0;j<121;j++);
  51. }
  52. //=====================================================================================
  53. //=====================================================================================
  54. //=====================================================================================

  55. /****************************************************************************
  56. 函数功能:将0-255级换算成0.00-5.00的电压数值
  57. 入口参数:i
  58. 出口参数:
  59. ****************************************************************************/
  60. void convdata(unsigned char dat1)
  61. {
  62.         unsigned int Vo;
  63.         Vo=dat1*1.96;         
  64.     dis[0] = Vo/100;       //十位
  65.     dis[1] = Vo%100/10;      //个位         
  66.     dis[2] = Vo%100%10;     //小数点后第1位
  67. }
  68. /****************************************************************************
  69. 函数功能:数码管显示子程序
  70. 入口参数:
  71. 出口参数:
  72. ****************************************************************************/
  73. void display(void)
  74. {  
  75.     P0=~tab[dis[0]];      
  76.     P2=0xfe;                  //11011111
  77.         DIAN=0;
  78.     delay(1);   
  79.     P2=0xff;

  80.     P0=~tab[dis[1]];      
  81.     P2=0xfb;                //10111111
  82.     delay(1);
  83.     P2=0xff;

  84.     P0=~tab[dis[2]];      
  85.     P2=0xef;              //01111111  
  86.     delay(1);
  87.     P2=0xff;

  88.         P0=~tab[10];      
  89.     P2=0xbf;              
  90.     delay(1);
  91.     P2=0xff;
  92. }
  93. /****************************************************************************
  94. 函数功能:主程序
  95. 入口参数:
  96. 出口参数:
  97. ****************************************************************************/
  98. void main(void)
  99. {
  100.         unsigned char p=0;
  101.     while(1)       //主循环                  
  102.     {
  103.                 for(p=0;p<20;p++)
  104.                 {      
  105.                         sum=sum+ADC0809();
  106.                         display();
  107.                 }
  108. //                dat=((sum/20)+dat)/2;
  109.                 dat=sum/20;
  110.                 convdata(dat);      //数据转换
  111.                 sum=0;
  112.                 display();      //显示数值
  113.     }
  114. }

复制代码

全部资料51hei下载地址:
原理图.docx (49.81 KB, 下载次数: 24)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1001575 发表于 2022-1-13 20:26 | 显示全部楼层
问一下能不能测量交流电电压值
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表