云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于某51单片机的万年历的设计

基于某51单片机的万年历的设计

  • 62 次阅读
  • 3 次下载
  • 2025/7/2 20:47:27

实用文档

uchar i;

for(i=8; i>0; i--) {

ACC = ACC >>1; //相当于汇编中的 RRC ACC7= clock_io; clock_sclk = 1; clock_sclk = 0; }

return(ACC); }

/******************************************************************** * 功 能:向时钟DS1302写入一个时间

********************************************************************/ void Clock_Write_Time(uchar address, uchar temp) {

clock_sclk=0; clock_rst=0; clock_rst=1;

Clock_Write_Byte(address); Clock_Write_Byte(temp); clock_rst=0; clock_sclk=1; }

/******************************************************************** * 功 能:从时钟DS1302读出一个时间

********************************************************************/ uchar Clock_Read_Time(uchar address) {

uchar temp=0; clock_sclk=0; clock_rst=0; clock_rst=1;

Clock_Write_Byte( address|0x01 ); temp=Clock_Read_Byte(); clock_rst=0; clock_sclk=1; return(temp); }

/******************************************************************** * 功 能:时钟初始化

********************************************************************/ void Clock_Initial(uchar *clock_time ) {

标准

实用文档

Clock_Write_Time(0x8e,0x00); //WP=0 写操作 *clock_time &= 0x7f; //最高位为 0 时钟芯片工作

Clock_Write_Time( second_address, * clock_time ); //秒 clock_time ++;

Clock_Write_Time( minute_address, * clock_time ); //分 clock_time ++;

Clock_Write_Time( hour_address, * clock_time ); //时 clock_time ++;

Clock_Write_Time( day_address, * clock_time ); //日 clock_time ++;

Clock_Write_Time( month_address, * clock_time); //月 clock_time ++;

Clock_Write_Time( year_address, * clock_time ); //年 Clock_Write_Time( 0x8e,0x80); //WP=1 写保护 }

/********************************************************************* 功 能:从时钟DS1302读出时间

********************************************************************/ void Clock_Fresh(uchar * clock_time ) {

* clock_time = Clock_Read_Time( second_address ); //读秒 clock_time ++;

* clock_time = Clock_Read_Time( minute_address ); //读分 clock_time ++;

* clock_time = Clock_Read_Time( hour_address ); //读时 clock_time ++;

* clock_time = Clock_Read_Time( day_address ); //读日 clock_time ++;

* clock_time = Clock_Read_Time( month_address ); //读月 clock_time ++;

*clock_time = Clock_Read_Time( year_address ); //读年 }

#endif

5. 显示设置程序

#ifndef _LCD_12864 #define _LCD_12864

/***********************预定义**************************************/ #define uchar unsigned char

#define uint unsigned int/***************************12864管脚配置****************************/ #define port P1 sbit rs=P3^0;

标准

实用文档

sbit rw=P3^1; sbit e=P3^2; sbit cs1=P3^6; sbit cs2=P3^7;

/******************************************************************************************** * 函数名称:Delay()

* 功 能:延迟时间=a*1ms * 入口参数: * 出口参数:无

*********************************************************************************************/ void Delay(uint a) {

uchar i; while(a--)

for(i=0;i<125;i++); }

/******************************************************************************************** * 函数名称:Lcd_Display_On() * 功 能:LCD显示开 * 入口参数:无 * 出口参数:无

*********************************************************************************************/ void Lcd_Display_On() {

port=0x3f; rs=0; rw=0; e=1; e=0; }

/******************************************************************** * 功 能:LCD显示关

********************************************************************/ void Lcd_Display_Off() {

port=0x3e; rs=0; rw=0; e=1; e=0;

标准

实用文档

}

/******************************************************************** * 功 能:LCD设置X坐标

********************************************************************/ void Lcd_Set_X(uchar x) {

port=0xb8|x; rs=0; rw=0; e=1; e=0; }

/******************************************************************** * 功 能:LCD设置Y坐标

********************************************************************/ void Lcd_Set_Y(uchar y) {

port=0x40|y; rs=0; rw=0; e=1; e=0; }

/********************************************************************************************

* 函数名称:Lcd_Set_X_Y(uchar x, uchar y ) * 功 能:LCD设置x y坐标 * 入口参数:x y * 出口参数:无

*********************************************************************************************/

void Lcd_Set_X_Y(uchar x, uchar y) {

if( y<64 )

{ cs1=1; cs2=0; Lcd_Set_Y( y ); } else

{ cs1=0; cs2=1; Lcd_Set_Y( y-64 ); } Lcd_Set_X( x); }

/********************************************************************************************

* 函数名称:Lcd_Write_Command() * 功 能:写指令代码

标准

实用文档

* 入口参数:无 * 出口参数:无

*********************************************************************************************/

void Lcd_Write_Command(uchar temp) {

port=temp; rs=0; rw=0; e=1; e=0; }

/******************************************************************************************** * 函数名称:Lcd_Write_Byte() * 功 能:写数据 * 入口参数:无 * 出口参数:无

*********************************************************************************************/

void Lcd_Write_Byte(uchar temp) {

port=temp; rs=1; rw=0; e=1; e=0; }#endif 七、结束语

以上为本次设计的概述,此后,对设计的硬件和软件各方面还需进一步的加深,对芯片的管脚功能和用法还需有充分的了解,根据设计思路设计硬件电路。包括单片机的控制电路、时钟电路、键盘扫描电路、显示电路和闹钟电路。然后通过软件编程,实现对年、月、日、时、分、秒、星期和农历的自动调整。利用按键控制,基本实现万年历的各个功能。

通过本次课程设计,我们认识到自己的单片机知识还是不能够支持单独做出作品,需要团队协作以及网上查找资料。

八、课程设计小组分工

九、参考文献

标准

搜索更多关于: 基于某51单片机的万年历的设计 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

实用文档 uchar i; for(i=8; i>0; i--) { ACC = ACC >>1; //相当于汇编中的 RRC ACC7= clock_io; clock_sclk = 1; clock_sclk = 0; } return(ACC); } /******************************************************************** * 功 能:向时钟DS1302写入一个时间 ********************************************************************/ void Clo

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com