没有合适的资源?快使用搜索试试~ 我知道了~
单片机c语言电子万年历完整程序.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
52 浏览量
2022-10-28
16:18:20
上传
评论
收藏 495KB PDF 举报
单片机c语言电子万年历完整程序.pdf单片机c语言电子万年历完整程序.pdf
资源推荐
资源详情
资源评论













单 片 机 c 语 言 电 子 万 年
历 完 整 程 序
公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

该 程 序 为 5 1 单 片 机 c 语 言 电 子 万 年 历
#include"reg52.h"
//#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit DATA=P0^7;
sbit RST=P0^5;
sbit SCLK=P0^6;
sbit menu=P3^0; //菜单
sbit add=P3^1; //加一
sbit dec=P3^7; //减一
sbit led0=P1^0;
sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;
sbit ds=P3^2;
//sbit beep=P3^3;
uint temp;
float f_temp;
uint warn_l1=270;
uint warn_l2=250;
uint warn_h1=300;
uint warn_h2=320;
uint get_temp();
void delayms(uint x);
void write_com(uchar com);
void write_data(uchar date);
void init();
void dis_temp(uint t);
void Write1302(uchar dat);
void WriteSet1302(uchar Cmd,uchar dat);
uchar Read1302(void);
uchar ReadSet1302(uchar Cmd);
void Init_DS1302(void);
void DisplaySecond(uchar x);
void DisplayMinute(uchar x);
void DisplayHour(uchar x);
void DisplayDay(uchar x);
void DisplayMonth(uchar x);

void DisplayYear(uchar x);
void DisplayWeek(uchar x);
void dis_temp(uint t);
void read_date(void);
void turn_val(char newval,uchar flag,
uchar newaddr,uchar s1num);
void key_scan(void);
uchar code table2[]= "TUEWESTHUFRISATSUNMON";
uchar second,minute,hour,day,month,year,week,count=0;
uchar ReadValue,num,time;
void delayms(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
////////////////////////////////////////////////////////////
void write_com(uchar com)
{
lcdrs=0;
P2=com;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P2=date;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void init()
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);

write_com(0x01);
}
///////////////////////////////////////////////////////////////
//
void Write1302(uchar dat)
{
uchar i;
SCLK=0; //拉低 SCLK,为脉冲上升沿写入数据做好准备
delayms(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续写 8 个二进制位数据
{
DATA=dat&0x01; //取出 dat 的第 0 位数据写入 1302
delayms(2); //稍微等待,使硬件做好准备
SCLK=1; //上升沿写入数据
delayms(2); //稍微等待,使硬件做好准备
SCLK=0; //重新拉低 SCLK,形成脉冲
dat>>=1; //将 dat 的各数据位右移 1 位,准备写入下一个
数据位
}
}
void WriteSet1302(uchar Cmd,uchar dat)
{
RST=0; //禁止数据传递
SCLK=0; //确保写数居前 SCLK 被拉低
RST=1; //启动数据传输
delayms(2); //稍微等待,使硬件做好准备
Write1302(Cmd); //写入命令字
Write1302(dat); //写数据
SCLK=1; //将时钟电平置于已知状态
RST=0; //禁止数据传递
}
uchar Read1302(void)
{
uchar i,dat;
delayms(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续读 8 个二进制位数据
{
dat>>=1; //将 dat 的各数据位右移 1 位,因为先读出的是字
节的最低位
if(DATA==1) //如果读出的数据是 1
dat|=0x80; //将 1 取出,写在 dat 的最高位
剩余18页未读,继续阅读
资源评论

春哥111
- 粉丝: 7377
- 资源: 6万+

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

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