历史上的今天

今天是:2024年08月27日(星期二)

正在发生

2020年08月27日 | 单片机数字电流表电压表源码与电路图

发布者:电子设计艺术家 来源: 51hei关键字:单片机  数字电流表  电压表 手机看文章 扫描二维码
随时随地手机看文章

单片机数字电流表电压表电路原理图如下:
   

单片机源程序如下:

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include

#include "1602.h"

#include "delay.h"

#include "i2c.h"


char dis0[16];                           //打印数组初始化

unsigned long time_20ms=0;                   //定时器计数


float Volt=0.0;                          //检测电压

float Acurrent=0.0;                                  //检测电流


void Init_Timer0(void);                //函数声明

void uartSendStr(unsigned char *s,unsigned char length);

void UART_Init(void);

void uartSendByte(unsigned char dat);


void main (void)

{     

        unsigned char midvolt,midcur;  //电压电流中间变量值


        Init_Timer0();        //定时器0初始化

        UART_Init();                  //串口初始化

                     

        LCD_Init();           //初始化液晶

        DelayMs(20);          //延时有助于稳定

        LCD_Clear();

        sprintf(dis0,"My Designer!!  ");//打印

        LCD_Write_String(0,0,dis0);//显示第一行

        sprintf(dis0,"V:%3.2fv A:%3.2fA",Volt,Acurrent);//打印电压电流值

        LCD_Write_String(0,1,dis0);//显示第二行

        uartSendStr("reday ok!!",10);

        while (1)         //主循环

        {

                midvolt=ReadADC(1);                                //读取AD检测到的 电压值

                DelayMs(50);          //延时有助于稳定

                midcur=ReadADC(0);                //读取电流转化后的电压值


                Volt=(float)midvolt*5.13/255*3;                //计算出电压 *3表示分压值

                Acurrent=(float)midcur*5.13/255;                //计算出电流

                                                                                               

                if(Acurrent>2.62)                         //如果电流转换后的电压值超过2.62

                {

                        Acurrent=(Acurrent-2.62)/0.185;         //电流模块 电压转换计算

                }

                else

                {

                        Acurrent=0;

                }       


                sprintf(dis0,"V:%3.2fv A:%3.2fA",Volt,Acurrent);//打印电压电流值

                LCD_Write_String(0,1,dis0);//显示第二行

//                uartSendStr(dis0,16);          //串口上报

//                uartSendStr("n",1);                           //换行

                DelayMs(200);          //延时有助于稳定

        }

}



void Init_Timer0(void)

{

        TMOD |= 0x01;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                     

        TH0=(65536-20000)/256;                  //重新赋值 20ms

        TL0=(65536-20000)%256;

        EA=1;            //总中断打开

        ET0=1;           //定时器中断打开

        TR0=1;           //定时器开关打开

}


void Timer0_isr(void) interrupt 1

{

        TH0=(65536-20000)/256;                  //重新赋值 20ms

        TL0=(65536-20000)%256;

       

        time_20ms++;

}



void UART_Init(void)

{

    SCON  = 0x50;                        // SCON: 模式 1, 8-bit UART, 使能接收  

    TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装

    TH1   = 0xFD;               // TH1:  重装值 9600 波特率 晶振 11.0592MHz

        TL1 = TH1;  

    TR1   = 1;                  // TR1:  timer 1 打开                        

    EA    = 1;                  //打开总中断

    ES    = 1;                  //打开串口中断

}


void uartSendByte(unsigned char dat)

{

        unsigned char time_out;

        time_out=0x00;

        SBUF = dat;                          //将数据放入SBUF中

        while((!TI)&&(time_out<100))  //检测是否发送出去

        {time_out++;DelayUs2x(10);}        //未发送出去 进行短暂延时

        TI = 0;                                                //清除ti标志

}


void uartSendStr(unsigned char *s,unsigned char length)

