课程设计 - 红外遥控电子密码锁的设计与实现(5)

2025-09-17

6 附录一

6.1 整体电路结构:

图表 23 总电路图

6.2 PCB图:

图表 24 pcb电路图

18

7 附录二

7.1 AT24C02模块

#include \

sbit WP = P1^0; sbit SCL = P1^1; sbit SDA = P1^2;

void Delay_US(void) { ;; }

void Delay_10MS(void) {

uchar i = 0; uchar j = 0;

for(i = 50;i>0;i--) { for(j=200;j>0;j--); } }

void AT24C08_unprotect() {

WP = 0; }

void AT24C02_Start(void) {

SDA = 1; SCL = 1; Delay_US(); SDA = 0; Delay_US(); }

void AT24C02_Stop(void) {

SDA = 0; SCL = 1; Delay_US(); SDA = 1;

//开始总线//停止总线

19

Delay_US(); }

void AT24C02_Ack(void) //ACK信号 {

uchar i = 0; //等待从机回应 SCL = 1; Delay_US();

while((SDA ==1) && (i<200))//等 侍ACK信号 { i ++; } SCL = 0; Delay_US(); }

void AT24C02_NOAck(void) //NO ACK {

SCL = 1; //主机发送给从机 Delay_US(); SDA = 1; SCL = 0; Delay_US(); }

void AT24C02_Write_Byte(uchar Value)// 写8位数据到总线 {

uchar i = 0;

for(i =0; i<8; i++) { SCL = 0; SDA = Value & 0x80;// 1000 0000 Delay_US(); SCL = 1; Delay_US(); Value <<= 1; } SCL = 0; Delay_US(); SDA = 1; }

uchar AT24C02_Read_Byte(void)//读8位数据 {

20

uchar Value = 0; uchar i = 0; SCL = 0; //低电平数据可以变化 Delay_US();

for(i = 0; i <8;i++) { SCL = 1; //高电平状态读数据 Delay_US(); if(SDA) { Value |= 0x80>>i;//先读高位数据 } SCL = 0; Delay_US(); }

return Value; }

void AT24C02_Write(uchar Address,uchar Value) {

AT24C02_Start(); //起始条件 AT24C02_Write_Byte(0xA0); //器件地址1010 0000//写 AT24C02_Ack(); //等从机应答

AT24C02_Write_Byte(Address); // 1024 字节,其中一个字节操作25 AT24C02_Ack();

AT24C02_Write_Byte(Value); // 0x15 AT24C02_Ack(); // AT24C02_Stop(); Delay_10MS(); }

uchar AT24C02_Read(uchar Address) {

uchar Value = 0;

AT24C02_Start(); //开始总线 AT24C02_Write_Byte(0xA0); // 1010 0000 AT24C02_Ack();

AT24C02_Write_Byte(Address); //读数据的地址; //25 AT24C02_Ack(); AT24C02_Start(); //再次开始 AT24C02_Write_Byte(0xA1); // 1010 0001 AT24C02_Ack();

Value = AT24C02_Read_Byte(); AT24C02_NOAck(); //主机发送给从机无应答

21

AT24C02_Stop(); return Value; }

7.2 红外通信模块

sbit beer=P0^4;

sbit RED_DATA=P3^2; //红外接口 //uchar RED_ADD=0; //红外遥控的地址

uchar RED_add=255; //红外遥控的地址缓存区

uchar RED_key=255; //红外摇控的键值,无键按下时为255

//红外初始化

void Init_Red(void) {

RED_DATA=1; //P3^2输出高电平 EX0=1; //开启红外中断 P3^2 }

//检测脉冲宽度

uchar Red_check(void) {

uchar t=0;uchar a=0;

while(RED_DATA) { t++; for(a=0;a<4;a++);// if(t==250) return t;//超时溢出 }

return t; }

void exter0() interrupt 0 {

uchar res=0; uchar aa=0; bit OK=0;

bit RODATA=0;

while(1) {

if(RED_DATA)//有高脉冲出现 {

22


课程设计 - 红外遥控电子密码锁的设计与实现(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:操作系统精髓与设计原理-第12章 文件管理

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219