产品概述

1t的单片机 单片机实例分享,简易网络测试仪

小编 2024-11-24 产品概述 23 0

单片机实例分享,简易网络测试仪

网络已经融入了当今生活的各个方面,成为绝大多数人生活中不可或缺的重要组成部分。因为职业的关系,笔者经常会接触到网线的铺设以及网络的测试等方面工作,在工作中我发现借助专业的网络测试仪,可以极大地减少网络故障的排查时间,并能很好地提高工作效率。

专业的网络测试仪功能很强大:电缆查找、扫描线序、PING功能、寻找端口以及数据包分析等。然而,不容忽视的是,尽管一个专业的网络测试仪功能很强大,但价格往往不菲,动辄上万,因此相对于国外来说,国内使用范围还很有限。能不能自己设计一个简单实用的网络测试仪呢?当然可以。

网线制作的线序可以使用网线测试仪进行测试,并且价格也很便宜,因此,暂且忽略这个功能。综合考虑常用的几个功能,笔者设计的简易网络测试仪(以下简称测试仪)支持:PING功能、DHCP功能测试以及网络访问测试,也就是说,此测试仪建立在网络数据传输之上,能直观地反映网络传输性能。

笔者的设计思路如图30.1所示。

图30.1 简易网络测试仪结构

元器件选择

图30.2所示是此测试仪所用元器件,使用的元器件清单如表30.1所示。

图30.2 元器件实物

表30.1 元器件清单

1.网络传输接口芯片

网络传输接口是本测试仪的重点,选择一款合适的接口芯片对于简化制作及日后工作的稳定性都尤为重要。在这里,笔者选择了 ENC28J60,ENC28J60 是 Microchip Technology(美国微芯科技公司)2005年推出的28引脚封装独立以太网控制器。自从推出以来,应用极其广泛,这得益于它的引脚非常少、外围电路很简单、使用3线SPI串行接口和单片机通信。由于它占用芯片引脚非常少,所以焊接容易,甚至可以直接在洞洞板上进行电路布局。

2.MCU 主控芯片

由于选定ENC28J60作为网络接口芯片,MCU的引脚只需保证以下条件即可:

(1)支持3/4线SPI接口,用于与ENC28J60通信,当然,用I/O模拟也可,只是速度会稍慢;

(2)网络需要一定的数据包RAM缓存,因此主控芯片RAM至少为1KB以上;

(3)网络协议占用大量的代码空间,考虑到扩展性,片内Flash最好大于32KB。

在此,从通用与易上手方面综合考虑,笔者选用了51内核的1T单片机STC12C5A60S2,此单片机的特点为:改进传统51单片机12T的指令运行周期,达到了1T,速度大大提高;内部Flash空间达到了60KB,不用担心因程序代码的空间过大而放不下的问题。

电路设计规划

此测试仪的电路非常简单,主体由3片IC组成,外加带网络变压器的RJ45接口座HR911105A以及少量的阻容元器件。

显示器采用最常用的LCM1602字符型液晶显示屏,虽然只能显示16×2个字符,但经过优化的主菜单看起来效果也不错。

电路图如图30.3所示。

图30.3 简易网络测试仪电路图

工作流程简介

从笔者的设计思路中可以看出,测试仪采用菜单的形式对功能进行分类,包括TCP网页测试页面、PING命令以及通过DHCP功能从路由器自动获取IP这3大功能。其中,对网络协议的数据包处理与分发是测试仪工作的重点,在此,笔者就对此进行简要的介绍。

网络数据传输中,最常用的协议组就是“TCP/IP协议”,是一个协议组。相对测试仪系统而言,用到的协议有以下几个。

(1)ARP协议:该协议为大部分数据传输的前提,用于询问对方的MAC地址,以便在后期点对点传输中发送含有正确MAC的数据包。

(2)IP 协议:该协议用于点对点数据传输过程,通过 IP 地址判别接收方的数据包,它是ICMP、UDP和TCP协议的“容器”。

(3)ICMP协议:换个通俗的说法,该协议就是PING,用于确认对方的连接状态,正常连接就能收到PING回应。

(4)UDP协议:该协议是简单的面向数据包的传输层协议,不需要通过复杂的握手协议,只需要知道对方的IP地址和MAC即可进行数据传输,因此具有高效、却不可靠的特点。

(5)TCP协议:该协议是高可靠性的包交换传输协议,通过复杂的握手、重发、回应协议机制进行传输,和UDP相反,具有冗余、可靠的特点。

(6)DHCP协议:该协议是用来实现自动从路由器上获取IP地址、子网掩码以及网关IP地址的功能,免去了手动设置IP的麻烦。

这6个常用的协议只是众多网络协议中的很小一部分,但却负担着大部分网络传输任务,因此,网络传输其实并非很多人想象得那么不可捉摸。

焊接安装与调试

由于元器件不多,电路结构比较简单,遂采用Protel 99SE设计,完成后的PCB布局如图30.4所示。只要焊接无误,上电烧写程序后即能正常工作。笔者试制了几个均一次成功。

