资源描述
2013年全国大学生电子设计竞赛
简易照明线路探测仪(k题)
【高职高专组】
2013年9月7日
2
摘 要
本简易照明线路探测仪,用五合板作为方格底板,利用超声波和电磁感应对所制作电路板块进行检测,利用超声波测距原理对方格板进行坐标检测与确定,以FYD12864—0402液晶作为显示器件,界面友好。以单片机为核心完成对系统硬件和软件的设计。利用电磁感应装置检测方格板背面电缆线的走向。当检测到方格后有电缆线时,蜂鸣器报警示意,检测数据送给单片机处理、显示。
关键词:STC89C52单片机,FYD12864—0402液晶,声波测距,电磁感应
目 录
1系统方案 1
1.1 方案描述 1
1.2 元器件的论证与选择 1
1.2.1控制系统的论证与选择 1
1.2.2 显示模块的论证与选择 3
1.2.3 检测模块的论证与选择 4
1.2.4 按键模块的论证与选择 4
1.2.5 蜂鸣模块的论证与选择 4
2 系统理论分析与计算 5
2.1 传感器 6
2.2 方格坐标的分析与计算 6
3电路与程序设计 8
3.1 电路设计 8
3.1.1 系统总框图及电路原理图 8
3.1.2控制系统子系统原理图 9
3.1.3 键盘模块子系统原理图 9
3.1.4 检测模块子系统原理图 19
3.1.5 显示模块子系统原理图 10
3.1.6 蜂鸣模块子系统原理图 11
3.2 程序设计 12
3.2.1程序功能描述与设计思路 12
3.2.2 程序流程图 12
4 测试方案与测试结果 15
4.2 测试方案 15
4.2 测试条件与仪器 15
4.2 测试结果与分析 15
4.3.1 测试结果 15
4.3.2 测试分析与结论 15
附录1:电路原理图 17
附录2:源程序 18
III
1系统方案
1.1 方案描述
本系统主要由控制系统模块、检测模块、显示模块、按键模块、蜂鸣模块组成,下面分别论证这几个模块的选择。
1.2元器件的论证与选择
1.2.1 控制系统的论证与选择
方案一:传统51单片机,解密容易,一般功能也有,, 但AD、eeprom等功能要靠扩展,增加硬件和软件负担。
方案二:STC89C52单片机,该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
①增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.
②工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)
③工作频率范围:0~40MHz,相当于普通 8051 的0~80MHz,实际工作频率可达 48MHz
④用户应用程序空间为8K 字节
⑤片上集成 512 字节RAM
⑥通用 I/O 口(32 个) 复位后为:P1/P2/P3/P4 是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻
⑦ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
⑧具有EEPROM功能
⑨具有看门狗功能
⑩共 3个16位定时器/计数器。即定时器 T0、T1、T2
⑪外部中断4路,下降沿中断或低电平触发电路,Power Down 模式可由外部中断低电平触发中断方式唤醒
⑫通用异步串行口(UART),还可用定时器软件实现多个UART
⑬工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)
⑭PDIP 封装
STC89C52单片机最小系统如图下图所示。
复位电路设计
STC89C52已经内置了上电复位设计,并且可以通过编程熔丝位控制复位的额外时间,因此我们只要在单片机外部的复位线路上电时,直接接电阻到VCC上就可以了,当单片机开始工作时,其复位引脚变为低电平,触发芯片复位。
晶振电路设计
从电路图可以看到,石英晶体和电容组成了谐振回路,该谐振回路接在STC89C52的引脚XTAL1和XTAL2上,并配合片内的OSC振荡电路构成的振荡源作为系统的时钟源。
在实际应用中,如果对频率精度要求不高,可以使用内部的RC振荡电路,该振荡电路可以产生1/2/4/8MHz的振荡频率。
综合以上两种方案,方案二符合任务要求,故选择方案二。 1.2.2显示模块的论证与选择
显示模块需要有良好的显示效果,易于读数,便于直接读取数据。
方案一:采用LED数码管显示,虽然能在低电压、小电流条件下驱动发光显示,但不能显示汉字,不利于多种显示,从而限制了整个形同的人性化。
方案二:采用FYD12864—0402液晶,FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字也可完成图形显示低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
FYD12864—0402实物图及方框图如下
综合以上两种方案,方案二符合任务要求,故选择液晶显示。
1.2.3检测模块的论证与选择
(1)传感器的选择
方案一:玻璃微熔传感器小量程测量难度较大,一般测量范围在100kPa以上,因此可在所有量程在100kPa以上、已使用扩散硅压力传感器场所替代传统扩散硅压力传感器,在要求高压、高精度测量场所的优势更加明显。
方案二:TCRT5000光电传感器是基于TCRT5000红外光电传感器设计的一款红外反射式光电开关。传感器采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,输出信号经施密特电路整形,稳定可靠。
方案三:采用超声波传感,超声波发生器内部结构有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。
综合以上三种方案,方案三操作更方便准确。
(2)电流检测仪器选择
感应式试电笔根据电场感应的原理进行工作,当试电笔靠近220V电源线2-5cm时即可发出声光指示。本电路在离电源线2-5cm处即可测试是否带电,具有良好示警性与安全性。使用更加方便。
工作原理图如下图所示:
当电路处于常态时,Q1因栅极悬空形成漏电流,Q2基极无电流流入,Q3处于熄灭状态。当感应板靠近220V或以上的交变电源时,因电源在四周将形成一交变电场,感应板上将感应出相应交变电压加到Q1栅极,感应板上感应电压为负时,Q1截止,V电压经过R1、Q4加至Q2基极,Q2导通,Q3发光。
1.2.4 按键模块的论证与选择
采用两个按键串行联接方便简单,节省资源,极大地提高了操作的灵活性可行性。选用两个按键串联起来,按键S1按下后,定时器开始计时同时检测仪开始对方格板进行扫描。当扫描结束后,按下按键S2,定时器停止计时。
1.2.5 蜂鸣模块的论证与选择
采用HC-SR04超声波测距模块,其可提供2cm-400cm 的非接触式距离感测功能。本模块性能稳定,测度距离精确。能和国外的SRF05,SRF02等超声波测距模块相媲美。模块高精度盲区(2cm)超近
2系统理论分析与计算
2.1 传感器
采用超声波模块和电磁感应模块,利用超声波测距原理来确定方格坐标位置,利用电磁感应原理来检测电缆的走向。
2.2 方格坐标的分析与计算
将方格板建立坐标系,横向为X轴,纵向为Y轴,利用超声波测量,测量时超声波0沿着X轴方向移动,同时超声波1沿着Y轴向地面发出出信号。所得数据除以15。以X轴为例:当超声波所测距离为25时,即显示方格2,当超声波所测距离为35时,即显示方格3(在商的基础上加1显示方格号)。同理可得Y轴上的方格号,方格号为(X/15+1)+Y/15*7。依此可得到方格号。
在超声波测距的同时利用传感器检测电流,当检测到电流时(外部中断),蜂鸣器响起,并在寄存器中标记该方格号。最后将所有数据取出显示。超声波工作原理图如下图所示。
图2-2-1 发射电路
图2-2-2 接收电路
3电路与程序设计
3.1电路的设计
3.1.1系统总体框图及电路原理图
1、系统总体框图如图3-1所示,液晶显示经光电传感器扫描,送单片机处理,由液晶显示相应的倾内容。
蜂鸣示意
液晶显示
MCU
光电传感模块
按键模块
图3-1 系统总体框图
2、电路原理图(图3-2),见附录1
3.1.2 控制系统子系统电路原理图
控制芯片采用STC89C52,它一种低功耗、高性能CMOS8位微控制器。STC89C52拥有灵巧的8 位CPU ,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
控制系统子电路原理图,如图3-1-2所示。
图3-1-2 控制系统子电路原理图
3.1.3 键盘子系统电路原理图
键盘子系统电路图如图3-1-3所示。
图3-1-3 键盘子系统电路图
3.1.4 检测子系统电路原理图
传感器数据采集原理图如图所示,采用HC-SR04超声波传感,将模拟信号转换成数字信号,送给单片机判断。当HC-SR04超声波传感发出的声波被反射接收到并且感应试电笔(探头)同时感应到该方格背面有电流,即显示对应的方格号、灯名与所用时间。
检测电路原理图如图3-1-4所示
图3-1-4 检测电路原理图
3.1.5 显示模块子系统电路原理图
根据检测仪检测到的信号,通过AD转换,通过单片机传送到液晶显示屏。显示子系统电路图如图3-1-5所示
图3-1-5 显示子系统电路图
3.1.6 蜂鸣模块子系统电路原理图
蜂鸣模块子系统电路如图3-1-6
图3-1-6 蜂鸣模块子系统电路
3.2程序的设计
3.2.1程序功能描述与设计思路
① 利用超声波测距原理确定方格坐标,根据电磁感应原理检测带点电缆线的分布,同时以蜂鸣器示意。通过数据处理送给液晶显示。
② 所有初始化,按下开始按键,开始对方格板扫描并计时,同时在液晶显示时间及方格号。扫描到带点电缆时蜂鸣器响,显示对应的方格号。
3.2.2程序流程图
1) 程序主流程图如图3-2-2
图3-2-2 程序主流程图
2) 按键子程序流程图如图a 。
图a 按键子程序流程图
3) 检测子程序流程图如图b 。
图b 检测子程序流程图
4) 显示子程序流程图如图c 。
图c 显示子程序流程图如图
5) 报警子程序流程图如图d 。
N
Y
等待
报警
外部中断是否产生
初始化
开始
图d 报警子程序流程图
4 测试方案与测试结果
4.1测试方案
4.1.1硬件测试
硬件采用模块设计,分为显示模块、按键模块、检测模块、蜂鸣模块。测试分为模块的独立测试和模块组合测试。
4.1.2软件仿真测试
软件用keil调试联合proteus仿真,完成对软件的调试
4.1.3硬件软件联调
将调好的程序下载在单片机中,用光电传感器和感应式试电笔不断检测,并调试程序,完成软件和硬件的联合调试。
4.2 测试条件与仪器
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:指针式万用表,秒表,刻度尺
4.3 测试结果及分析
4.3.1测试结果(数据)
测试结果如下表:
电缆所在方格
7
6
13
20
21
28
35
34
41
40
47
测量显示值
7
6
13
20
21
28
25
34
41
40
47
4.3.2测试分析与结论
根据上述测试数据,方格号的测量值和显示值相吻合,电缆线布置的测量值和显示值相吻合。而且都在规定时间内完成。由此可以得出以下结论:
1、 关闭60W白炽灯,只能检测到11W节能灯电缆走向,并蜂鸣示意。
2、 所有操作均在两分钟内完成。
3、 能够回放显示带点电缆位置的方格号。
综上所述,本设计达到设计要求。 附录一:电路原理图
附录二:源程序
2.4
RW EQU P2.5
E EQU P2.6
PSB EQU P2.1
S0 EQU P3.0 //开始键
S1 EQU P3.1 //停止键
COM EQU 20H
DAT EQU 21H
TX0 BIT P1.2 //发送端
RX0 BIT P1.3 //接收端
//超声波0测X轴坐标
TX1 BIT P1.4 //发送端
RX1 BIT P1.5 //接收端
//超声波1测Y轴坐标
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP TIM1S //定时时间
ORG 001BH
LJMP ZDT1 //超声波处理
ORG 0013H
LJMP DXJC //电线检测
ORG 0030H
MAIN: MOV SP,#78H
MOV TMOD,#11H
MOV TH0,#0D8H
MOV TL0,#0F0H
MOV TH1,#0FFH
MOV TL1,#0C5H
SETB EA
SETB ET0
SETB ET1
SETB TR0
SETB EX1
SETB IT1
MOV 22H,#100 //定时10毫秒,循环100次,即为1秒
MOV 23H,#0 //X
MOV 24H,#0 //Y
MOV 25H,#0 //距离S
MOV 2CH,#0H //方格号十位
MOV 2DH,#0H //方格号个位
MOV 2EH,#0H
MOV 2FH,#0H
MOV R0,#30H //方格寄存器
MOV R7,#64
M1: MOV @R0,#0AH
INC R0
DJNZ R7,M1 //30H~6FH送0AH显示空格
MAIN1: LCALL CHAO_SHENGB0
LCALL CHAO_SHENGB1
LCALL FGCL //方格处理,把坐标转化为方格号
LCALL BA0_JING
LCALL AN_JIAN //调用按键
LCALL DISP //调用显示
LJMP MAIN1
BA0_JING: JB P3.3,BJ1
CLR P2.0
LJMP BJ_END
BJ1: SETB P2.0
BJ_END: RET
CHAO_SHENGB0: //X轴坐标
SETB RX0
CLR TR1
MOV 23H,#0 //超声波0X距离寄存器
LCALL Pulse0
SETB TR1
LCALL PCGR
TZ2:JNB RX0,TZ1
LJMP TZ2
TZ1:
CLR TR1
MOV 23H,25H
MOV 25H,#0
LCALL JI_SUAN0
RET
CHAO_SHENGB1: //Y轴坐标
SETB RX1
CLR TR1
MOV 24H,#0 //超声波1Y距离寄存器
LCALL Pulse1
SETB TR1
LCALL PCGR
TZ22:JNB RX1,TZ11
LJMP TZ22
TZ11:
CLR TR1
MOV 24H,25H
MOV 25H,#0
LCALL JI_SUAN1
RET
Pulse0: MOV R6,#10
D2: MOV R5,#9
CPL TX0
DJNZ R5,$
DJNZ R6,D2
RET
Pulse1: MOV R6,#10
D22: MOV R5,#9
CPL TX1
DJNZ R5,$
DJNZ R6,D22
RET
PCGR: MOV R6,#1
D3: MOV R5,#160
DJNZ R5,$
DJNZ R6,D3
RET
JI_SUAN0: MOV A,23H
ADD A,#2
MOV 23H,A
RET
JI_SUAN1: MOV A,24H
ADD A,#2
MOV 24H,A
RET
//========================================方格号处理
FGCL:
MOV A,23H
MOV B,#15
DIV AB
ADD A,#1
MOV 2FH,A
MOV A,24H
MOV B,#15
DIV AB
MOV B,#7
MUL AB
ADD A,2FH
MOV 2EH,A
MOV B,#10
DIV AB
MOV 2DH,A
MOV 2CH,B
RET
//=============================================超声波测得距离
ZDT1:
// MOV 76H,A
PUSH 0E0H
PUSH PSW
MOV TH1,#0FFH
MOV TL1,#0C5H
INC 25H
POP PSW
POP 0E0H
// MOV A,76H
RETI
TIM_6MS: MOV R6,#5
D4: MOV R5,#200
DJNZ R5,$
DJNZ R6,D4
RET
//===============================================================定时1秒
TIM1S: // MOV 77H,A
PUSH 0E0H
PUSH PSW
MOV TH0, #0D8H
MOV TL0, #0F0H
DJNZ 22H,EXIT
MOV 22H,#100
INC 28H
MOV A,28H
CJNE A,#0AH,EXIT
MOV 28H,#00H
INC 29H
MOV A,29H
CJNE A,#6,EXIT
MOV 29H,#00H
INC 2AH
MOV A,2AH
CJNE A,#0Ah,EXIT
MOV 2AH,#0
INC 2BH
MOV A,2BH
CJNE A,#5,EXIT
MOV 2BH,#5
MOV 2AH,#9
MOV 29H,#5
MOV 28H,#9
EXIT:
POP PSW
POP 0E0H
// MOV A,77H
RETI
//=============================================================电线检测
DXJC: // MOV 75H,A
// PUSH 0E0H
// PUSH PSW
MOV @R0,2DH
INC R0
MOV @R0,2CH
INC R0
INC R0
// POP PSW
// POP 0E0H
// MOV A,75H
RETI
//=============================================================按键处理部分
AN_JIAN:
JB TR0,AJ1 //开始之后再按开始键就没用
JB S0,AJ1 //S0为开始键
LCALL FAN //延时防抖
JNB S0,$
CPL P1.0
SETB TR0
SETB EA
AJ1:
JNB TR0,AJ_END //停止之后再按停止键就没用
JB S1,AJ_END //S1停止键
LCALL FAN //延时防抖
JNB S1,$
CPL P1.1
CLR TR0
MOV 28H,#0
MOV 29H,#0
MOV 2AH,#0
MOV 2BH,#0
CLR EA
AJ_END:
RET//I
//延时防抖
FAN: MOV R6,#40
F1: MOV R5,#100
F2: DJNZ R5,F2
DJNZ R6,F1
RET
//===============================================================12864液晶显示
DISP: SETB RS1
CLR PSB
LCALL DELAY
SETB PSB ;将 PSB 置 1,通信方式为 8 位数据并口
LCALL DELAY
MOV COM,#30H ;功能设置---8BIT 控制界面,基本指令集
ACALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV COM,#0CH ;显示打开,光标关,反白显示关
ACALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV COM,#01H ;清除屏幕显示,将 DDRAM 的地址计数器归零
ACALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV COM,#06H ;DDRAM 的地址计数器(AC)加 1
ACALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
;**********************************以上是模块初始化
JNB TR0,DISP_FG1
DISPLAYB: //节能灯方格号(文字)
MOV R2,#14 ;DDRAM 地址记数器设为最大值
MOV R0,#00H
MOV COM,#80H ;DD RAM 地址-----0000000 第1行第一个地址
ACALL WRI
MOV DPTR,#TAB
DISPB: MOV A,R0
MOVC A,@A+DPTR
MOV DAT,A
ACALL WRD ;写入数据
MOV A,R0
ADD A,#1
MOV R0,A
DJNZ R2,DISPB
LCALL DELAY2 ;1S 延时子程序
DISPLAYA: //方格号(数字)
MOV R2,#2
MOV R0,#2DH
MOV COM,#87H ;DD RAM 地址-----0000000 第1行第7个地址
ACALL WRI
MOV DPTR,#TAB2
DISPA: MOV A,@R0
MOVC A,@A+DPTR
MOV DAT,A
ACALL WRD
DEC R0
DJNZ R2,DISPA
LCALL DELAY2
DISP_FG1:
JNB TR0,DISP_FG
DISPLAYC: // 用时
MOV R2,#6
MOV R0,#00H
MOV COM,#88H ;DD RAM 地址-----0000000 第2行第一个地址
ACALL WRI
MOV DPTR,#TAB1
DISPC: MOV A,R0
MOVC A,@A+DPTR
MOV DAT,A
ACALL WRD
INC R0
DJNZ R2,DISPC
LCALL DELAY2
DISPLAYD: //分钟(数字)
MOV R2,#2
MOV R0,#2BH
MOV COM,#8CH ;DD RAM 地址-----0000000 第2行第3个地址
ACALL WRI
MOV DPTR,#TAB2
DISPD: MOV A,@R0
MOVC A,@A+DPTR
MOV DAT,A
ACALL WRD
DEC R0
DJNZ R2,DISPD
LCALL DELAY2
DISPLAYE: //分
MOV R2,#2
MOV R0,#0H
MOV COM,#8DH ;DD RAM 地址-----0000000 第2行第4个地址
ACALL WRI
MOV DPTR,#TAB3
DISPE: MOV A,R0
MOVC A,@A+DPTR
MOV DAT,A
ACALL WRD
INC R0
DJNZ R2,DISPE
LCALL DELAY2
DISPLAYF: // 秒钟(数字)
MOV R2,#2
MOV R0,#29H
MOV COM,#8EH // DD RAM 地址-----0000000 第2行第5个地址
ACALL WRI
MOV DPTR,#TAB2
DISPF: MOV A,@R0
MOVC A,@A+DPTR
MOV DAT,A
ACALL WRD
DEC R0
DJNZ R2,DISPF
LCALL DELAY2
DISPLAYG: //秒
MOV R2,#2
MOV R0,#0H
MOV COM,#8FH ;DD RAM 地址-----0000000 第2行第6个地址
ACALL WRI
MOV DPTR,#TAB4
DISPG: MOV A,R0
MOVC A,@A+DPTR
MOV DAT,A
ACALL WRD
INC R0
DJNZ R2,DISPG
LCALL DELAY2
LJMP XIAN_END
//===========================================================方格显示区
DISP_FG:
DISPLAYJ: //方格显示
MOV R2,#64
MOV R0,#30H
MOV COM,#80H ;DD RAM 地址-----0000000 第三行第一个地址
ACALL WRI
MOV DPTR,#TAB2
DISPJ: MOV A,@R0
MOVC A,@A+DPTR
MOV DAT,A
ACALL WRD
INC R0
DJNZ R2,DISPJ
LCALL DELAY1
XIAN_END:
CLR RS1
RET
;*******************************************
WRI: PUSH ACC
CLR RS
SETB RW
WRI1: MOV P0,#0FFH
SETB E
MOV A,P0
CLR E
JB ACC.7,WRI1
CLR RS
CLR RW
MOV P0,COM
SETB E
NOP
NOP
CLR E
POP ACC
RET
;******************************************以上是写指令子程序
WRD: PUSH ACC
CLR RS
SETB RW
WRD1: MOV P0,#0FFH
SETB E
MOV A,P0
CLR E
JB ACC.7,WRD1
SETB RS
CLR RW
MOV P0,DAT
SETB E
NOP
NOP
CLR E
POP ACC
RET
;******************************************以上是写数据子程序
DELAY: MOV R7,#0FFH ;06D
DELAY4: MOV R6,#00FH ;07D
LOOP2: DJNZ R6,LOOP2
DJNZ R7,DELAY4
RET
DELAY1: MOV R4,#08H
DELAY11:MOV R7,#0FFH ;06D
DELAY12:MOV R6,#0FFH ;07D
DJNZ R6,$
DJNZ R7,DELAY12
DJNZ R4,DELAY11
RET
DELAY2: MOV R5,#0FFH
DELAY21:MOV R6,#04H
DJNZ R6,$
DJNZ R5,DELAY21
RET
;******************************************以上是延时子程序
TAB: DB '节能灯 方格号 '
TAB1: DB '用时 '
TAB3: DB '分 '
TAB4: DB '秒 '
TAB2: DB '0123456789 '
END
27
展开阅读全文