资源简介

整个系统以STC89C51单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统。其它个模块围绕着单片机最小系统展开。其中包括,显示设备使用1602液晶,可以同时显示年、月、日、星期、时、分、秒等基本时间信息;时钟模块采用DS1302芯片,初始化之后,就会开始运行计算时间,单片机只需进行时间信息的读取即可。本设计还有4个按键作为操作输入设备,可以进行时间、闹钟的设置等,同时还有蜂鸣器模块,用来实现闹钟的闹铃。最后是供电采用常用的USB 5V进行供电。

资源截图

代码片段和文件信息

#include 
#include 

#define uchar unsigned char // 以后unsigned char就可以用uchar代替
#define uint  unsigned int // 以后unsigned int 就可以用uint 代替

sfr ISP_DATA  = 0xe2; // 数据寄存器
sfr ISP_ADDRH = 0xe3; // 地址寄存器高八位
sfr ISP_ADDRL = 0xe4; // 地址寄存器低八位
sfr ISP_CMD   = 0xe5; // 命令寄存器
sfr ISP_TRIG  = 0xe6; // 命令触发寄存器
sfr ISP_CONTR = 0xe7; // 命令寄存器

sbit LcdRs_P    = P2^7;       // 1602液晶的RS管脚       
sbit LcdRw_P    = P2^6;       // 1602液晶的RW管脚 
sbit LcdEn_P    = P2^5;       // 1602液晶的EN管脚
sbit RST_P      = P1^3; // 时钟芯片DS1302的RST管脚
sbit SDA_P      = P1^2; // 时钟芯片DS1302的SDA管脚
sbit SCK_P      = P1^1; // 时钟芯片DS1302的SCK管脚
sbit KeySet_P   = P3^2; // 设置时间按键
sbit KeyClock_P = P3^3; // 设置闹钟按键
sbit KeyDown_P  = P3^4; // 减按键
sbit KeyUp_P    = P3^5; // 加按键
sbit Buzzer_P   = P2^0; // 蜂鸣器


uchar TimeBuff[7]={16856183050}; // 时间数组,默认2016年8月5日,星期五,16:30:50
// TimeBuff[0] 代表年份,范围00-99
// TimeBuff[1] 代表月份,范围1-12
// TimeBuff[2] 代表日期,范围1-31
// TimeBuff[3] 代表星期,范围1-7,1是星期天,2是星期一... ...
// TimeBuff[4] 代表小时,范围00-23
// TimeBuff[5] 代表分钟,范围00-59
// TimeBuff[6] 代表秒钟,范围00-59


uchar Clock_Hour; // 闹钟的小时
uchar Clock_Minute; // 闹钟的分钟
uchar Clock_Swt; // 闹钟的开关
uchar Buzzer_Flag=0; // 蜂鸣器工作标志



/*********************************************************/
// 单片机内部EEPROM不使能
/*********************************************************/
void ISP_Disable()
{
ISP_CONTR = 0;
ISP_ADDRH = 0;
ISP_ADDRL = 0;
}


/*********************************************************/
// 从单片机内部EEPROM读一个字节,从0x2000地址开始
/*********************************************************/
unsigned char EEPROM_Read(unsigned int add)
{
ISP_DATA  = 0x00;
ISP_CONTR = 0x83;
ISP_CMD   = 0x01;
ISP_ADDRH = (unsigned char)(add>>8);
ISP_ADDRL = (unsigned char)(add&0xff);
// 对STC89C51系列来说,每次要写入0x46,再写入0xB9ISP/IAP才会生效
ISP_TRIG  = 0x46;    
ISP_TRIG  = 0xB9;
_nop_();
ISP_Disable();
return (ISP_DATA);
}


/*********************************************************/
// 往单片机内部EEPROM写一个字节,从0x2000地址开始
/*********************************************************/
void EEPROM_Write(unsigned int addunsigned char ch)
{
ISP_CONTR = 0x83;
ISP_CMD   = 0x02;
ISP_ADDRH = (unsigned char)(add>>8);
ISP_ADDRL = (unsigned char)(add&0xff);
ISP_DATA  = ch;
ISP_TRIG  = 0x46;
ISP_TRIG  = 0xB9;
_nop_();
ISP_Disable();
}


/*********************************************************/
// 擦除单片机内部EEPROM的一个扇区
// 写8个扇区中随便一个的地址,便擦除该扇区,写入前要先擦除
/*********************************************************/
void Sector_Erase(unsigned int add)   
{
ISP_CONTR = 0x83;
ISP_CMD   = 0x03;
ISP_ADDRH = (unsigned char)(add>>8);
ISP_ADDRL = (unsigned char)(add&0xff);
ISP_TRIG  = 0x46;
ISP_TRIG  = 0xB9;
_nop_();
ISP_Disable();
}


/*********************************************************/
// 毫秒级的延时函数,time是要延时的毫秒数
/*********************************************************/
void DelayMs(u

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-12-29 00:04  万年历\
     文件       23704  2017-09-12 21:50  万年历\main.c
     目录           0  2016-08-15 16:01  万年历\仿真\
     文件       92073  2016-08-09 23:10  万年历\仿真\Last Loaded simulation.DBK
     文件       92073  2016-08-09 23:17  万年历\仿真\simulation.DSN
     文件         909  2016-08-15 16:01  万年历\仿真\simulation.PWI
     文件       27136  2016-08-10 00:01  万年历\元件清单.doc
     目录           0  2017-12-28 23:01  万年历\图片\
     文件       45258  2017-09-12 22:12  万年历\图片\仿真.PNG
     文件     1466564  2017-09-13 16:01  万年历\图片\正面.jpg
     文件     1384554  2017-09-13 16:00  万年历\图片\背面.jpg
     文件      838511  2017-09-12 22:51  万年历\图片\调试.jpg
     文件       44371  2017-09-12 21:52  万年历\图片\运行.PNG
     目录           0  2017-12-29 00:02  万年历\电路图(原理图和PCB图)\
     目录           0  2017-12-29 00:02  万年历\电路图(原理图和PCB图)\Altium Designer格式\
     文件      152576  2016-09-19 21:15  万年历\电路图(原理图和PCB图)\Altium Designer格式\PCB.PcbDoc
     文件       87040  2016-08-15 16:13  万年历\电路图(原理图和PCB图)\Altium Designer格式\原理图-1.SCHDOC
     文件       83968  2016-10-02 07:03  万年历\电路图(原理图和PCB图)\Altium Designer格式\原理图-2.SCHDOC
     目录           0  2017-12-29 00:02  万年历\电路图(原理图和PCB图)\Protel 99SE格式\
     文件      105440  2016-08-05 11:31  万年历\电路图(原理图和PCB图)\Protel 99SE格式\PCB.pcb
     文件       27878  2016-08-15 16:08  万年历\电路图(原理图和PCB图)\Protel 99SE格式\原理图-1.sch
     文件       27364  2016-10-02 07:03  万年历\电路图(原理图和PCB图)\Protel 99SE格式\原理图-2.sch
     目录           0  2017-12-29 00:02  万年历\电路图(原理图和PCB图)\word格式\
     文件       28672  2016-08-05 11:32  万年历\电路图(原理图和PCB图)\word格式\PCB.doc
     文件       25088  2016-08-15 16:09  万年历\电路图(原理图和PCB图)\word格式\原理图-1.doc
     文件       24064  2016-10-02 07:03  万年历\电路图(原理图和PCB图)\word格式\原理图-2.doc
     文件     4133888  2017-12-28 23:02  万年历\课程设计报告.doc

评论

共有 条评论