单片机电子闹钟(学号、日期、时间、闹钟)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机设计与实训设
计实训报告
题目:电子闹钟
系别:机械工程系
班级:机械设计制造及其自动化
姓名:XXX
学号:XXXXXXXXX
指导老师:XXXXXXX XXXXX XX 2016年5月9日——2016年5月13日
目录
第一章实训目的 (3)
第二章实训设计实现的性能指标 (3)
第三章设计思路 (3)
4.1设计原理图 (3)
4.2程序流程图 (4)
主函数流程图 (4)
其它子程序流程图 (4)
4.3程序 (5)
3.3.1Main.h (5)
2.3.2main.c (6)
2.3.3display_xuehao.c (13)
2.3.4 shijian.c (14)
2.3.5 riqi.c (19)
2.3.6 naozhong.c (24)
2.3.7 kes_can.c (28)
第四章实训完成情况 (31)
第五章实训总结体会 (32)
第一章实训目的
通过课程设计,使学生巩固和加深对单片机基本知识的理解,学会查寻资料、方案设计、方案比较,以及单元电路设计计算等环节,进一步提高学生综合运用所学知识的能力,提高分析解决实际问题的能力。锻炼分析、解决电子电路问题的实际本领,通过此综合训练,为以后毕业设计打下一定的基础。
第二章实训设计实现的性能指标
本色设计利用单片机分时原理,主要实现4个功能:学号显示、时分秒显示、年月日显示、闹钟。除学号外每个参数都可以进行调整数值,调整某个参数是这个参数闪烁,闹钟可以设为是否有效,当闹钟设置时间和时间一致时,蜂鸣器响起歌曲,
第三章设计思路
4.1设计原理图
4.2程序流程图主函数流程图
其它子程序流程图
4.3程序
3.3.1Main.h #ifndef __main_h__ #define __main_h__
#include
#define duanx P3
#define weix P1
sbit gnkey=P2^4; sbit xzkey=P2^5;
sbit jiakey=P2^6;
sbit jiankey=P2^7;
sbit fmq=P2^0;
void display_xh();
void shijian();
void riqi();
void naozhong();
void keyscan();
#endif
2.3.2main.c
#include "main.h"
uchar count_100us=0; //100us计数值
uchar count_1ms=0; //1ms计数值
uchar count_5ms=0; //5ms计数值
uchar count_10ms=0; //10ms计数值
uchar count_100ms=0; //100ms计数值
uchar count_500ms=0; //500ms计数值
uchar count_1s=0; //1s计数值
uchar count_1f=0; //1分计数值uchar count_1h=0; //1小时计数值uchar count_1d=9; //1天计数值uchar count_1y=2016; //1年计数值
uchar count_1m=5; //1月计数值
bit flag_100us=0; //100Us标志位
bit flag_1ms=0; //1ms标志位
bit flag_5ms=0; //5ms标志位
bit flag_10ms=0; //10ms标志位
bit flag_100ms=0; //100ms标志位
bit flag_500ms=0; //500ms标志位
bit flag_1s=0; //1s标志位
bit flag_1f=0; //一分标志位
bit flag_1h=0; //1小时标志位
bit flag_1d=0; //1天标志位
bit flag_500ms_s=0; //500ms闪烁标志位
uchar gnkeyset=0; //功能键值,用来判断当前要显示和执行的程序
uchar count_fmq; //闹钟计数值
extern uchar count_nzhs; //闹钟秒存储值
extern uchar count_nzhf; //闹钟分存储值
extern uchar count_nzhh; //闹钟时存储值
bit flag_naozhong; //闹钟标志位
//**********************************************************初始化子程序
void Timer0Init() //100微秒@12MHz
{
TMOD = 0x02; //设置定时器模式
TL0 = 0x9c; //设置定时初值
TH0 = 0x9c; //设置定时重载值
TR0 = 1; //定时器0开始计时
ET0 = 1; //申请定时器中断
EA=1; //开启总中断
}
//**********************************************************主函数
void main ()
{
Timer0Init(); //100微秒@12MHz
while(1)
{
if(gnkeyset==0)display_xh();
if(gnkeyset==1)shijian();
if(gnkeyset==2)riqi();
if(gnkeyset==3)naozhong();
//************************************************************************* **********闹钟判断
if(count_nzhs==count_1s&&count_nzhf==count_1f&&count_nzhh==count_1h)
flag_naozhong=1;
if(flag_naozhong==1&&flag_500ms_s==0)
{