-
大小: 631KB文件类型: .zip金币: 2下载: 1 次发布日期: 2022-09-07
- 语言: 其他
- 标签: 51单片机 电子闹钟 1602+DS18B20 期末作业
资源简介
51电子闹钟实现了:界面LCD1602显示器,显示年、月、日、星期、时、分、秒、温度,具有闹钟设定,铃声变换设定,时间设定,事件设定,掉电不丢失,12/24进制切换功能。
资源含有实验报告及源码(含注释及使用方法)

代码片段和文件信息
#include “AT24C02.h“
#include “common.h“
//写入一个字节数据到wordaddress指定的单元
unsigned char AT24C02_writebyte( unsigned char wordaddress unsigned char c )
{
IIC_start(); //发送起始信号
IIC_sendbyte( AT24C02_DEVICE ); //发送器件地址
if ( IIC_receiveack() == 0 ) //等待应答信号
return FAIL;
IIC_sendbyte( wordaddress ); //发送存储单元地址
if ( IIC_receiveack() == 0 ) //等待应答信号
return FAIL;
IIC_sendbyte( c ); //发送一个字节数据
if ( IIC_receiveack() == 0 ) //等待应答信号
return FAIL;
IIC_stop(); //发送停止信号
delay_ms(15); //延时10ms等待EEPROM操作完成
return SUCCESS; //写入成功
}
//写入一页数据(8B)到pageaddress指定的页,pageaddress必须页对齐,即pageaddress%8为0
unsigned char AT24C02_writepage( unsigned char pageaddress unsigned char *c)
{
unsigned char i;
IIC_start(); //发送起始信号
IIC_sendbyte( AT24C02_DEVICE ); //发送器件地址
if ( IIC_receiveack() == 0 ) //等待应答信号
return FAIL;
IIC_sendbyte( pageaddress ); //发送页地址
if ( IIC_receiveack() == 0 ) //等待应答信号
return FAIL;
for ( i = 0; i < 8; i++ ) //连续写入一页(8字节)数据
{
IIC_sendbyte( c[i] ); //写入一个字节数据
if ( IIC_receiveack() == 0 ) //等待应答信号
return FAIL;
}
IIC_stop(); //发送停止信号
delay_ms(15); //延时10ms等待EEPROM操作完成
return SUCCESS; //写入成功
}
//写入strnum字节到wordaddress开始的单元
unsigned char AT24C02_writestring( unsigned char wordaddress unsigned int strnum unsigned char *str )
{
unsigned char begin;
unsigned char rest;
unsigned char pageaddress;
unsigned char i;
unsigned char *strpoint;
strpoint = str;
rest = strnum;
//前面非页对齐的字节处理,一页为8个字节
begin = wordaddress & 0x07; //屏蔽地址中的高5位,只留低3位,得到页内偏移0x07=0000 0111
if ( begin ) //如果页面偏移不为0,表示非页对齐
{
for ( i = 0; i < ( 8 - begin ); i++ ) //需要处理的字节数为8-begin
{
if ( AT24C02_writebyte( wordaddress + i *strpoint ) == FAIL ) //写入一个字节
return FAIL;
strpoint++; //更新数据指针
rest--; //还剩rest个字节要写入AT24C02
}
}
pageaddress = wordaddress & 0xF8 + 1; //准备整页写入?xF8=1111 1000,高5位为页地址,pageaddress指向下一页
while ( rest >= 8 ) //剩余的rest个字节大于一页(8字节)则进入循环进行整页写操作
{
if ( AT24C02_writepage( pageaddress strpoint ) == FAIL ) //写入一页
return FAIL;
strpoint = strpoint + 8; //数据指针指向后移8字节;
rest = rest - 8; //剩余数据减少了8个字节
pageaddress = pageaddress + 0x08;
if ( pageaddress > 0xF8 ) //AT24C02总共32页(0~31), 如果写完最后一页(31)
pageaddress = 0; //则循环到从第0页开始
}
//最后不够一页的处理
if ( rest > 0 ) //还有剩余的数据没写入
{
for ( i = 0; i < rest; i++ ) //准备写入,写入个数即为rest
{
if ( AT24C02_writebyte( pageaddress + i *strpoint ) == FAIL ) //逐个字节写入
return FAIL;
strpoint++;
}
}
return SUCCESS;
}
//从AT24C02中的wordaddress单元读取一个字节
unsigned char AT24C02_readbyte( unsigned char wordaddress )
{
unsigned char c;
IIC_start(); //发送起始信号
IIC_sendbyte( AT24C02_DEVICE ); //发送器件地址
if ( IIC_receiveack() == 0 ) //等待应答信号
return FAIL;
IIC_s
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-05-06 14:17 综合实验\
文件 246 2020-05-06 14:13 综合实验\README.txt
文件 162 2020-05-06 14:13 综合实验\~$综合实验.docx
目录 0 2019-01-21 20:44 综合实验\电子闹钟\
文件 5138 2019-01-06 15:28 综合实验\电子闹钟\AT24C02.c
文件 823 2018-09-01 10:22 综合实验\电子闹钟\AT24C02.h
文件 74482 2019-01-21 20:44 综合实验\电子闹钟\Clock.uvgui.Aaron
文件 7327 2019-01-06 15:49 综合实验\电子闹钟\Clock.uvopt
文件 14848 2019-01-06 15:49 综合实验\电子闹钟\Clock.uvproj
文件 382 2018-12-27 18:07 综合实验\电子闹钟\common.c
文件 125 2018-09-01 10:23 综合实验\电子闹钟\common.h
文件 8331 2019-01-02 19:29 综合实验\电子闹钟\DS1302.c
文件 3155 2018-12-29 11:50 综合实验\电子闹钟\DS1302.h
文件 3822 2018-09-01 10:22 综合实验\电子闹钟\IIC.c
文件 349 2019-01-06 15:28 综合实验\电子闹钟\IIC.h
文件 5233 2018-12-31 14:16 综合实验\电子闹钟\LCD1602.c
文件 2970 2018-12-28 11:11 综合实验\电子闹钟\LCD1602.h
目录 0 2019-01-21 20:35 综合实验\电子闹钟\Listings\
文件 9293 2019-01-16 20:44 综合实验\电子闹钟\Listings\AT24C02.lst
文件 118244 2019-01-16 20:44 综合实验\电子闹钟\Listings\Clock.m51
文件 1595 2019-01-16 20:44 综合实验\电子闹钟\Listings\common.lst
文件 15453 2019-01-16 20:44 综合实验\电子闹钟\Listings\DS1302.lst
文件 7594 2019-01-16 20:44 综合实验\电子闹钟\Listings\IIC.lst
文件 9001 2019-01-16 20:44 综合实验\电子闹钟\Listings\LCD1602.lst
文件 52159 2019-01-16 20:44 综合实验\电子闹钟\Listings\main.lst
文件 9711 2019-01-16 20:44 综合实验\电子闹钟\Listings\temp.lst
文件 27661 2019-01-21 20:44 综合实验\电子闹钟\main.c
文件 4341 2018-12-30 22:29 综合实验\电子闹钟\Music.h
文件 15354 2018-12-29 17:10 综合实验\电子闹钟\music_code.h
目录 0 2019-01-21 20:35 综合实验\电子闹钟\ob
文件 10690 2019-01-16 20:44 综合实验\电子闹钟\ob
............此处省略13个文件信息
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
- 基于51单片机的交通信号灯程序
- GSM监控系统51单片机设计
- 51单片机定时器/计数器的结构和原理
- MCS-51单片机定时器和计数器区别的理
评论
共有 条评论