图30.4 PCB 布局

实际效果

焊接完成之后的效果如图30.5所示,之后进行液晶显示屏装配,效果如图30.6所示。

图30.5 焊接完成图

图30.6 装配上液晶显示屏

上电初始化完成后,进入主菜单,如图30.7所示,可以按动Next按键选择相应的功能,按Enter按键确认。

选择功能1是WebServer,是运行TCP网页测试的页面,用于网络中的电脑对测试仪进行数据访问测试。与测试仪在同一网络中的电脑均可以通过IE浏览器访问测试仪,在浏览器地址栏输入测试仪的地址即可,图30.8所示为测试仪运行界面,图30.9所示为电脑访问测试仪的网页,网页上可以显示电脑的IP地址以及MAC地址。

图30.7 主菜单

图30.8 运行网页服务器

选择功能2为PING功能,它是用于测试仪对网络中的电脑进行数据交换测试,不仅可以对同一局域网内的电脑进行测试,也可对跨越路由器的远程IP地址进行PING。如果对端电脑未能对测试仪进行回应,测试仪就会显示“Response TTL= ???”;如果收到回应,则显示TTL=064(也可能是255、128、32等);如果对端的电脑跨越路由器,则每跨越一层路由器,TTL的数值就会减1,这个数据也可以粗略地估计数据包经过的路由器层数。All后的数据表示总共进行了几次PING,Succ后的数据表示成功的PING次数,All与Succ之差就是丢包的次数。网络状况良好时,一般All和Succ的数据相等。图30.10为PING功能的PING通状态。

图30.9 电脑访问网页服务

选择功能3为设置功能,可以对测试仪的IP地址、子网掩码以及网关进行设置,也可在开启DHCP功能的路由器网络内,通过打开测试仪的DHCP功能从路由器处自动获取上述3个参数,这样就更加方便使用了,图30.11所示为设置的参数。

图30.10 PING 功能的PING 通状态

图30.11 设置菜单

总结

测试仪在设计之初,就本着尽量精简的原则,在完成支持ARP、ICMP、DHCP以及TCP协议的情况下,删除不必要的协议。因此,系统代码相当精简,只占用了大约16KB的代码空间。当然,它也仅能完成菜单选择PING命令、自动获取IP和网页显示电脑参数等简单的功能,一些复杂的网络功能,例如数据协议分析显示、网络数据包存储等,由于体积和硬件所限,在本测试仪中尚未涉及。

经过一段时间的试用,该系统运行稳定,在日常工作中与网线测试仪搭配,能够完成大部分测试和故障判断工作,完全可以满足日常的应用。

■ 为了方便大家制作,下位机、上位机的代码与 PCB 文件均可从qq群657864614下载。

单片机实例分享,温度记忆杯垫

“记忆杯垫”是我利用身边的材料制作的,杯垫材料是一张光盘,导热材料是硬币,用502胶水和加厚双面胶粘合,制作起来十分简单。

这个作品的设计初衷是源自个人的生活经验,希望和我有着一样烦恼的“技术宅”们会喜欢这个设计。笔者作为“职业码农”,常常遇到这样的困扰:早上冲好的咖啡,放着放着就凉了;同事胃不好,需要喝温水,可一忙就忘记了……想必每个人都有这样的经历,这次的设计,就是给大家解决这一问题——可以及时提醒人们饮用热饮。喜欢喝热饮的朋友,以后不必再因为冷却的热饮而苦皱眉头了!

功能描述

“记忆杯垫”能实现以下功能:当我们把装有温度较高液体的杯子放到杯垫上时,杯垫上安装的温度传感器开始测量杯子的底部温度,只要杯子不是隔热材料的,那么杯子的表层温度就会和里面的液体温度成正比,当杯子内的液体降到了适合人的饮用习惯时,此时按下“记忆键”,杯垫就将永久记录下此时的杯子底层温度;当使用者再次将装有热饮的杯子放在杯垫上时,液体在降温过程中,只要杯子的底层温度与之前记忆的温度接近,杯垫就可以根据设计者的要求提示主人饮用,比如通过闪烁灯提示或者通过音乐提示。

工作原理

这次设计的核心就是围绕温度传感器DS18B20和单片机EEPROM的应用。

DS18B20采集温度,单片机负责数据的处理,当有温度需要记录时,单片机将待记录温度存储到单片机EEPROM中;当EEPROM中有了温度记录后,单片机将采集到的数据与EEPROM中数据随时进行比较,当数据接近时,就会做出相应输出,开启提示功能。

当下次冲好了一杯咖啡,就可以把杯子放到杯垫上面了,温度传感器会将采集到的温度T值与EEPROM里的数值A做比较,当A-1 < T < A+1 时,杯垫侧面的8个发光二极管就会闪烁,以此来提示主人喝咖啡或水。

温度的差值也可以根据设计者的需要自行改变,比如在比较寒冷的地区,T与A的差值可以通过改变程序来实现。笔者在南方,实际测试的时候发现T与A的值在±1之间就可以了。

