传感器与检测技术课程设计
3 软件的设计
3.1主程序工作流程图
按上述工作原理和硬件结构分析可知系统主程序工作流程图如下图所示:
开始 布防按键按下 15秒倒计时开始 倒计时结束 N 检测到有无 信号 Y 紧急按键按下 Y 蜂鸣器报警,发光二级管闪烁 蜂鸣器报警 结束
图3-1主程序工作流程图
8
传感器与检测技术课程设计
3.2 报警判断程序
如果检测的脉冲信号后,表示有人闯入监控区,从而经过单片机内部程序处理后,驱动声光报警电路开始报警,持续报警,然后程序开始循环工作,
Void led_show()_task_2 {
while(1) {
switch(state) { case 0: {
LED_Green = 1; LED_Red = 1; os_wait2(K_TMO,50); break; } case 1: {
LED_Green = 0; LED_Red = 1; os_wait2(K_TMO,50); LED_Green = 1; os_wait2(K_TMO,50); break; } case 2: {
LED_Green = 0; LED_Red = 1;
9
传感器与检测技术课程设计
LED_Yellow = 1; break; } case 3: {
LED_Green = 1; LED_Red = 0; Buzzer = 0;
os_wait2(K_TMO,10); Buzzer = 1;
os_wait2(K_TMO,10); break; }
default :break; } } }
3.3 串口通信
本系统采用异步通信,在异步串行通信时,每一个字符都是作为独立的信息,可以随机出现在数据流中。为确保异步通信的正确性我们在数据的的字符格式中加入了终止位和起始位,就是在数据正式的发送 3.3.1串口程序
void UartInit(void) {
TMOD = 0x21; //定时器1操作模式2:8位自动重载定时器 SCON = 0x50; //8位数据,可变波特率 TL1 = 0xF3; TH1 = 0xF3;
//设定定时初值 //设定定时器重装值 //使能波特率倍速位SMOD
10
//2400bps@12.000MHz 实际 4800bps
PCON |= 0x80;
传感器与检测技术课程设计
TF0 = 0; //清除TF0标志
EA = 1; //开总中断 ES = 1; //串口中断 ET1 = 0;
//禁止定时器1中断 //启动定时器1
TR1 = 1; }
char putchar(unsigned char dat) { TI=0; SBUF=dat; while(!TI); TI=0; return SBUF; }
11
传感器与检测技术课程设计
4 调试
4.1 Keil编译器软件简介
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。
图4-1 C51工具包整体结构图
Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,如图3.1所示,其中uVision与Ishell分别是C51 for Windows和for DOS的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE 本身或其它编辑器编辑C 或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM 中。
4.2 使用Keil软件建立一个工程
12