基于89c51电子密码锁设计附程序(编辑修改稿)内容摘要:
} irpro_ok=1。 //处理完毕标志位置 1 } 第 14 页 共 32 页 (6)器件采购 元件名称 数量 元件名称 数量 STC89C52RC芯片 一个 12MHZ晶振 一个 LCD显示屏 一个 二极管 一个 三极管 两个 按键 十七个 LED 一个 103滑动变阻器 一个 蜂鸣器 一个 SRA06VDC继电器 一个 AT24C02芯片 一个 红外遥控器 一个 红外接收头 一个 导线 若干 六、系统 调试: 一)、硬件调试: 电子密码锁演示电路的调试:此电路板由多个部分组成,接线繁琐,极易出错。 检查按键无故障、导线无断线、连线接头无互相搭联后可先写一个软件调试程序,依次检查按键键盘,继电器,蜂鸣器, LCD1602 液晶屏和红外遥控的控制程序;若未正常工作,则可能是连线接错。 根据每个模块的工作情况依次查找直到电路正常工作为止。 二)、软件调试: 本系统的软件系统很大,全部采用 C语言编写,除语法与逻辑差错外, 当确认程序没问题时,直接下载到单片机仿真调试。 采取自下到上的方法,单独调好每一个模块,最后完成一个完整的系统调试。 在整个程序的编写过程中,研究每个子程序是否好使,我是通过 Keil C 和proteus 两个软件来实现的。 Proteus 是一个单片机的仿真软件,通过它可以不用连接硬件就能检查程序是否好使。 Keil C 则帮助我检查程序是否存在语法错误之类的问题,还可以生成 hex 文件,供 proteus 软件仿真使用。 通过这两个软件,我把整个的程序调试正确。 最后交通灯的大部分功能都已经基本实现,所以进行编程调试了, 硬 件和软件都能按设计要求实行个功能。 七、 课程设计总结 电子设计综合技术课程是在学习模电、数电、单片机等课程基础上所设计的一门提高我们对理论应用、设计能力的一门综合实践课程,寓教学于实物实践,使我们可以充分发挥自己的创新能力、动手能力,提高我们对所学专业的认识。 我们首先从设计仿真着手,使用仿真软件进行仿真,进行电路的排布,编写程序,查找搜集资料,通过在图书馆以及在网络上的查询,找到与设计有关电路以及 C语言与单片机仿真的资料,熟悉并理解各单元电路、元器件的工作原理和基本应用及各集成块的引脚图和各引脚 的逻辑功能,学习知识与软件,掌握 C语言与单片机串行通信技术的基本原理。 再对知识归纳总结、分析整理。 运用所学知识构建电路图,使用虚拟串口对硬件电路进行仿真调试。 接下来,我们采购元件,进行实物焊接,由于在大二已经进行电子工艺实习课程的训练,焊接实物比较顺利地实现,但继电器开锁部分不能实现功能,经过我们向老师、学长请教,组员查找资料改进电路,多次对实物调试,最终实物功能实现了仿真要求。 第 15 页 共 32 页 通过这次的电子设计课程,让我们认识到了一些自己的不足和缺点。 使我们找到了与他人的差距。 这些对我们以后的学习有着很大的帮助,我们很 高兴在这次的设计中让我们学习到更多的知识。 在这次电子设计的电路设计和制作的时候,我们发现 Proteus 并不是很好学习的,特别是要做一个可以使自己满意的电路更是很难了。 在电路的设计过程程中要求我们要考虑到整个电路设计方案的完整性和合理性。 而在做实物的时候,既要了解自己选择的电子器件对电压和电流要求的同时,还要考虑到这个参数的设定对自己设计方案其他方面的影响。 如果只是这一个元件参数的设计还是比较好做的,但是整个电路的元件参数总体设计下来可就不是那么的容易了,所以在电子设计过程中,我们总结一定要胆大心细:对电子产 品功能、电路实现要敢于创新,在实施计划时要细致谨慎,只有这样,才能提高团队以及个人的创新实践能力。 在整个设计中,组员分工协作非常重要,团队进行任务要有规划,要充分发挥每组员的长处,从而调动个人的积极性和提高团队的效率。 我们的团队需要一个在关键时刻能够果断决策的带头人,同时整个团队的每个成员都要学着做一个聆听者,虚心接受组员的意见与建议,这样,才能让整个团队在有限的时间内创造出无限的价值。 最后,感谢老师和同学在我们的课程设计中所提供的悉心指导,此次长达将近一学期的课程设计的点点滴滴,电路焊接失误的苦闷,一 个个小功能实现时的喜悦,让我们终生难以忘记,我们一定会在未来的学习、工作中,继续保持这种认真的态度,继续努力,期待未来遇见更好的自己。 八、 参考文献: [1] 冯育长 . 单片机系统设计与实例分析 [M],西安:西安电子科技大学出版社, 2020 [2] 付家才 . 单片机控制工程实践技术 [M],北京:化学工业出版社, 2020 [3] 李晓静 . 液晶显示控制器与单片机的接口及编程 [J],电子技术, 2020 [4] 潘新民,王艳芳 . 微型计算机控制技术 [M],北京:电子工业出版社,2020 [5] 朱清慧,张凤蕊 等 . Proteus 教程 —— 电子线路设计、制版与仿真 [M],北京:清华大学出版社, 2020 [6] 徐科军 . 传感器与检测技术 [M],北京:电子工业出版社, 2020 第 16 页 共 32 页 附录: Proteus图 第 17 页 共 32 页 附录:程序 include include include define uint unsigned int define uchar unsigned char // sbit BEEP=P3^0。 //蜂鸣器 sbit JDQ=P3^1。 sbit rs = P3^5。 //1602 液晶 sbit wela = P3^6。 //1602 液晶 sbit lcden = P3^7。 define C02_write 0xa0 //写 define C02_read 0xa1 //读 sbit SCL=P3^4。 //时钟 sbit SDA_EEPROM=P3^3。 //数 据 bit ack。 bit dd。 uchar IIC_Password[8]=。 //IIC 密码 uchar DSY_BUFFER[8]=。 //显示缓冲 uchar UserPassword[8]=。 //使用者密码 uchar TwoPassword[8]=。 //使用者密码 uchar OnePassword[8]=。 //使用者密码 uchar KeyNo =16。 // sbit IR=P3^2。 //红外接口标志 char code Tab[16]=0123456789ABCDEF。 unsigned char irtime。 //红外用全局变量 bit irpro_ok,irok。 unsigned char IRcord[4]。 unsigned char irdata[33]。 void Ir_work(void)。 void Ircordpro(void)。 //1602 void delayms(uint z) //延时 N ms { uint x,y。 for(x=z。 x0。 x) for(y=120。 y0。 y)。 第 18 页 共 32 页 } void write_(uchar ) //1602 液晶写指令 { rs=0。 lcden=0。 P1=。 delayms(1)。 lcden=1。 delayms(2)。 lcden=0。 } void write_date(uchar date) //1602 液晶写数据 { rs=1。 lcden=0。 P1=date。 delayms(1)。 lcden=1。 delayms(2)。 lcden=0。 } void init_lcd(void) //初始化液晶,及画面初始化 { // uchar num。 wela=0。 lcden=0。 write_(0x38)。 write_(0x0c)。 write_(0x06)。 write_(0x01)。 write_(0x80)。 } //指 定 x,y 写入字符串函数 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { if (y == 0){write_(0x80 + x)。 } //第一行 else{write_(0xC0 + x)。 } //第二行 while (*s) // {write_date( *s)。 s++。 } //写入数据 } void tim0_isr (void) interrupt 1 using 1 { 第 19 页 共 32 页 irtime++。 //用于计数 2 个下降沿之间的时间 } void EX0_ISR (void) interrupt 0 //外部中断 1 服务函数 { static unsigned char i。 //接收红外信号处理 static bit startflag。 //是否开始处理标志位 if(startflag) { if(irtime63amp。 amp。 irtime=33)//引导码 TC9012 的头码, 9ms+ i=0。 irdata[i]=irtime。 //存储每个电平的持续时间,用于以后判断是 0 还是 1 irtime=0。 i++。 if(i==33) { irok=1。 i=0。 } } else { irtime=0。 startflag=1。 } } void TIM0init(void)//定时器 0 初始化 { TMOD=0x02。 //定时器 0 工作方式 2, TH0 是重装值, TL0 是初值 TH0=0x00。 //重载值 TL0=0x00。 //初始化值 ET0=1。 //开中断 TR0=1。 } void EX0init(void) { IT0 = 1。 //指定外部中断 1 下降沿触发, INT0 () EX0 = 1。 //使能外部中断 EA = 1。 //开总中断 } void Ir_work(void) { switch(IRcord[2]) 第 20 页 共 32 页 { case 0x16: KeyNo = 0。 break。 //遥控按键 0 case 0x0c: KeyNo = 1。 break。 //遥控按键 1 case 0x18: KeyNo = 2。 break。 //遥控按键 2 case 0x5e: KeyNo = 3。 break。 //遥控按键 3 case 0x08: KeyNo = 4。 break。 //遥控按键 4 case 0x1c: KeyNo = 5。 break。 //遥控按键 5 case 0x5a: KeyNo = 6。 break。 //遥控按键 6 case 0x42: KeyNo = 7。 break。 //遥控按键 7 case 0x52: KeyNo = 8。 break。 //遥控按键 8 case 0x4a: KeyNo = 9。 break。 //遥控按键 9 case 0x19: KeyNo = 10。 break。 //遥控按键 100+ case 0x0d: KeyNo = 11。 break。 //遥控按键 200+ c。基于89c51电子密码锁设计附程序(编辑修改稿)
相关推荐
0 0 星期数据 年 06H 8CH 8DH 00~99 年数据 多字节读写 BEH BFH — — 表 345 片内时钟数据寄存器 ≈ SCLK SCLK K I/O 5 0 0 0 7 0 0 0 1 3 0 0 0 5 0 0 0 7 0 0 0 2 0 0 0 1 0 0 0 0 2 4 0 0 0 6 0 0 0 0 0 0 0 ≈ 4 0 0 0 6 0 0 0 R/C A2 A3
CJNE R6,N,SET_TAB START:MOV TMOD, 61H MOV TH1,0FFH MOV TL1,0FFH SETB ET1 SETB ET0 CLR PT0 SETB PT1 SETB IT0 SETB PX0 SETB IT1 SETB PX1 SETB EX1 SETB EX0 SETB EA SETB TR1 CLR OUT CLR F0 MOV R7,00H
char dat) { unsigned char i=0。 for(i=0。 i8。 i++) { DQ=0。 DQ=datamp。 0x01。 delay(5)。 DQ=1。 dat=1。 } } /**********************************/ ReadTemperature(void) { unsigned char a=0。 unsigned char b=0。
隧道、大型船舶、高层建筑都应该安装。 它还可以与自动灭火设备一起组成自动报警、自动灭火的“自动消防队”。 15 第 3 章 火灾报警系统硬件设计 系统核心芯片选择 传感器介绍 AD590 温度传感器 要准确地进行火灾报警 , 选择合适的温度和烟雾传感器是准确报警的前提。 综合考虑各因素 , 本文选择集成温度传感器 AD590 和气体传感器 TGS202 用作采集系统的敏感元件。 AD590
WR:写入信号,当这个输入引脚为低跳变沿时 ,即 /WR 产生一个低脉冲且 /CS=0时 ,允许 CPU 将数据或 控制字写入 8255。 D0~ D7:三态双向数据总线, 8255与 CPU 数据传送 的通道,当 CPU 执行输入输出指令时,通过它实现 8位数据的读 /写操作,控制字和状态信息也通过数据总线传送。 8255具有 3个相互独立的输入 /输出通道端口,用 +5V 单电源供电
_m=0。 counter=m*60+s。 if(counter=water_time) //常温浇灌时间 { TR0=1。 TR1=0。 s1=0。 m1=0。 h=0。 time_s=s。 time_m=m。 LCD_DispHZStr(2,3,on)。 if(flag==1) { t=t+1。 flag=0。 } led=0。 SOUND=~SOUND。 } else { TR0=0。