找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3502|回复: 0
收起左侧

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

[复制链接]
ID:284341 发表于 2018-2-24 00:49 | 显示全部楼层 |阅读模式
Altium Designer画的AD接收UART发送模块电路原理图和PCB图如下:(51hei附件中可下载工程文件)
0.png 0.png 0.png

【简要说明】
一、 尺寸:50mmX25mmX10mm
二、主要芯片:ATMEGA8
三、工作电压:直流5V
二、 特点:
1、检测模拟量电压范围0~5V
2、数码管显示范围0~5000
3、四位数码管显示
4、输入输出接线简单
5、AD转换频率125K,8位数据转换
6、波特率:9600 , 误差率:0.156%
三、 作用:将0~5V的模拟电压量转换成为0~5000的数字量,由数码管显示出来,并转换成为0255的十六进制,由单片机UART(即,TXD口发出),经232电平转换后,可以和电脑直接通信。

AD接收UART发送模块AD转换数值显示
image016.jpg 0.png
image017.png

image014.jpg image012.jpg image004.jpg image010.jpg


单片机源程序如下:
  1. #include <iom8v.h>
  2. #include <macros.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. /********************************************************************
  6.                 数码管段码定义0123456789
  7. *********************************************************************/
  8. uchar Table[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};         //所需的段的位码
  9. uchar wei[4]={0X10,0X20,0X40,0X80};  //位的控制端        (仿真)
  10. //uchar wei[4]={0Xe0,0Xd0,0Xb0,0X70};  //位的控制端        (板子)
  11. uint date;        //定义数据类型
  12. uchar z,x,c,v;        //定义数据类型
  13. /**********************************************************************
  14.                                                                 延时函数                                                                          
  15. **********************************************************************/
  16. void DelayMs(uint i)  //0.25ms
  17. {uint j;
  18. for(;i!=0;i--)
  19.   {for(j=8000;j!=0;j--) {;}}
  20. }
  21. /**********************************************************************
  22.                 数码管动态扫描
  23. *********************************************************************/
  24. void Pre_Display()
  25. {

  26. /***********************数据转换*****************************/
  27.   z=date/1000;                         //求千位
  28.   x=date%1000/100;                 //求百位
  29.   c=date%100/10;                 //求十位
  30.   v=date%10;                         //求个位

  31.       PORTD=wei[0];
  32.           PORTB=Table[z];
  33.           DelayMs(1);  
  34.             PORTD=wei[1];
  35.       PORTB=Table[x];
  36.           DelayMs(1);  
  37.              PORTD=wei[2];
  38.       PORTB=Table[c];
  39.           DelayMs(1);  
  40.       PORTD=wei[3];
  41.       PORTB=Table[v];
  42.           DelayMs(1);  
  43.   }
  44. /**********************************************************************
  45.                                                                 电压值处理函数                                                                          
  46. **********************************************************************/
  47. uint ADC_Convert(void)
  48. {uint temp1,temp2;
  49. temp1=(uint)ADCL;//先读ADCL
  50. temp2=(uint)ADCH;//再读ADCH
  51. temp2=(temp2<<8)+temp1;//求值
  52. temp2=temp2*49/10;//求显示的电压值(0~5.12)V
  53. if(temp2>=5000)temp2=5000;
  54. return(temp2);
  55. }
  56. /**********************************************************************
  57.                       初始化I/O口
  58. **********************************************************************/
  59. void Init_IO(void)             //初始化I/O口
  60. {
  61. DDRC=0x00;                    //设置C口为不带上拉输入;
  62. PORTC=0x00;
  63. DDRB=0xff;                    //设置B口为推挽1输出;
  64. PORTB=0xff;
  65. DDRD=0xFF;                    //设置D口为推挽1输出;
  66. PORTD=0xFF;
  67. }
  68. /********************************************************************
  69.                       串口初始化子程序
  70. *********************************************************************/
  71. void Uart_Init(void)
  72. {
  73.     UCSRB  =  0x00;     //disable while setting baud rate
  74.     UCSRA  =  0x00;     //Bit1为1则倍速发送
  75.     UCSRC  =  0x86;  
  76.     UBRRL  =  0x33;     //波特率:9600 Bps
  77.     UBRRH  =  0x00;     //误差率:0.156%
  78.     UCSRB  =  0x18;  
  79. }
  80. /********************************************************************
  81.                      串口发送字节子程序
  82. *********************************************************************/
  83. void Putchar(unsigned char c)
  84. {
  85.    while (!(UCSRA&(1<<UDRE)));
  86.    UDR=c;
  87. }
  88. /**********************************************************************
  89.                                                                 主函数                                                                          
  90. **********************************************************************/
  91. void main(void)
  92. {uint i;
  93. uint B=50;
  94. uint TXD;
  95. Init_IO();
  96. Uart_Init();
  97. ADMUX=0x00;

  98.                    //选择第一通道;
  99. /**********************转换速率应在50~200K****************************/
  100. ADCSR=0xe6;                   //125K转换速率,自由转换模式;启动AD转换器;
  101. DelayMs(1);                //延时待系统稳定;
  102. while(1)
  103. {

  104. B--;
  105. i=ADC_Convert();   //显示电压值(0~1024)
  106.       
  107. ……………………

  108. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png

所有资料51hei提供下载:

AD接收UART发送模块DXP资料.rar

117.71 KB, 下载次数: 20, 下载积分: 黑币 -5

AD接收UART发送模块产品使用手册.doc

3.1 MB, 下载次数: 19, 下载积分: 黑币 -5

AD接收UART发送模块程序.rar

76.86 KB, 下载次数: 23, 下载积分: 黑币 -5

AD接收UART发送模块原理图.doc

28.5 KB, 下载次数: 19, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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