历史上的今天

今天是:2024年11月07日(星期四)

正在发生

2019年11月07日 | 单片机AD接收UART发送模块电路图PCB与vb上位机源码

发布者:温馨生活 来源: 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发送 引用地址:单片机AD接收UART发送模块电路图PCB与vb上位机源码

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

    推荐阅读

            集微网消息(文/小如)11月5日,济南济阳区举办了金秋济阳项目集中签约仪式,40个项目现场集中签约,总投资达274.8亿元,其中包括济北智造小镇首批入园项目。        据齐鲁晚报报道,济北智造小镇首批入驻企业36家,制造生产类35家、园区配套物流类1家。首批入园项目总投资金额约52.5亿元,运营后预估实现年产值110亿元,年纳税...
    程序源码#include<reg51.h>#include<intrins.h>#include<math.h>#define uchar unsigned char#define uint unsigned intunsigned long Result,i;sbit SDA=P1^1; //PCF8591 接口sbit SCL=P1^0;unsigned int a=0; //波形采样点值unsigned int b=0;unsigned int c=0;unsigned int bx_chang=0;unsigned int n=40; ...
    我们知道搭载骁龙 865 处理器的手机可以单独升级 GPU 驱动,此前小米 10 和 10 Pro 就迎来过 GPU 升级,据网友爆料,搭载骁龙 865 处理器的 iQOO 3 和 iQOO 5 也支持 GPU 驱动独立升级。 据悉,目前 iQOO 3 和 iQOO 5 用户已可在应用商店下载 GPU 驱动升级,GPU 驱动的独立升级可使游戏或应用能够适配最...
    摆脱芯片供应短缺问题 双芯片代工策略见效 11月4日,高通股价飙涨逾12%,相较同业,高通在面对芯片更显得心应手,并看好明年业绩将持续成长。 高通执行长 Crisano Amon 于电话会议上表示,预计12月底供应问题将明显好转,明年下半年将有足够的供应满足需求,预期 2022财年EPS有望年增20%。 Lily点评:芯片短缺一直影响5G手机的出货量。高通作为全...

    史海拾趣

    问答坊 | AI 解惑

    一个和指针有关的很无奈的怪问题!请大侠们帮我猜猜问题在哪。

    请教一个非常奇怪的问题:程序中定义了一个数组mempool,指向该数组的指针MpIsrOut和结构体MInfo及指向该结构体的指针MpIsrInfo,这个结构体和数字都在xdata空间。程序在一个函数中是以该数组指针和结构体指针来访问这两个实体的,在这个函数里,出 ...…

    查看全部问答∨

    中断嵌套

    我使用LPC2132做中断嵌套,好困惑,我使用的是KEIL3,高手支招啦!…

    查看全部问答∨

    打算用CE做点东西, 不知道什么才有市场?

    打算用CE做点东西, 不知道什么才有市场?大家推荐一下…

    查看全部问答∨

    基于winCE的控件重绘

    我用的是C#写的,写在paint事件中,运行不到那里 我就改到构造函数中去绘制同样也没有显示出来 public ucDrawLine()         {             InitializeComponent(); &nb ...…

    查看全部问答∨

    驱动的makefile、sourse还有ini文件该怎么写?

    请问一下,文件系统过滤驱动程序编译需要的makefile和source文件怎么来写,我编写时是使用的ifs kit中sfilter过滤驱动中的原文件修改。但编译后nms翻译提示没有时间戳和可能过期,还有安装后重起进不了系统。请高手 ...…

    查看全部问答∨

    招聘程序员

    招聘程序员: 具体要求见: www.chinadacs.cn …

    查看全部问答∨

    想问问大家WINCE是怎么样实现数据库操作的?

    没有接触过嵌入式开发,现在公司有点小需求需要用到WINCE开发一个数据库记录东西的小程序,请教一下大家,作个大概的了解!…

    查看全部问答∨

    刚装了Evc4+sp3+sdk4.2+ppc2003sdk,编译的时候报“The emulator coul not be found in the speci

    模拟器已经装了阿,可以看到的,为什么编译出问题呢?模拟器的安装路径不能变吗?哪位能告诉我evc4怎么配置阿,有哪本书讲啊?…

    查看全部问答∨

    求 LM3S9862 评估板原理图

    有没有谁有LM3S9862 评估板原理图?找了好久都没找到,好心人发一份给我吧,先谢谢啦~ 邮箱:zs-xsh@hotmail.com…

    查看全部问答∨

    关于实时数据采集

       麻烦各位大侠们了    自己要做的是现场AD,然后光纤传输,之后接收还原DA输出,只是一个实时的采集,处理的部分用的不多,整个过程要求在1个微秒左右,选用的是Cyclone EP1C6.但是问题是,AD是12位并行输出,采样时钟大体准 ...…

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

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

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

    换一换 更多 相关热搜器件
    随便看看

     
    EEWorld订阅号

     
    EEWorld服务号

     
    汽车开发圈

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