红外遥控密码锁设计方案 联系客服

发布时间 : 星期四 文章红外遥控密码锁设计方案更新完毕开始阅读441d2fc06a0203d8ce2f0066f5335a8103d26612

4.2 本系统调试

本系统软件部分是用C语言开发的,用C语言开发单片机有如下的优势 C语言是一种编译型的结构化程序设计语言,具有简单的语法结构和强大的处理功能,具有运行速度快、编译效率高,移植性好和可读性强等多种优点,可以实现对系统便件的直接操作。用C语言来编写目标系统软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而开发出大规模、高性能的应用系统。其优势如下:

(1)可以大幅度加快开发进度,程序量越大,用C语言就越有优势。 (2)无需精通单片机指令集和具体的硬件,也能够编出符合硬件实际专业水平的程序。

(3)可以实现软件的结构化编程,使得软件的逻辑结构变得清晰、有条理、便于开发小组计划任务、分工合作。源程序的可读性和可维护性都很好。

(4)省去了人工分配单片机资源的工作,在汇编语言中要为每一个子程序分配单片机的资源。在使用C语言后,只要在代码中申明一下变量的类型,编译器就会自动分配相关资源,根本不需要人工干预,从而有效地避免了人工分配单片机资源的差错。

(5)汇编语言的可移植性很差,而C语言只要将一些与硬件相关的代码作适当的修改,就可以方便地移植到其它种类的单片机上。

(6)C语言提供auto、static、flash等存储类型,针对单片机的程序存储空间、数据存储空间及EEPROM空间自动为变量合理地分配空间,而且C语言提供复杂的数据类型,极增强了程序处理能力和灵活性。C编译器能够自动实现中断服务程序的现场保护和恢复,并且提供常用的标准函数库,供用户使用。并且C编译器能自动生成一些硬件的初始化代码。

(7)对于一些复杂系统的开发,可以通过移植(或C编译器提供)的实时操作系统来实现。

正由于C语言在系统开发中的优势,这次设计的所有程序设计都将采用C语言编写。

5.总结

本次课程设计我们组做的是红外遥控密码锁,采用了51单片机、红外接收模块和液晶显示模块。利用红外遥控器输入密码的正确与否控制密码锁的开关。 这次课程设计中,我共遇到了三个问题。一个是测试时液晶屏亮度不够,后来查阅各种相关资料和其他组的电路图,发现是液晶屏的正负极没有与电源单独相连。第二个是液晶屏的对比度很低,后来发现用华东变阻器的1、3端分别连接电源正负极即可调整对比度。第三个问题是临场答辩前,电路板跳线脱落,

后来是同组的国栋同学帮忙借来电烙铁和焊锡丝,才当场重新焊接好,非常感他。 通过这次实验,我最大的感悟是,只有通过自己思考,自己排版,自己动手,才能真正掌握电子的知识。推广开来,即是“实践出真知”。 另外老师提出了很多实用性建议,比如加入电机模拟锁的开关而非仅仅液晶显示等,让我知道一切应该归于运用。还有就是要自己努力思考而非只是借助网上固有的资料来学习和做成成品,感老师的教诲。

\\

参考文献

[1]. 玻若 . 红外系统. 普通高等教育兵工类规划教材 1995

[2]. 郭天祥. 新概念51单片机C语言教程—入门、提高、开发、拓展全攻略[M]. 工业, 2009.1

[3]. 阿奇. Visual C++实用教程[M]. :电子工业, 2010

[4]. 王宜怀.书奎等. 嵌入式技术基础与实践[M]. :清华大学,2011

:电子

附录 系统部分程序

/***************************************************** ----------------------------------------------------

文件:main.c

---------------------------------------------------- *****************************************************/

//红外密码锁 开启后直接输入密码即可 1602显示

#include

#include #include

#define uchar unsigned char #define uint unsigned int

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

void delay(uchar x); //延时 X*0.14Ms void delay1(int ms);

sbit IRIN = P3^2; //红外接收器控制端口 sbit LCD_RS = P2^7; //1602控制端口 sbit LCD_RW = P2^6; //1602控制端口 sbit LCD_EN = P2^5; //1602控制端口

uchar i; uchar key; uchar flag; uchar num[7]; uchar IRCOM[7];

uchar code cdis1[] = {%uchar code cdis2[] = {%uchar code dis1[] = {\

uchar code secret[]= {\密码 uchar code enter[] = {%uchar code error[] = {%uchar code again[] = {\ /*

*检测LCD忙状态,busy为1时忙,为0时闲,此时可以写指令与数据 */

bit lcd_busy()

{ bit busy; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP();

busy = (bit)(P0&0x80); LCD_EN = 0; return(busy); }