① 基于单片机的液位检测系统的设计与制作
自己做个最小系统板,参照数据手册就可以做了!
/*-----------------------------------------------
超声波测距
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include"1602.h"
#include"delay.h"
sbit Tx = P3^0;
sbit Rx = P3^1; //由于不用外部中断,这两个引脚可以随便接
//sbit INTR1 = P3^3; //红外接口标志
//sbit BUZ = P3^0; //蜂鸣器和led灯报警
bit TimeUp ; //定时器溢出标志位
long Th0 , Tl0 ;
unsigned long time0 = 0 ;
unsigned long Result ;
//unsigned char In_Number = 0;
char code Tab[10]="0123456789";
unsigned char TempData[3];
/*------------------------------------------------
定时器0中断处理
------------------------------------------------*/
void tim0_isr (void) interrupt 1 using 1
{
TimeUp=1; //溢出标志位置高
}
///*------------------------------------------------
// 外部中断2中断处理
//------------------------------------------------*/
//void EX1_ISR (void) interrupt 2 //外部中断2服务函数
//{
// In_Number++;
//}
//void Beep(void) //声光提示
//{
// BUZ = 0;
// DelayMs(150);
// BUZ = 1;
//}
/*------------------------------------------------
外部中断0初始化
------------------------------------------------*/
//void EX1_init (void)
//{
// IT1 = 1; //set INT1 int type (1:Falling only 0:Low level)
// EX1 = 1; //enable INT1 interrupt
// EA = 1; //open global interrupt switch
//}
unsigned int Measure_Work(void)
{
char Delay20us = 0 ;
char RxBack = 1 ;
TMOD = 0x01 ; //定时器工作方式1::16位不重装
Tx = 0 ;
Th0 = 0 ;
Tl0 = 0 ;
TimeUp = 0 ;
EA = 1 ; //开总中断
ET0 = 1 ; //允许定时器0中断
TR0 = 0 ; //关定时器
TH0 = 0 ;
TL0 = 0 ;
Tx = 1 ; //拉高
for (Delay20us=20;Delay20us>0;Delay20us--); //延时20US
Tx = 0 ; //拉低
while(Rx==0); //等待回波引脚变为低电平
TH0 = 0 ;
TL0 = 0 ;
TR0 = 1 ; //开定时器
//使用软件查询方式
while(RxBack)
{
if(Rx==0||TimeUp)
{
TR0 = 0 ;
Th0 = TH0 ;
Tl0 = TL0 ;
TR0 = 1 ;
RxBack = 0 ;
}
}
while(!TimeUp); //等待定时器溢出
time0 = (Th0*256+Tl0); //取出定时器的值
Result = ((unsigned long)334*time0)/2000; //计算距离,结果为mm
if(Result<20||Result>600)
{ Result = 0 ; }
// if(Result>36)
// {
Result = (Result*116)-331 ;
Result = Result/100;
// }
// else Result = Result ;
// Result = Result + 8 ; //探头盲区的补偿
return Result ; //返回测量结果
}
void Number_Work()
{
TempData[2] = Tab[Measure_Work()%100%10];
TempData[1] = Tab[Measure_Work()%100/10];
TempData[0] = Tab[Measure_Work()/100];
}
/*------------------------------------------------
主函数
------------------------------------------------*/
void main(void)
{
// IT1 = 1; //set INT1 int type (1:Falling only 0:Low level)
// EX1 = 1; //enable INT1 interrupt
// EA = 1; //open global interrupt switch
BUZ = 1 ;
LCD_Init(); //初始化液晶
DelayMs(20); //延时有助于稳定
LCD_Clear(); //清屏
// BUZ = 0;
// DelayMs(150);
// BUZ = 1;
LCD_Write_String(0,0,"Ce Ju ");
LCD_Write_String(0,1,"Distance:");
LCD_Write_String(13,1,"mm");
while(1)//主循环
{
Number_Work() ;
LCD_Write_String(10,1,TempData);
DelayMs(20);
}
}
/*-----------------------------------------------
名称:LCD1602
引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK
------------------------------------------------*/
#include "1602.h"
#include "delay.h"
#define CHECK_BUSY
sbit RS = P3^7; //定义端口
sbit RW = P3^4;
sbit EN = P3^5;
#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1
#define DataPort P1
/*------------------------------------------------
判忙函数
------------------------------------------------*/
bit LCD_Check_Busy(void)
{
#ifdef CHECK_BUSY
DataPort= 0xFF;
RS_CLR;
RW_SET;
EN_CLR;
_nop_();
EN_SET;
return (bit)(DataPort & 0x80);
#else
return 0;
#endif
}
/*------------------------------------------------
写入命令函数
----------------- ----------------------------*/
void LCD_Write_Com(unsigned char com)
{
while(LCD_Check_Busy()); //忙则等待
RS_CLR;
RW_CLR;
EN_SET;
DataPort= com;
_nop_();
EN_CLR;
}
/*------------------------------------------------
写入数据函数
------------------------------------------------*/
void LCD_Write_Data(unsigned char Data)
{
while(LCD_Check_Busy()); //忙则等待
RS_SET;
RW_CLR;
EN_SET;
DataPort= Data;
_nop_();
EN_CLR;
}
/*------------------------------------------------
清屏函数
------------------------------------------------*/
void LCD_Clear(void)
{
LCD_Write_Com(0x01);
DelayMs(5);
}
/*------------------------------------------------
写入字符串函数
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x); //表示第一行
}
else
{
LCD_Write_Com(0xC0 + x); //表示第二行
}
while (*s)
{
LCD_Write_Data( *s);
s ++;
}
}
/*------------------------------------------------
写入字符函数
------------------------------------------------*/
/* void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x);
}
else
{
LCD_Write_Com(0xC0 + x);
}
LCD_Write_Data( Data);
}*/
/*------------------------------------------------
初始化函数
------------------------------------------------*/
void LCD_Init(void)
{
LCD_Write_Com(0x38); /*显示模式设置*/
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
LCD_Write_Com(0x08); /*显示关闭*/
LCD_Write_Com(0x01); /*显示清屏*/
LCD_Write_Com(0x06); /*显示光标移动设置*/
DelayMs(5);
LCD_Write_Com(0x0C); /*显示开及光标设置*/
}
#include "delay.h"
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*-----------------------------------------------
名称:LCD1602.h
引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<intrins.h>
#ifndef __1602_H__
#define __1602_H__
bit LCD_Check_Busy(void) ;
void LCD_Write_Com(unsigned char com) ;
void LCD_Write_Data(unsigned char Data) ;
void LCD_Clear(void) ;
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) ;
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) ;
void LCD_Init(void) ;
void Lcd_User_Chr(void);
#endif
② 货车四路监控蓝屏怎么回事
接触问题:检测一下摄像头与前端的接口与后端的录像机接口是否存在接触不良问题,如有重新压接接口,或重新焊接接口。
短路问题:检测一下所有连接线路是否存在轻微短路,用万用表测量一下传输线路是否存在短路,如有分离开就可以了。
摄像头问题:检测一下摄像头,如是其内部电路出了故障,返厂维修或更换。
供电电源问题:检测一下给摄像头供电的电源,用万用表测量一下其电压、功率是否正常,如不正常维修或更换。
监控、预报及处理
1、由车辆运行安全监测中心红外线调度员对超偏载检测装置和TPDS系统检测的货车超偏载信息集中监控。
2、由红外线调度员对超偏载检测装置严重报警、TPDS系统一级报警货车向列车调度员预报:超偏载检测装置严重报警或TPDS系统一级报警时。
红外线调度员立即将报警车次、编组、辆序、车型车号、检测站名称、报警时间、预报类别、预报时间通过录音电话通知列车调度员,同时填写“超偏载货车通知卡”(一式二份)送至列车调度员,双方签字后分别留存。
3、由列车调度员安排列车在运行前方站停车,并通知停车车站进行检查。由车站及时将检查结果电话报告列车调度员并作好记录。
③ 用8051单片机做一交通信号灯控制装置
摘要
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用单片机AT89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
目录
一.设计任务…………………………
二.交通灯的设计程序框图………………
三.交通灯程序的主程序 ………………
四.系统硬件电路的设计……………………
五.原理图………………
六.检测与调试…………………………….
七.总结与体会……………………………….
八.致谢……………………………….
④ 传感器怎样与单片机实现连接和控制
灰度传感器有三条线,VCC,GND,和信号线,他信号线输出的是模拟电压,普通的51只能通过电压比较器LM339来辨别两种不同的颜色,但是如果用增强的51就可以用他自带的AD来测。
只需要吧信号线接到增强的51的有AD功能的端口,启动AD来读他的电压就能辨别不同的颜色了。
有各种传感器它们的连接方法不同的,有的信号输出大可以直接连单片机,如LM35可以直接连到单片机的AD转换口。
有的信号小要进行放大后才能到单片机的AD转换口。如果到单片机没有AD转换口,那么还要经过AD转换才能到单片机。当然传感器自己也有各种连接电路。
(4)铁路超偏载检测装置单片机扩展阅读:
AM2301电容式温湿度传感器+MQ2气体传感器+GP2Y1010AU0F灰尘传感器+HC-SR501人体红外感应模块+光敏电阻传感器模块。
其中人体红外感应模块(开关量)输出端可以直接连接到开发板任何IO端。
其他都是模拟量,如果输出不是数字量,要经过AD转换,不能直接连到单片机开发板上。
⑤ 单片机连续两次检测结果相同
单片机连续两次检测结果相同是正常的。
检测单片机的方法有:
1、查看门狗的复位输出,可能的话在电路板上加一个LED,下拉,这样看起来就更方便;要是看门狗复位信号有,往下。
2,查单片机,看看管脚有没有问题;一般编程器能够将程序写入,说明单片机是好的;最好手头上准备一个验证过的单片机,内部有一个简单的程序,比如,在某个口线上输出1个1秒占空比的方波等,可以使用万用表测量。
3,再查磁片电容,有些瓷片电容质量不行,干脆换了;顺便说一下,换器件最好使用吸锡带,将焊盘内的锡吸干净,再将器件拔出,这样不会损伤焊盘内的过孔;再将新的瓷片电容焊接上去的时候,用万用表量量是好的再焊。
4,检查上面三点都没有问题的话,那么最后只有换晶振了;再换晶振时要切记要买好的晶振,有些品牌质量比较好。
⑥ 如何使用单片机检测导线中的电压大小
只用单片机恐怕不行吧?因为单片机就是控制器运算器 它不是万用表啊 你可以通过添加外围芯片来解决 如果只想知道与基准电压的高低的话 可以找个运放啊 如果想知道具体大小 找个高级点的芯片 能够输出数字信号 送给单片机 再通过单片机 控制数码管或显示屏显示
⑦ 单片机检测控制电路
如果用的场合不是太重要,随便一种单片机就行了.哪种便宜用哪种.
如果是重要的场合,建议用PIC12F508(3.5元八脚)或AVR 的Tiny26
⑧ 电流互感器检测在单片机实例应用
电流互感器P1是一个线圈呀,会产生感应电流的,才叫电流互感器吗。感应电流通过电阻R1就产生交流电压。再用二极管D1整流,就得直流电压,后面的电阻电容都是滤波的,这样,送到单片机P1.1的是模拟电压,电压大小与交流220Ⅴ的电流成正比。
要编程,这应该是STC单片机,P1.1输入模拟电压,利用内部A/D电路转换数字量就行了。所以,编程,一是完成A/D转换,二是把转换的数字量换算成交流电流的大小,三是显示出交流电流值。
⑨ 用单片机检测多个线束通断的方法,线束很长的那种
大型航空设备需要很多控制装置和零部件,内部的导线很多,其内部的导线往往不是在整机安装时一根一根的接的,而是提前制作成线束。有一些线束是很多根线组合在一起的,其两端分别有输入接插端子和输出接插端子。
[0003]这些线束在安装到设备时,需要全检测试输入接插端子和输出接插端子是否连通,因为导线与接插端子的连接可能会接触不良,接插端子本身也会有问题,甚至导线也会因为损伤而导致不通。这种存在隐患的线束一旦安装到航空设备上会对整机的运行造成极大的安全隐患,容易发生航空事故。
[0004]而现有的用于检测线束通断的测试设备一般都需要配置不同类型的两种插接头,以用于连接线束的两端,此方法导致测试装置的内部结构很复杂,容易导致其制造成本的上升。另外,此类测试装置仅适用于批量单一类型的线束,采用依次向引脚发送脉冲电平,再进行判断对比,此种测试方法仅适用于测试点较少的线束,若对于测试点数较多的线束,则测试周期较长,费时费力。
【实用新型内容】
[0005]本实用新型一种线束通断测试装置的目的是提供一种通用设备,可以适配插接测试多种不同类型的线束,测试不同类型的线束时,只需更换与线束对应的接插件模块即可。
[0006]为达成所述目的,本实用新型一种线束通断测试装置采用如下技术方案,包括能测试线束电路通断状态的测试机以及可转接线束的接插件模块,所述测试机的两侧固设有测试插板,其上设置有多孔式插座,所述接插件模块的一侧阵列设置有多个可拆卸的与所述多孔式插座电性联接的针脚,所述接插件模块的另一侧设有连接需测试的所述线束的插接接口,所述接插件模块进一步设有在所述针脚以及所述插接接口之间提供转接的转接电路。
[0007]进一步的,所述多孔式插座上阵列设置有多个测试插口,所述针脚与所述测试插口插接。
[0008]进一步的,所述插接件模块包括电路板,所述针脚与所述插接接口在所述电路板的两侧,所述转接电路设于电路板内。
[0009]进一步的,所述测试机设有用以显示输入、输出结果的LED屏。
[0010]进一步的,所述测试机的上部设有可方便携带的手持部位。
[0011]进一步的,所述测试机上设有提供操作的开始(Start)按键、方向(Direct1n)按键、确认(Confirm)按键,以及显示线束状态的红色及绿色指示灯。
[0012]通过上述技术方案,本实用新型一种线束通断测试装置在实现效果上可大为简化测试机的电器线路设计,便于系统集成。无需在测试机本体上设置大量不同的连接器元件。制造成本大为降低,另一方面,本线束通断测试装置的适用范围可得以广泛拓展,即设计出一套接插件模块,当需检测不同类型的线束时,只需更换与线束相匹配的插件模块即可。对多种接口的线缆,只需额外配置具有相同规格的接插件模块,使一台测试机即可测试具有多种不同类型的线束。
【附图说明】
[0013]图1为本实用新型一种线束通断测试装置的示意图;
[0014]图2为本实用新型一种线束通断测试装置的一种3端子接插件模块电路示意图;
[0015]图3为本实用新型一种线束通断测试装置的一种4端子接插件模块电路示意图;
[0016]图4为本实用新型一种线束通断测试装置的一种6端子接插件模块电路示意图;
[0017]图5为本实用新型一种线束通断测试装置的显示界面。
【具体实施方式】
[0018]下面将结合本实用新型一种线束通断测试装置实施例的附图,对实施例中的技术方案进行清楚、完整地描述。如图1所示,一种线束通断测试装置100,包括能测试多个电路通断状态的测试机10以及可转接多种类型线束的接插件模块20。
[0019]所述的测试机10的两侧设有固设于测试机10两侧的测试插板11,测试插板11为矩形,测试插板11的一侧与测试机10内设置的电路板(未图示)相连通,另一侧暴露出测试机10的外表面并设置有与接插件模块20相匹配的多孔式插座12。该多孔式插座12上阵列设置有多个测试插口 13。
[0020]在测试机10的上部还设有可方便用户携带的手持部位19。
[0021]该线束通断测试装置100还设有与测试插板11的多针式插座12相匹配的,可提供转接多种类型线束功能的接插件模块20。该接插件模块20的一侧为与线束匹配的接插接口 21,另一侧为可插接到多孔式插座12上阵列设置的多个测试插口 13的针脚22,接插件接口 20及针脚22均设置于电路板23上。
[0022]该接插件模块20是个提供转接作用的通用设备,可以将需要测试的配套类型的线束连接在测试机10。在结构上,与线束相连的接插接口 21可以设置为所需的各种标准连接器的接口类型,以提供对多种类型线束的连接服务。其另一侧与多孔式插座12相配合的针脚22则为配置成对应多孔式插座12的具有统一的结构的样式,接插接口 21内的导电端子与针脚22在接插件模块20的内部电性转接。这样,测试不同类型线束时,只需要更换与所测试线束相匹配的接插件模块20即可。
[0023]图2至图4所示分别为某3端子、4端子和6端子接插件模块20电路示意图。实线的方框为假设的接插件模块20的边缘。点画线圆框为假定的接插接口 21的边缘。编号A1至A6的实心圆点为电路板23上与多孔式插座12相插接的针脚22 (针脚22的编号方式也可对应设置为第一列为Al、A2、A3......;第二列为Bl、B2、B3......;第三列为Cl、C2、
C3……等;依次类推)。编号为A至D或1至4等的虚线圆孔为接插接口的端子。实心圆点与虚线圆孔之间连接的实线为设置在电路板23 —侧的转接电路,实心圆点与虚线圆孔之间连接的虚线为设置在电路板另一侧的转接电路。测试机10的两侧的多孔式插座12的测试插口 13的编号方式也可为第一列为A1、A2、A3……;第二列为Bl、B2、B3……;第三列为C1、C2、C3……等;依次类推,与接插件模块20的编号方式相同,接插件模块20与测试机10插接时只需对应编号即可。
[0024]请一并参照图5所示,本实用新型一种线束通断测试装置100的工作方式为,找到与所测试线束相匹配的接插件模块20,插接到测试机10左右侧面的多孔式插座12。插上待检线束。按下位于测试机10右侧的开始(Start)按键18开机,位于测试机10左侧的LED屏14上出现如图所示的界面15,用右侧的方向(Direct1n)按键16在LED屏14上的数字区输入线束编号,按确认(Confirm)按键17进行测试。最后如果线束测试结果所有针脚都正确,则LED屏14上方线束名称(Harness ID)位置的绿色指示灯亮。
[0025]如图5所示,若检测发现错误,则红色指示灯亮,并在IXD屏14显示如图3的错误的针脚号以及错误原因。若针脚22测试正确显示为绿色字体,若有错误则显示红色字体。
[0026]本实用新型一种线束通断测试装置100于测试机10的两侧仅需设置一种单一结构的多孔式插座12。采用一套可分离式的接插件模块20,接插件模块20的一端与线束的接插件匹配,另外一端与测试机10侧面的多孔式插座12匹配。接插件模块20所有针脚22都配满接触件,将线束接插件通过接插件模块20与测试机10实现电气连接。在实现效果上可大为简化测试机10的电器线路设计,便于系统集成。无需在测试机10本体上设置大量不同的连接器元件。制造成本大为降低。
[0027]另一个好处是本测试机10的适用范围可得以广泛拓展,即设计出一套接插件模块20,接插件模块20的一端与线束上接插件匹配,另外一端与测试机10侧面的多孔式插座12插匹配,该接插件模块20所有针脚22都配满接触件,将线束接插件通过接插件模块20与测试机10实现电气连接。当需检测不同类型的线束时,只需更换与线束相匹配的插件模块20即可。对多种接口的线缆,只需额外配置具有相同规格的接插件模块20即可,使一台测试机即可测试具有多种不同类型的线束。
[0028]本实用新型一种线束通断测试装置100可以快速的测试线束的通断,具有模块化的处理与测试线束接插件接口 20,测试效率高,操作简单,成本低。
[0029]以上所述的仅是本实用新型的优选实施方式,应当指出,对于本领域的普通技术人员来说,在不脱离本实用新型创造构思的前提下,还可以做出若干变形和改进,这些都属于本实用新型的保护范围。
【主权项】
1.一种线束通断测试装置,包括能测试线束电路通断状态的测试机以及可转接线束的接插件模块,其特征在于:所述测试机的两侧固设有测试插板,其上设置有多孔式插座,所述接插件模块的一侧阵列设置有多个可拆卸的与所述多孔式插座电性联接的针脚,所述接插件模块的另一侧设有连接需测试的所述线束的插接接口,所述接插件模块进一步设有在所述针脚以及所述插接接口之间提供转接的转接电路。2.如权利要求1所述的线束通断测试装置,其特征在于:所述多孔式插座上阵列设置有多个测试插口,所述针脚与所述测试插口插接。3.如权利要求1所述的线束通断测试装置,其特征在于:所述插接件模块包括电路板,所述针脚与所述插接接口在所述电路板的两侧,所述转接电路设于电路板内。4.如权利要求1所述的线束通断测试装置,其特征在于:所述测试机设有用以显示输入、输出结果的LED屏。5.如权利要求1所述的线束通断测试装置,其特征在于:所述测试机的上部设有可方便携带的手持部位。6.如权利要求1所述的线束通断测试装置,其特征在于:所述测试机上设有提供操作的开始按键、方向按键、确认按键,以及显示线束状态的红色及绿色指示灯。
【专利摘要】一种线束通断测试装置,包括能测试线束电路通断状态的测试机以及可转接线束的接插件模块。所述测试机的两侧固设有测试插板,其上设置有多孔式插座,所述接插件模块的一侧阵列设置有多个可拆卸的与所述多孔式插座电性联接的针脚,所述接插件模块的另一侧设有连接需测试的所述线束的插接接口,所述接插件模块进一步设有在所述针脚以及所述插接接口之间提供转接的转接电路,可大为简化测试机的电器线路设计,便于系统集成,对多种接口的线缆,只需额外配置具有相同规格的接插件模块,使一台测试机即可测试具有多种不同类型的线束。
⑩ 怎样用单片机检测编码器是否准确
在编码器上做好标记,将编码器转一圈,利用单片机的输入捕捉数出编码器返回的脉冲个数,如果和编码器的手册写的一样那就是准确的