/*********1毫秒延时程序**********/ void delay1ms(unsigned int t) { unsigned long int i,j; for(i=0;i vu8 UartRx[100],UartTx[100]={0x58}; vu16 RecCnt; vu16 RecTimeCount; vu8 UartRecInit=0,Uart_RecOk=0,UartFlag_RecTime=0; #define Mode_Get 0 #define Mode_See 1 vu8 Mode=Mode_See; void TxdByte(vu8 dat)//串口发送信息,通过查询方式发送一个字符 { //等待发送完毕,必须放在前面 while(USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET); //发送数据 USART_SendData(USART2,dat); } vu8 UartSendCnt=0; void UartSend(void)//CRC及自动加结束符 { vu8 i; USART_Cmd(USART1, ENABLE);//打开串口 for(i=0;i USART_SendData(USART1,(u8)UartTx[i]); } } void PutOK(void) { UartTx[0]='O'; UartTx[1]='K'; UartSendCnt=2; UartSend(); } void PutER(void) { UartTx[0]='E'; UartTx[1]='R'; UartSendCnt=2; UartSend(); } void TIM1_UP_IRQHandler(void) { if(TIM == TIM1) { if(TIM_GetITStatus(TIM, TIM_IT_Update) != RESET) //判断是否为 更新事件 标志位 { TIM_ClearITPendingBit(TIM, TIM_IT_Update); //清除 更新事件 标志 if(UartFlag_RecTime)//从接收第一个有效字节开始,进行一秒的倒计时,如果没收到完整的 //复位接收器,并发送一个字节的报错数据0x88. { if(RecTimeCount>0) RecTimeCount--; else { UartRecInit=0; UartFlag_RecTime=0;//禁止接收倒计时 Uart_RecOk=1; //ES=0; USART_Cmd(USART1, DISABLE); } } } } } 第五章 系统测试 测试时首先检测硬件电路的设计原理是否正确,能否达到预期效果以及实现方法是否简便;其次在焊接电路之后,认真检查电路焊接情况。这里采用分块调试的方法,分为显示模块电路,报警模块电路,读卡模块电路以及控制电路。在每个模块的调试过程中又采用了由局部到整体,由简单到复杂的调试方法。先测试单片机控制模块及其下载电路是否正常工作,然后测试显示模块能否正常工作,接着测试报警模块的电路、读卡模块的电路,最后再把各个模块连成整体。 开机后,作品状态如图5-1所示。 图5-1 作品实物