{

        unsigned char NUM;

        NUM=0x00;

        while(NUM        {

                uartSendByte(*s);  //放松单字节数据

                s++;                  //指针++

                NUM++;                  //下一个++

           }

}


void UART_SER (void) interrupt 4         //串行中断服务程序

{

        if(RI)                        //判断是接收中断产生

        {

                RI=0;                      //标志位清零

        }

        if(TI)  //如果是发送标志位,清零

        TI=0;

}


……………………


关键字:单片机  数字电流表  电压表 引用地址:单片机数字电流表电压表源码与电路图

上一篇:LCD1602简易计算器实物与仿真
下一篇:51单片机读写RC522卡参考例程及上位机调试软件源码

推荐阅读

据 报道,十年前,电商巨头推出了阅读器Kindle,并建立了在数字设备上阅读的吸引力。四年前,杰夫·贝索斯(Jeff Bezos)及其公司推出了Echo,促使数百万人开始与电脑交谈。现在,亚马逊正致力于另一个大赌注——家庭机器人。 据知情人士透露,这家零售和云计算巨头已经开始了一项雄心勃勃的绝密计划,欲打造全新产品类别,即家用机器人。这个项目代...
前段时间,台湾电视节目“名嘴”黄世聪因“大陆人吃不起涪陵榨菜”的梗着实是火了一把。对比此前的“无知”,今天人民日报微博报道称,黄世聪在收到两箱榨菜后画风突变,在节目中突然开始“吹捧”大陆的“北斗卫星系统”。在节目中,黄世聪表示,大陆35颗的北斗卫星系统比31颗的GPS覆盖范围更大且更精准好用,他补充称,二三十年前GPS技术和如今的卫星技术...
生成高精地图的过程需要采集大量的数据,我们的采集途径包括:GNSS(全球导航卫星系统)、IMU(惯性测量单元)、轮速计、激光雷达点云以及摄像头图像。 1. 什么是高精度地图高精度地图,通俗来讲就是精度更高、数据维度更多的电子地图。精度更高体现在精确到厘米级别,数据维度更多体现在其包括了除道路信息之外的与交通相关的周围静态信息。 高精度地图...
今年上半年,聚时科技完成新一轮数亿元的A+轮融资,由上市公司汇川技术领投,中芯科技创投、快克股份、华成创投、敦行资本、云晖资本等其他上市公司和创投机构先后跟投。据悉,聚时科技本轮融资资金将主要用于持续打造公司的产品矩阵,继续提高优势产品的核心竞争力。其次是引进更多优秀人才进行业务扩张,加强产品大规模交付能力,完善供应链体系建设等环...

史海拾趣

问答坊 | AI 解惑

不懂。。还是有点不理解

老师我对外部中断和内部中断的理解不太好,看书也是越看越乱,希望老师给我详细的讲解一下(附一个程序)。。。谢谢…

查看全部问答∨

浅谈DSP的音频处理

摘要:从激光唱盘(CD)到超级音频CD(SACD)、DVD音频唱盘和MP3多媒体播放器,数字形式的音频技术越来越流行,音频处理已经取得了长足的进步。本文重点探讨DSP的音频处理。 关键词:DSP  音频  系统     现在大多数 ...…

查看全部问答∨

PIC实现4位数码管扫面显示不正常

小弟在初学PIC时候遇到了这个难处。 我用PIC扫描时总是不能实现正常显示。以下是我的代码 unsigned int k; void delay(ms) {         int a,b;         for(a=ms;a>0;a--)         & ...…

查看全部问答∨

电阻式触摸屏和电容式触摸屏

电阻式触摸屏在中断服务线程TouchPanelIST中把坐标传给系统的吧?那它是怎么把坐标传给系统的?通过什么回调函数吗?…

查看全部问答∨

在推挽电路中什么是从负载吸入电流 吐出电流

在推挽电路中什么是从负载吸入电流 吐出电流 …

查看全部问答∨

RS485串联组网疑惑

    我想请问一下,在485组网的时候,很多地方都提到用串联的方式组网信号比较稳定。我没弄明白这种串联式单纯连线方式的不同呢,还是用串联的时候,数据只能一层一层的传递?     希望有经验的朋友,指点一下,十分感谢!…

查看全部问答∨

我给大家特别推荐的一款产品,非常棒!!!

c8051f 单片机(c2 ,jtag)和at89s5x单片机(isp)二合一串口编程下载线,支持3伏(c8051f 单片机),5伏(at89s5x单片机)电源, 目前通过实际验证可编程下载的芯片:c8051f310、c8051f320、c8051f330D、c8051f340、c8051f350、c8051f360、c8051f4 ...…

查看全部问答∨

【紧急求助】PC 与 C51串行通信问题

PC机与多个C51进行通信时,在51中怎么样判断数据是否发送给自己的呢? 如何将数据精确到发送到指定的51单片机上呢? 有效立即给分,绝不 食言而肥…

查看全部问答∨

在linux下用QT做ARM应用软件的人,中等水平,月薪会是多少

可能在各个城市会有不同吧,但大概会是多少呢.…

查看全部问答∨

诚聘多媒体开发工程师

Master/Bachelor degree in computer science, electrical engineering or related subject area Minimum of 5 years embedded system development experience Strong SOC enablement experience on Linux Minimum 3 years of full time Linux ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved