历史上的今天
今天是:2024年11月07日(星期四)
2019年11月07日 | 单片机AD接收UART发送模块电路图PCB与vb上位机源码
2019-11-07 来源:51hei
Altium Designer画的AD接收UART发送模块电路原理图和PCB图如下:

【简要说明】
一、 尺寸:长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转换数值显示




单片机源程序如下:
#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< } /********************************************************************** 主函数 **********************************************************************/ 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) ……………………
上一篇:AVR单片机的TWI中断模式
下一篇:AVR定时器1快速PWM模式设置
史海拾趣
|
一、引言 过去工业控制计算机系统的软件功能都靠软件人员编程实现。工作量大,软件通用性差,且易产生错误。随着工业控制要求的不断提高,专门用于工业控制的组态软件应运而生,它是一套功能齐全的组态生成工具软件,通用性强,而 ...… 查看全部问答> |
|
_irqHandler PROC 1. STMFD sp!,{r0-r4,r12,lr} 2. mov r4,#0x80000000 //中断控制寄存器首地址(假设的) 3. ldr r0,[r4,#0] ...… 查看全部问答> |
|
请问: wince中的文件夹有没有后缀名? 我想把一个名为NandFlash的文件夹,放到桌面快捷方式, 我在WINCE500\\PLATFORM\\SMDK2440\\FILES创建了一个NandFlash.LNK文件,里面写上22#\\windows\\NandFlash 我又在Project.bib 里面加上 NandFlash ...… 查看全部问答> |
|
首先我的程序在某些主板上是可以正常工作的(具体型号我也搞不懂),设置的是从设备,内部只有从设备状态机。没有接入奇偶检验,仲裁和热插拔。 问题是在一些主板上发现设置为从设备时无法找到设备,设置为主设备可以找到,但是通过软件读取配置信 ...… 查看全部问答> |
|
今天听单片机老师讲课讲中断,说分了好几种,被他弄得一头雾水,还是没明白他说的中断都有什么,怎么配置,查了查2553手册,愣是没找到讲解终端的地方,球大神指点123!不胜感激。… 查看全部问答> |




