历史上的今天
今天是:2024年10月18日(星期五)
2019年10月18日 | 基于51单片机电子万年历设计 lcd12864+24c02+ds1302
2019-10-18 来源:51hei
作品名称:基于51单片机电子万年历设计
作评功能:1:实现ds1302的读写
2:lcd12864的显示
3:24c02的读写
4:更改日期,时间
5:整点报时,闹钟的功能
6:阴阳历的转换
硬件部分:普中开发板(程序内明确标明接线方式)
软件部分:原创
1:代码规范:易于更改
2:封装良好,可以直接移植。
单片机源程序如下:
#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "lcd12864.h"
#include "ds1302.h"
#include "24c04.h"
#include "stdio.h"
#include "string.h"
#include "ALG.h"
//预编译
#define DISPLAY_DATA_SIZE 30 //显示显示一帧数据长度
#define GPIO_KEY P1
//全局变量
unsigned char display_buff[DISPLAY_DATA_SIZE];
unsigned char ds1302_buff[2*sizeof(TIME)];
unsigned char key_value=0xff;
unsigned char receive_buff[sizeof(TIME)];
unsigned char store_row=0;
unsigned char store_line=0;
unsigned char interface_flag=0;
unsigned char ds1302_receive_flag=0;
unsigned char temp[8];
unsigned char display_flag=0;
unsigned char table[32][4]=
{
{0x01,0x01, 0x00, 0x12},
{0x01,0x20, 0x00, 0x12},
{0x01,0x30, 0x00, 0x12},
{0x00,0x40, 0x00, 0x12},
{0x00,0x50, 0x00, 0x12},
{0x01,0x00, 0x01, 0x12},
{0x01,0x50, 0x01, 0x12},
{0x01,0x50, 0x01, 0x12},
{0x01,0x01, 0x00, 0x12},
{0x01,0x20, 0x00, 0x12},
{0x01,0x30, 0x00, 0x12},
{0x00,0x40, 0x00, 0x12},
{0x00,0x50, 0x00, 0x12},
{0x01,0x00, 0x01, 0x12},
{0x01,0x50, 0x01, 0x12},
{0x01,0x50, 0x01, 0x12},
{0x01,0x01, 0x00, 0x12},
{0x01,0x20, 0x00, 0x12},
{0x01,0x30, 0x00, 0x12},
{0x00,0x40, 0x00, 0x12},
{0x00,0x50, 0x00, 0x12},
{0x01,0x00, 0x01, 0x12},
{0x01,0x50, 0x01, 0x12},
{0x01,0x50, 0x01, 0x12},
{0x01,0x01, 0x00, 0x12},
{0x01,0x20, 0x00, 0x12},
{0x01,0x30, 0x00, 0x12},
{0x00,0x40, 0x00, 0x12},
{0x00,0x50, 0x00, 0x12},
{0x01,0x00, 0x01, 0x12},
{0x01,0x50, 0x01, 0x12},
{0x01,0x50, 0x01, 0x12}
};
sbit buzzer=P3^7;
//全局函数声明
void system_init(void);
void delay_ms(int ms);
void lcd_display(char row,char* buff,char num);
void timer_init(void);
void key_check(void);
void major_interface(void);
void store_interface(void);
void time_interface(void);
void key_pro(void);
void bcd_to_ascii(unsigned char* buff,unsigned char num);
void data_pro(unsigned char*des_buff,unsigned char*src_buff,unsigned char num);
/*
biref 主函数
param 无
return 无
*/
void main(void)
{
unsigned char temp[7];
unsigned char i=0;
system_init();
//在24cxx中读取数据。
for(i=0;i<32;i++)
{
read_24cxx(0x00+i*4,table+i,4);
}
while(1)
{
major_interface();
store_interface();
time_interface();
key_check();
key_pro();
}
}
/*
biref 系统初始化函数
param 无
return 无
*/
void system_init(void)
{
LCD12864_Init();
Ds1302Init(TIME);
// Ds18b20Init();
timer_init();
}
/*
biref 延时函数
param 延时时间,单位ms;
return 无
*/
void delay_ms(int ms)
{
int x,i;
x=ms;
while(x--)
for(i=123;i;i--);
}
/*
biref 12864显示函数
param 显示缓存区
return 无
*/
void lcd_display(char row,char* buff,char num)
{
unsigned int i;
switch(row)
{
case 0:
{
LCD12864_SetWindow(0, 0);
for(i=0;i LCD12864_WriteData(buff[i]); } break; } case 1: { LCD12864_SetWindow(1, 0); for(i=0;i LCD12864_WriteData(buff[i]); } break; } case 2: { LCD12864_SetWindow(2, 0); for(i=0;i LCD12864_WriteData(buff[i]); } break; } case 3: { LCD12864_SetWindow(3, 0); for(i=0;i LCD12864_WriteData(buff[i]); } break; } default: { break; } } } /* biref BCD码转换到ASCII param 无 return 无 */ void bcd_to_ascii(unsigned char* buff,unsigned char num) { unsigned int i; for(i=0;i if(buff[i]>=0&&buff[i]<=9)
史海拾趣
|
MICROCHIP公司所生產之單晶片微電腦—PIC16F84A是一顆很容易上手的 IC,功能也相當強,可重復燒錄上千次,價格不到NT150元,所以有很多非專業的玩家寫了很多的應用小品公佈在網路上。可惜非電子相關科系出身的人 (就像哦啦!!),有時望著英文的網頁 ...… 查看全部问答> |
|
问题1:零件描述和零件标识有什么区别? 答:零件描述(Library Reference)是零件在零件库里的名称,将外形和引脚功能相同的零件取的一个通用名称;零件标识是电路图里用户根据需要自行设计的名称,当然也不能随意乱取。一般情况 ...… 查看全部问答> |
|
无线通信中什么叫数字信号,什么叫模拟信号 听说以前有手机是模拟信号的,现在都是数字的了 我想问,无线电磁波怎么能变成数字信号那样的方波?电磁波是正弦波,是连续的啊 用FSK调制的无线电信号无非是疏密相间的正弦波,这算是连续变化的(模 ...… 查看全部问答> |
|
谁能提供AD7731的中文资料?网上只搜到了E文的,可惜自己E文不好 目前正想用89C51和AD7731实现直流表的功能 C51开发,很多东西正在整理学习中 希望和这方面有经验的前辈们学习,得到大家的宝贵指导 谢谢 我的邮件和MSN是 janphee@hotmail.com ...… 查看全部问答> |
|
如题,sd卡读写问题,有的文件能写进去,有的文件不能写进去。。。 高手指点一下,文件系统用的是EFSL ARM7---EasyArm2200… 查看全部问答> |
|
我用的芯片是at91sam7x256,写了一段串口往上位机发送的小程序,但怎么调也是不通,初步估计是在初始化的时候没弄好,但是找不出问题在哪? #include \"/include/at91sam7S64/at91sam7s64.h\" #include \"/include/at91sam7s64/lib_at91sam7s64 ...… 查看全部问答> |
|
嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,东雪终将化去,春风定会吹来。具体步骤如下: 1、《C语言》第二版 谭浩强 ; 《C程序设计语言》第二版 徐宝文译机戒工业出版社 你能区分开指针数组和数组 ...… 查看全部问答> |
|
我新人,现在大二,专业方面仅仅刚开始入门。我这边有一个小的设计方案,不知可行性如何,望各位提供宝贵建议。谢谢! 想做一个装置,可以实现对多点温度、湿度以及光照强度的采样,后通过数据分析,来计算出一个模拟量(可以是模拟供水量 ...… 查看全部问答> |




