-
大小: 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个文件信息
相关资源
- 基于51单片机的交通信号灯程序
- GSM监控系统51单片机设计
- 51单片机定时器/计数器的结构和原理
- MCS-51单片机定时器和计数器区别的理
- 基于51单片机的多通道数据采集范围控
- ADC0832ADC0809DAC0832三种芯片程序,c程序
- 基于51单片机的直流电机转速控制及显
- 高速公路快速放行提示系统
- 光敏电阻传感器模块4线制
- 51单片机_DS1302时钟芯片_共阴数码管
- 基于51单片机的教室智能照明控制系统
- 基于单片机的智能低电阻测量仪
- 电动车智能充电桩全套
- 五路循迹智能小车
- 基于51单片机的交通灯设计
- 51 教室智能灯 控制系统
- 51单片机125Khz ID卡读卡程序
- 51单片机课程设计内含50多个课程设计
- 51单片机实现蜂鸣器的简易歌曲播放器
- 基于51单片机的智能十字路口交通灯系
- 51单片机编写的标准modbus协议通信模版
- SIM900A通过51单片机拨打电话程序
- at89c51单片机外文翻译
- CW2015 51单片机程序
- 基于51单片机的超声波测距技术实现含
- 基于51单片机射频密码锁设计门禁刷卡
- 基于51单片机的十字路口交通灯Protu
- 32x16LED汉子点阵显示屏
- 收发短信,短信控制LED51单片机例程
- 51单片机智能小车花式,寻迹,红外,
评论
共有 条评论