单片机AD接收UART发送模块电路图PCB与vb上位机源码

2019-11-07来源: 51hei关键字:单片机  AD接收  UART发送

Altium Designer画的AD接收UART发送模块电路原理图和PCB图如下:
0.png0.png

【简要说明】

一、 尺寸:长50mmX宽25mmX高10mm
二、主要芯片:ATMEGA8
三、工作电压:直流5V

二、 特点:
1、检测模拟量电压范围0~5V
2、数码管显示范围0~5000
3、四位数码管显示
4、输入输出接线简单
5、AD转换频率125K,8位数据转换
6、波特率:9600 , 误差率:0.156%

三、 作用:将0~5V的模拟电压量转换成为0~5000的数字量,由数码管显示出来,并转换成为0~255的十六进制,由单片机UART(即,TXD口发出),经232电平转换后,可以和电脑直接通信。


AD接收UART发送模块AD转换数值显示

image016.jpg

image017.png 

image014.jpgimage012.jpgimage004.jpgimage010.jpg 

单片机源程序如下:

    #include

    #include  

    #define uchar unsigned char

    #define uint  unsigned int

    /********************************************************************

                    数码管段码定义0123456789

    *********************************************************************/

    uchar Table[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};         //所需的段的位码

    uchar wei[4]={0X10,0X20,0X40,0X80};  //位的控制端        (仿真) 

    //uchar wei[4]={0Xe0,0Xd0,0Xb0,0X70};  //位的控制端        (板子) 

    uint date;        //定义数据类型 

    uchar z,x,c,v;        //定义数据类型 

    /**********************************************************************

                                                                    延时函数                                                                           

    **********************************************************************/

    void DelayMs(uint i)  //0.25ms

    {uint j;

    for(;i!=0;i--)

      {for(j=8000;j!=0;j--) {;}}

    }

    /**********************************************************************

                    数码管动态扫描

    *********************************************************************/

    void Pre_Display()


    /***********************数据转换*****************************/ 

      z=date/1000;                         //求千位

      x=date%1000/100;                 //求百位

      c=date%100/10;                 //求十位

      v=date%10;                         //求个位


          PORTD=wei[0];

              PORTB=Table[z];

              DelayMs(1);  

                PORTD=wei[1];

          PORTB=Table[x];

              DelayMs(1);  

                 PORTD=wei[2];

          PORTB=Table[c];

              DelayMs(1);  

          PORTD=wei[3];

          PORTB=Table[v];

              DelayMs(1);  

      }

    /**********************************************************************

                                                                    电压值处理函数                                                                           

    **********************************************************************/

    uint ADC_Convert(void)

    {uint temp1,temp2;

    temp1=(uint)ADCL;//先读ADCL

    temp2=(uint)ADCH;//再读ADCH

    temp2=(temp2<<8)+temp1;//求值

    temp2=temp2*49/10;//求显示的电压值(0~5.12)V

    if(temp2>=5000)temp2=5000;

    return(temp2);

    }

    /**********************************************************************

                          初始化I/O口

    **********************************************************************/

    void Init_IO(void)             //初始化I/O口

    {

    DDRC=0x00;                    //设置C口为不带上拉输入;

    PORTC=0x00;

    DDRB=0xff;                    //设置B口为推挽1输出;

    PORTB=0xff;

    DDRD=0xFF;                    //设置D口为推挽1输出;

    PORTD=0xFF;

    }

    /********************************************************************

                          串口初始化子程序

    *********************************************************************/

    void Uart_Init(void)

    {

        UCSRB  =  0x00;     //disable while setting baud rate

        UCSRA  =  0x00;     //Bit1为1则倍速发送

        UCSRC  =  0x86;  

        UBRRL  =  0x33;     //波特率:9600 Bps

        UBRRH  =  0x00;     //误差率:0.156%

        UCSRB  =  0x18;  

    }

    /********************************************************************

                         串口发送字节子程序

    *********************************************************************/

    void Putchar(unsigned char c)

    {

       while (!(UCSRA&(1<

       UDR=c;

    }

    /**********************************************************************

                                                                    主函数                                                                           

    **********************************************************************/

    void main(void)

    {uint i;

    uint B=50;

    uint TXD;

    Init_IO();

    Uart_Init();

    ADMUX=0x00; 


                       //选择第一通道;

    /**********************转换速率应在50~200K****************************/

    ADCSR=0xe6;                   //125K转换速率,自由转换模式;启动AD转换器;

    DelayMs(1);                //延时待系统稳定;

    while(1)

    {


    B--;

    i=ADC_Convert();   //显示电压值(0~1024)

           

    ……………………


    关键字:单片机  AD接收  UART发送 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479249.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

    上一篇:AVR单片机的TWI中断模式
    下一篇:AVR定时器1快速PWM模式设置

    关注eeworld公众号 快捷获取更多信息
    关注eeworld公众号
    快捷获取更多信息
    关注eeworld服务号 享受更多官方福利
    关注eeworld服务号
    享受更多官方福利

    推荐阅读

    小家电热销带动盛群,新唐单片机出货量激增
    由于今年白色小家电需求依旧热络,10月开始一波急单带动IC设计盛群(6202)、新唐(4919)MCU出货量增,加上年底耶诞节购物需求,及上半年库存去化告一段落,第四季业绩将优于第三季,全年营运可望倒吃甘蔗。10月相关白牌小家电零组件IC出现节前急单拉货潮,盛群表示,10月开始,已感受到订单回流迹象,客户及终端库存去化、中国双11及年底拉货旺季到来,且中国去美化政策逐季发酵,客户拉货态度转趋积极。上半年受到贸易战影响,客户拉货态度观望,下半年库存水位已降至低点,MCU厂在客户要求下,于10月备妥急单需求,主要以小家电商品IC为主,第四季进入全年出货旺季,法人预估今年第四季MCU厂业绩可望成为全年最高点。
    发表于 2019-11-11
    AVR单片机红外遥控键值解码实验
    AVR学习笔记十八、红外遥控键值解码实验  18.1 实例功能 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 在这个实验中,我们采用红外线遥控器和一体化红外接收头来进行红外遥控键值解码的实验,本实例分为三个功能模块,分别描述如下: ● 单片机系统:利用 ATmega16单片机与一体化红外接收器组成红外接收电路。 
    发表于 2019-11-11
    AVR单片机红外遥控键值解码实验
    AVR单片机跑马灯的仿真设计
    简易的跑马灯设计。基于AVR单片机仿真原理图如下:单片机源程序如下:/********************************************************************                            汇诚科技*********************************************************************/#include <iom16v.h>
    发表于 2019-11-11
    AVR单片机跑马灯的仿真设计
    直流有刷伺服控制系统(pic单片机,pid控制)
    基于PIC18系列单片机的直流有刷伺控制系统:(来处于国外贴)1:原理图(PDF)2:原理图及PCB图(EAGLE)3:带pid + 编码器的控制程序。main.c电路原理图如下: 单片机源程序如下:// Vertical motor driver code // Oringially made by Kevin Wolfe 2009-2011// Modified by Matt Moses 2010-2011// #include <p18f1320.h>//#include <stdlib.h>//#include <delays.h>//#include
    发表于 2019-11-11
    直流有刷伺服控制系统(pic单片机,pid控制)
    PWM控制MOSFET搭建的H桥电路驱动直流电机仿真与单片机源码
    PIC单片机 proteus H桥驱动直流电机PWM控制MOSFET搭建的H桥电路驱动直流电机运行仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) 1.正转-> 2.停止-> 3.反转-> 4.停止调整到高速时会观察到电机好象在逆向及慢速转动的效果,这是正常的.实际正反转速显示在电机下方(高电平有效状态)全桥正向时P1A有效,P1D调制全桥反向时P1C有效,P1B调制单片机源程序如下://-----------------------------------------------------------------//  名称: 用PIC16F690设计的PWM控制器控制H桥
    发表于 2019-11-11
    PWM控制MOSFET搭建的H桥电路驱动直流电机仿真与单片机源码
    电池容量测试仪电路与源码(PIC16F1938单片机+AD623实现)
    分享一个由PIC16F1938单片机芯片和AD623构成的电池容量测试仪.电路原理图如下:电池容量测试仪的pic单片机源码:#include    "main.h" //------------------------32MHZ---------------------------------------------- __CONFIG(FOSC_INTOSC & CLKOUTEN_OFF & BOREN_ON & PWRTE_ON & CPD_OFF          &CP_ON
    发表于 2019-11-11
    电池容量测试仪电路与源码(PIC16F1938单片机+AD623实现)
    小广播
    何立民专栏 单片机及嵌入式宝典

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

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