记忆键在向单片机记录温度数据的时候,也会擦除之前的数据,这样一个按钮就可以完成需要的操作。

国产的STC单片机大多数都自带了一定大小的EEPROM,这就给设计者带来了极大的方便。为了让电路更加简洁,这次选用的是STC11F04E的1T单片机,其具备4KB的程序存储空间和1KB的EEPROM空间,20引脚的封装设计大大减小了PCB面积。图15.1为电路原理图,制作说明见图15.2、图15.3。

图15.1 电路原理图

图15.2

图15.2 光盘中间的圆孔用来放置温度传感器,上面用金属片导热材料固定,并涂上硅脂,增加导热效果,因为大多数杯子底部是凹进去的,也可以用硬币这种有一定厚度的材料导热。

图15.3

图15.3 杯垫的背面,用双面胶(电工固定线盒那种)粘住电池盒、电路板、流水灯,温度传感器已经粘在电路板下面了

程序设计

这里要作出说明的是,大多数DS18B20程序代码都是为12T单片机设计的,而1T单片机指令速度要比12T单片机快很多,这就导致了通常的DS18B20程序不能直接拿来调用。笔者根据STC的官方资料,通过计算指令外加逻辑分析仪测试的方式,得出的结论是,11系列的1T单片机指令要比12T单片机快6.5倍左右,根据这个数据来修改原始DS18B20程序的延时程序和EEPROM程序,就能保证系统的稳定性。

STC绝大多数芯片都集成了EEPROM,不同型号的擦写程序也是大同小异,使用起来十分方便,无需额外EEPROM的IC,更不需要IC通信程序。因为是内部集成的,程序代码简单,很好理解,节约了设计成本的同时,也给应用者节约了程序设计时间。

STC的官方资料很明确地给出了EEPROM的原始程序,笔者根据自己的理解,为使程序更加简洁,对官方程序作了一些改动,应用了C语言的宏定义,自己也做了对应的库文件,方便实用。本程序是在Keil环境下编译的,使用时要添加我自己写的basic.h、STC11Fxx_IAP.h文件,同时要下载官方的单片机库文件,这样方可保证程序的正确编译。

■ 本制作的相关源文件可以到qq群657864614进行下载。

■介绍一个与众不同的淘宝店铺:首页-数码达人小二-淘宝网,不信你试试?

相关问答

请问, 单片机 说的 1T 指的是什么意思?

1T就表明是晶振跳1下就运行一个指令。简介:指令周期:早期更多的是用来描述某条指令执行需要多少个机械周期,(如自增、自减...解释:T是指令周期,也叫机械周期,...

本人没有用过这种 单片机 ,T是什么意思?

T是指令周期,,一般51内核是12个时钟周期是1个指令周期也就是说晶振跳12下运行一个指令1T就表明是晶振跳1下就运行一个指令比12T的快12倍STC...T是...

stc12系列的 单片机 执行一条指令的时间,是多少?

STC单片机可以设置12T,1T等不同的工作方式,12T和标准51单片机是一样的,一个机器周期为12/Fosc,如果选1T的话一个机器周期应该是1/Fosc.STC单片机可以设置12T,...

51 单片机 中设置定时器模式时,TMOD|=0x01和TMOD=0x01有什么区别?

TMOD是51单片机内的定时器寄存器名称,TimerMode即为定时模式的意思51单片机的定时模式有四种,所以用TMOD=?来选择哪一种,10h表示的是16进制数,也可表示为...

单片机 中AUXR是什么?

AUXR:辅助寄存器(不可位寻址)SFRnameAddressbitB7B6B5B4B3B2B1B0...AUXR:辅助寄存器 (不可位寻址)...

STC12C5A60S2怎么命名?

STC12C5A60S2系列单片机是STC生产的单时钟周期(真正的1T)单片机,增加了AD和PWM功能。其命名规则如下:STC12C5A60S2系列单片机是STC生产的单时钟周期(真正的1T...

采用12mhz晶振,stc15f2k60s2 单片机的 振荡周期和机器周期为多少?

stc15f2k60s2这个单片机性能算是比较强悍的了,这个需要看你使用1T模式还是12T模式了。12T模式指一个机器周期=12个时钟周期1T模式指的是一个机器周期=1个时钟...

stc15w4k和51 单片机 ?

STC15W4K属于51系列单片机,由深圳宏晶公司研制。尽管内核依旧是MCS-51,但STC15是功能扩展型单片机,与诸如AT89基本型单片机相比,它增加了很功能模块,性能也...

请问以8051为内核的 单片机 中哪个公司的哪个型号的功能配置最高?

STC的只适合中国的用户,而且是对51单片机了解不多的用户使用。真正高端的是Silicon的C8051F,其次的Winbond的1T和4T单片机,以及Dallas的1T和4T单片机。STC的...

提高 单片机的 晶振频率,则机械周期()?

12T模式指一个机器周期=12个时钟周期1T模式指的是一个机器周期=1个时钟周期比如对于常用的12M晶振来说:12T模式,一个机器周期为1us1T模式,一个机器周期为1/12u...

猜你喜欢