没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论







#include <REG51.H>
#include <intrins.h>
//#include "LCD1602.h"
//#include "DS1302.h"
#define uint unsigned int
#define uchar unsigned char
sbit DS1302_CLK = P1^7;
sbit DS1302_IO = P1^6;
sbit DS1302_RST = P1^5;
//实时时钟时钟线引脚
//实时时钟数据线引脚
//实时时钟复位线引脚
sbit ACC0 = ACC^0;
sbit ACC7 = ACC^7;
char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; //秒,分,时到日,
月,年位闪的计数
sbit Set = P2^0;
sbit Up = P2^1;
sbit Down = P2^2;
sbit out = P2^3;
//模式切换键
//加法按钮
//减法按钮
//立刻跳出调整模式按钮
sbit DQ
= P3^0;
char done,count,temp,flag,up_flag,down_flag,t_value;
uchar TempBuffer[5],week_value[2];
void show_time(); //液晶显示程序
/***********1602 液晶显示部分子程序****************/
//Port Definitions**********************************************************
sbit LcdRs
sbit LcdRw
sbit LcdEn
= P2^5;
= P2^6;
= P2^7;
sfr DBPort = 0x80;
//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
//
内
部
等
待
函
数
**************************************************************************
unsigned char LCD_Wait(void)
{
LcdRs=0;
LcdRw=1;
LcdEn=1;
_nop_();
_nop_();
LcdEn=0;
return DBPort;

}
//
向
LCD
写
入
命
令
或
数
据
************************************************************
#define LCD_COMMAND
#define LCD_DATA
0
// Command
// Data
1
#define LCD_CLEAR_SCREEN 0x01
#define LCD_HOMING 0x02
// 清屏
// 光标返回原点
void LCD_Write(bit style, unsigned char input)
{
LcdEn=0;
LcdRs=style;
LcdRw=0;
_nop_();
DBPort=input;_nop_();//注意顺序
LcdEn=1;
_nop_();//注意顺序
LcdEn=0;
_nop_();
LCD_Wait();
}
//设置显示模式************************************************************
#define LCD_SHOW
#define LCD_HIDE
0x04
0x00
//显示开
//显示关
#define LCD_CURSOR
0x02
0x00
//显示光标
//无光标
#define LCD_NO_CURSOR
#define LCD_FLASH
0x01
0x00
//光标闪动
#define LCD_NO_FLASH
//光标不闪动
void LCD_SetDisplay(unsigned char DisplayMode)
{
LCD_Write(LCD_COMMAND, 0x08|DisplayMode);
}
//设置输入模式************************************************************
#define LCD_AC_UP
0x02
0x01
#define LCD_AC_DOWN
0x00
0x00
// default
#define LCD_MOVE
// 画面可平移
#define LCD_NO_MOVE
//default
void LCD_SetInput(unsigned char InputMode)
{
LCD_Write(LCD_COMMAND, 0x04|InputMode);
}

//初始化 LCD************************************************************
void LCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38);
LCD_Write(LCD_COMMAND,0x38);
//8 位数据端口,2 行显示,5*7 点阵
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC 递增, 画面不动
//开启显示, 无光标
}
//液晶字符输入的位置************************
void GotoXY(unsigned char x, unsigned char y)
{
if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
}
//将字符输出到液晶显示
void Print(unsigned char *str)
{
while(*str!='\0')
{
LCD_Write(LCD_DATA,*str);
str++;
}
}
/***********DS1302 时钟部分子程序******************/
typedef struct __SYSTEMTIME__
{
unsigned char Second;
unsigned char Minute;
unsigned char Hour;
unsigned char Week;
unsigned char Day;

unsigned char Month;
unsigned char Year;
unsigned char DateString[11];
unsigned char TimeString[9];
}SYSTEMTIME; //定义的时间类型
#define AM(X)
#define PM(X)
X
(X+12)
// 转成 24 小时制
#define DS1302_SECOND 0x80
#define DS1302_MINUTE 0x82
//时钟芯片的寄存器位置,存放时间
#define DS1302_HOUR
#define DS1302_WEEK
#define DS1302_DAY
0x84
0x8A
0x86
#define DS1302_MONTH 0x88
#define DS1302_YEAR 0x8C
void DS1302InputByte(unsigned char d)
//实时时钟写入一字节(内部函数)
{
unsigned char i;
ACC = d;
for(i=8; i>0; i--)
{
DS1302_IO = ACC0;
DS1302_CLK = 1;
DS1302_CLK = 0;
ACC = ACC >> 1;
}
//相当于汇编中的 RRC
}
unsigned char DS1302OutputByte(void)
//实时时钟读取一字节(内部函数)
//相当于汇编中的 RRC
{
unsigned char i;
for(i=8; i>0; i--)
{
ACC = ACC >>1;
ACC7 = DS1302_IO;
DS1302_CLK = 1;
DS1302_CLK = 0;
}
return(ACC);
}
void Write1302(unsigned char ucAddr, unsigned char ucDa)
//ucAddr: DS1302 地址, ucData:
剩余18页未读,继续阅读
资源评论


xxpr_ybgg
- 粉丝: 4428
- 资源: 3万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
