单片机万年历阴阳历c语言,自己制作的单片机万年历 程序+原理图
//调用单片机头文件
#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255
#define uint unsigned int //无符号整型 宏定义 变量范围0~65535
#include "eeprom52.h"
#include "nongli.h"
#include "intrins.h"
bit flag_200ms ;
bit flag_100ms ;
sbit beep = P3^7; //蜂鸣器定义
bit flag_beep_en;
uint clock_value; //用作闹钟用的
sbit dq = P3^1; //18b20 IO口的定义
uint temperature ; //温度变量
uchar flag_nl; //农历 阳历显示标志位
uchar menu_1,menu_2;
uchar key_time,flag_value; //用做连加的中间变量
bit key_500ms ;
uchar n_nian,n_yue,n_ri; //农历显示的函数
#include "ds1302.h"
#include "lcd1602.h"
/******************把数据保存到单片机内部eeprom中******************/
void write_eeprom()
{
SectorErase(0x2000);
byte_write(0x2000, fen1);
byte_write(0x2001, shi1);
byte_write(0x2002, open1);
byte_write(0x2058, a_a);
}
/******************把数据从单片机内部eeprom中读出来*****************/
void read_eeprom()
{
fen1 = byte_read(0x2000);
shi1 = byte_read(0x2001);
open1 = byte_read(0x2002);
a_a = byte_read(0x2058);
}
/**************开机自检eeprom初始化*****************/
void init_eeprom()
{
read_eeprom(); //先读
if(a_a != 1) //新的单片机初始单片机内问eeprom
{
fen1 = 3;
shi1 = 8;
open1 = 1;
a_a = 1;
write_eeprom(); //保存数据
}
}
/***********************18b20初始化函数*****************************/
void init_18b20()
{
bit q;
dq = 1; //把总线拿高
delay_uint(1); //15us
dq = 0; //给复位脉冲
delay_uint(80); //750us
dq = 1; //把总线拿高 等待
delay_uint(10); //110us
q = dq; //读取18b20初始化信号
delay_uint(20); //200us
dq = 1; //把总线拿高 释放总线
}
/*************写18b20内的数据***************/
void write_18b20(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{ //写数据是低位开始
dq = 0; //把总线拿低写时间隙开始
dq = dat & 0x01; //向18b20总线写数据了
delay_uint(5); // 60us
dq = 1; //释放总线
dat >>= 1;
}
}
/*************读取18b20内的数据***************/
uchar read_18b20()
{
uchar i,value;
for(i=0;i<8;i++)
{
dq = 0; //把总线拿低读时间隙开始
value >>= 1; //读数据是低位开始
dq = 1; //释放总线
if(dq == 1) //开始读写数据
value |= 0x80;
delay_uint(5); //60us 读一个时间隙最少要保持60us的时间
}
return value; //返回数据
}
/*************读取温度的值 读出来的是小数***************/
uint read_temp()
{
uint value;
uchar low; //在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序
init_18b20(); //初始化18b20
write_18b20(0xcc); //跳过64位ROM
write_18b20(0x44); //启动一次温度转换命令
delay_uint(50); //500us
init_18b20(); //初始化18b20
write_18b20(0xcc); //跳过64位ROM
write_18b20(0xbe); //发出读取暂存器命令
EA = 0;
low = read_18b20(); //读温度低字节
value = read_18b20(); //读温度高字节
EA = 1;
value <<= 8; //把温度的高位左移8位
value |= low; //把读出的温度低位放到value的低八位中
value *= 0.625; //转换到温度值 小数
return value; //返回读出的温度 带小数
}
/******************1ms 延时函数*******************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;ifor(j=0;j<120;j++);
}
/******************写星期函数*******************/
void write_week(uchar hang,uchar add,uchar week)//写星期函数
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
switch(week)
{
case 1:write_data('M');//星期数为1时,显示
write_data('O');
write_data('N');
break;
case 2:write_data('T');//星期数据为2时显示
write_data('U');
write_data('E');
break;
case 3:write_data('W');//星期数据为3时显示
write_data('E');
write_data('D');
[1] [2] [3] [4] [5] [6] [7]
单片机万年历阴阳历c语言,自己制作的单片机万年历 程序+原理图相关推荐
- STM32单片机的智能充电桩计费系统的设计(程序+原理图+论文报告)
本设计: 基于STM32单片机的智能充电桩计费系统的设计(程序+原理图+论文报告) 原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 编号C0022 [腾讯文档]C0 ...
- 111、基于51单片机的电磁感应无线充电系统 手机无线充电器设计(程序+原理图+Proteus仿真+程序流程图+论文参考资料等)
方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度.非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通 ...
- 单片机应用技术c语言版考试答案,单片机应用技术(C语言)试题
<单片机应用技术(C语言)试题>由会员分享,可在线阅读,更多相关<单片机应用技术(C语言)试题(7页珍藏版)>请在人人文库网上搜索. 1.一.选择题1.单片机8031的/EA引 ...
- 小项目:单片机控制脉搏心电测量仪 测量脉搏心跳 含程序 原理图及仿真文件
各位小伙伴大家好,考研的事总算告一段落了,最近有点难受去医院一查,呀,好像有点神经衰弱,干什么都有点力不从心,热心的护士小姐姐给我测量了体温查看健康码一气呵成,然后顺利进入了医院.在医生给我测量脉搏和 ...
- 单片机万年历阴阳历c语言,单片机阴历阳历c算法万年历.pdf
单片机阴历阳历c算法万年历 当前位置: 首页 > 嵌入式系统 > 51 单片机万年历优化算法源程序 51 单片机万年历优化算法源程序 字体大小 : 小 中 大 作者: 来源: 日期: 20 ...
- 单片机三角波c语言代码,使用51单片机实现三角波输出系统的设计资料说明
单片机(SCM)是单片机微型计算机(Single Chip Microcomputer) 的简称. 它是把组成微型计算机的各个功能部件:中央处理器CPU.随机存取存储器RAM .只读存储器ROM.I/ ...
- 单片机 解释型 c语言脚本,解释型单片机应用程序的研究.pdf
您所在位置:网站首页 > 海量文档  > 学术论文 > 自然科学论文 解释型单片机应用程序的研究.pdf5页 本文档一 ...
- 51单片机风扇转动c语言代码,基于51单片机的智能风扇控制系统设计.doc
完美.WORD格式.整理 范文.范例.指导 基于51单片机智能风扇控制系统的设计与实现 摘要:随着气温的逐渐上升,风扇的需求量也逐渐扩大.传统风扇不能根据外界温度的变化对风扇转速快慢进行调整,也不能对 ...
- 单片机控制直流电机c语言代码,用51单片机控制直流电机
系统主函数流程如图三: ①PWM脉宽控制:本设计中采用软件延时方式对脉冲宽度进行控制,延时程序函数如下: void delay(unsigned char dlylevel){ int i=50*dl ...
- 51单片机抢答器c语言代码,使用51单片机实现抢答器的设计资料和代码说明
在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务.如果在抢答中,靠视觉是很难判断出哪组先答题.利用单片机系统来设计抢答器,使以 ...
最新文章
- virtualC++打开汇编语言代码
- springboot集成prometheus
- [BOI2019][第K大问题][暴力剪枝]D2T1 Olympiads
- 大数据WEB阶段 后台和页面之间传递日期格式数据的400问题
- 阿里云胡晓明:数据智能将为城市生活带来真正价值
- nodejs字符与字节之间的转换
- python自定义修饰器_Python概述
- 数据表的查询 sqlserver 基本的三个查询
- ISE14.7逻辑综合与实现工作过程
- onvif学习笔记10:获取RTSP流地址
- cad截图软件_AutoCAD电气制图协会线上CAD学习打卡活动结束
- css3的clip-path方法剪裁实现(三角形,多边形,圆,椭圆)
- 阿里云云防火墙全新发布,重装上阵!
- Batch Normalization :深度网络中的BN层
- html 页面文字不能复制粘贴,网页文字无法复制粘贴 复制粘贴不能用
- 到了公司git使用工作流
- MySQL不会丢失数据的秘密,就藏在它的 7种日志里
- 什么是GPT模型,GPT下载和国内镜像
- java和class的区别
- 浅谈百度地图的简单开发之实现地图全景,内景展示功能(四)