没有合适的资源?快使用搜索试试~ 我知道了~
首页多功能时钟程序=红外控制+DS1302+1602LCD
资源详情
资源评论
资源推荐
第 1 页 共 32 页 多功能时钟
#include <AT89x51.h>
#include <string.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//红外程序
#define IR_RE P3_2 //用来控制外部中断
bit k=0; //红外解码判断标志位,为 0 则为有效信号,为 1 则为无效
uchar n=0;
uchar data date[4]; //date 数组为存放地址原码,反码,数据原码,反码
void settime();
//***** 18B20 温度显示定义部
sbit DQ=P3^3; //18B20 接 P3.3 口
typedef uchar byte;
typedef uint word;
Read_Temperature(char,char);
byte ow_reset(void);
byte read_byte(void);
void write_byte(char val);
//lcd 引脚
#define LCM_RS P2_0 //定义引脚
#define LCM_RW P2_1
#define LCM_EN P2_2
#define LCM_Data P0
//LCD 显示
uchar id,timecount,dipsmodid,m_id,n_id,p_id,mb_hour,mb_min,mb_sec,mb_wm;
bit lmcinit_or_not; //是否需要清屏标志位“1”为需要“0”为不
bit flag,sflag; //flag 是时钟冒号闪烁标志,sflag 是温度负号显示标志
void Disp_line1(void); //第一屏第一行
void Disp_line2(void); //第一屏第二行
void Disp_line3(void); //第二屏第一行
void Disp_line4(void); //第二屏第二行
void Disp_line6(void); //第三行第二行
void Disp_line8(void); //第四屏第二行
void Disp_mod0(void); //第一屏
void Disp_mod1(void); //第二屏
void Disp_mod2(void); //第三屏
void Disp_mod3(void); //第四屏
void id_case1_key();
void n_id_case1_key();
第 2 页 共 32 页 多功能时钟
void m_id_case1_key();
//按键设置
sbit s4=P1^7; //模式切换
sbit s3=P1^6; //设置
sbit s2=P1^5; //+1
sbit s1=P1^4; //-1
//DS1302 时间显示和引脚定义
sbit T_CLK=P1^0;
sbit T_IO =P1^1;
sbit T_RST=P1^2;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
void Set(uchar,uchar); //根据选择调整相应项目
void RTInputByte(uchar); /* 输入 1Byte */
uchar RTOutputByte(void); /* 输出 1Byte */
void W1302(uchar, uchar); // 向 DS1302 写入一个字节
uchar R1302(uchar); // 从 DS1302 读出一个字节
void Set1302(unsigned char * ); // 设置时间
bit sec,min,hour,year,mon,day,weekk,nz,n_hour,n_min; //闪烁标志位
uchar inittime[7]={0x00,0x10,0x19,0x23,0x01,0x01,0x01}; //初始化后设置为:00 年 01 月
23 日星期 1 19 点 10 分 0 秒
// 秒 分钟 小时 日 月 年 星期
//******* 1602LCD 驱动 *********************************************************
*
void write_data(uchar dat);
void write_com(uchar com,BuysC);
unsigned char LCD_busy(void);
void LCD_init(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void delay(uint z);
//蜂鸣,七色灯,继电器
void fm();
sbit FM=P3^6;
sbit JDQ=P3^7;
sbit LED_1=P2^4;
sbit LED_2=P2^5;
sbit LED_3=P2^6;
sbit LED_4=P2^7;
第 3 页 共 32 页 多功能时钟
void main(void)
{
delay(200); //启动等待,等 LCM 讲入工作状态
LCD_init(); //LCM 初始化
delay(5); //延时片刻(可不要)
TMOD=0x01;
TH0=(65535-46080)/256;
TL0=(65535-46080)%256;
TR0=1;
IT0=1;
PX0 = 1;
ET0=1;
EA=1;
W1302(0x90,0xa5); //打开充电二级管 一个二级管串联一个 2K 电阻
W1302(0x8e,0x80); //写保护,禁止写操作
LED_1=0;LED_2=0;
LED_3=0;LED_4=0;
while(1)
{
IE0=0;
EX0=1;
FM=1;
if ((s4==0)||(date[2]==0x1e))
{
dipsmodid++;
lmcinit_or_not=1;
if(dipsmodid>3) dipsmodid=0;
while((s4==0)||(date[2]==0x1e));
}
switch(dipsmodid)
{
case 0:
Disp_mod0();
break;
case 1:
Disp_mod1();
break;
case 2:
Disp_mod2();
break;
case 3:
Disp_mod3();
break;
第 4 页 共 32 页 多功能时钟
};
ET0=1;
};
}
//第一屏
void Disp_mod0(void)
{
DisplayOneChar(11,1,'.');
DisplayOneChar(13,1,0xdf);
DisplayOneChar(14,1,'C');
DisplayOneChar(3,0,'M');
if(lmcinit_or_not==1)
{
LCD_init();
lmcinit_or_not=0;
}
if ((s1|s2)==0) //初始化
{
delay(5);
if ((s1|s2)==0) Set1302(inittime);
}
if (s3==0) // 设置和选择项目键
{
delay(5);
if(s3==0){id++;if(id>3) id=0;}
while(s3==0);
}
switch(id)
{
case 0://小时
sec=0;
Disp_line1(); Disp_line2();
break;
case 1://小时
sec=0;hour=1;
Disp_line1(); Disp_line2();
第 5 页 共 32 页 多功能时钟
id_case1_key();
break;
case 2://分钟
hour=0;min=1;
Disp_line1(); Disp_line2();
id_case1_key();
break;
case 3://秒
min=0;sec=1;
Disp_line1(); Disp_line2();
id_case1_key();
break;
}
}
//第二屏日期
void Disp_mod1(void)
{
if(lmcinit_or_not==1)
{
LCD_init();
lmcinit_or_not=0;
}
DisplayOneChar(1,0,'D');
DisplayOneChar(2,0,'a');
DisplayOneChar(3,0,'t');
DisplayOneChar(4,0,'e');
DisplayOneChar(9,0,'W');
DisplayOneChar(10,0,'e');
DisplayOneChar(11,0,'e');
DisplayOneChar(12,0,'k');
DisplayOneChar(13,0,'.');
DisplayOneChar(6,1,0x2f);
DisplayOneChar(9,1,0x2f);
if(s3==0)
{
if(s3==0)
{
m_id++;
if(m_id>4) m_id=0;
while(s3==0);
}
}
switch(m_id)
剩余31页未读,继续阅读
云端漫步06
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0