基于单片机的牌照自动识别系统设计与实现++++ 下载本文

大连东软信息学院毕业设计(论文)

第5章 系统实现

5.1 环境配置

本系统使用编程软件是美国Keil Software公司出品的KILE,主要是针对以C51为核心的单片机的编程设计。比系统使用C语言进行编程,和汇编语言相比,C语言在功能、结构性、可读性和可维护性都有着明显的优势。

KEIL软件可以提供完整的内核共编程使用,并且可以完成编辑、编译、连接、调试、仿真等整个开发流程。系统通过编译形成hex文件,此文件是单片机可读语言,利用烧写器将HEX文件烧写到单片机中,即可实现单片机在上电的运作。

5.2 功能模块实现

5.2.1 主函数实现

主函数主要系统程序开始的入口,和相应模块控制。主函数得到相应通过AD转化器得到的数字信号,控制相应的模块进行动作。主函数在控制过程中,主要是对是否刮风下雨这个关键参数进行监控。当主函数监控到符合条件的环境立即调用相应函数,进行相应的操作。

void main() { unsigned char status,status2; InitializeSystem( ); iccardcode(); while (1) { }

}

status= PcdRequest(0x26,&card_type);//寻卡 if(status==MI_OK) //寻卡成功 {

status2 = PcdAnticoll(MLastSelectedSnr);//防冲突 if(status2==MI_OK) {

CALL_isr_UART(); //串口发送序列号

BEEP=0; } }

delay(); BEEP=1; delay();

-16-

大连东软信息学院毕业设计(论文)

主函数流程如图5.1所示:

开始初始化否是否有车通过是识别车辆是是否冲突否发送数据结束

图5.1 主函数流程图

5.2.2 初始化函数

初始化函数的主要目的就是让系统的各个部件在预设的状态相运行,将相应的函数进行赋值。其流程主要是包含主流程的运行过程中,此函数为系统启动函数。

void InitializeSystem() {

P0 = 0xFF; P1 = 0xFF; P3 = 0xFF; PCON = 0x80; SCON = 0x70; TMOD = 0x20; TH1 = BAUD_9600; TL1 = TH1;

TR1 = 1; // 波特率发生器 ET1=0; EA=1;

ES = 1; CmdValid=0;

-17-

大连东软信息学院毕业设计(论文)

PcdReset();

PcdAntennaOff(); PcdAntennaOn(); M500PcdConfigISOType( 'A' ); }

5.2.3 中断函数实现

中断函数主要是调用单片机内部定时器资源,根据单片机的信息判断,当条件符合要求引起中断,内部定时器会根据需要从外部T0和T1输入外部脉冲进行计数,计数器的溢出信号作为中断的请求信号。该定时中断处理程序框图如图5.2所示。

开始初始化否是否有中断信号是对应处理函数结束

图5.2定时中断处理流程图

void tim0() interrupt 1 { }

TH0=0XFE;//11.0592MHZ晶振的0.5ms计时 TL0=0X33; if(count

count=count+1;

count=count@;//count=40时 将count清零

-18-

大连东软信息学院毕业设计(论文)

5.4 系统集成与调试

系统调试与所选用的软件结构和程序设计技术有关。本系统采用模块程序设计技术,逐个模块调好以后,再进行系统程序总调试。由于采用了实时多任务操作系统,采用是逐个任务进行调试,下面进一步予以说明。在调试第一个任务时,同时也调试相关的子程序、中断服务程序和操作系统的程序。等逐个任务调试好以后,再使各个任务同时运行,在本次调试中操作系统中没有错误,在单步和断点调试后,进行了连续调试,因为单步运行只能验证程序的正确与否,而不能确定定时精度、CPU的实时响应等问题。等全部完成后,反复运行多次,除了观察稳定性之外,还观察了用户系统的操作是否符合设计要求的操等,部分程序作了适当修正后系统能够正常运行。

-19-