自制万年历
更新时间:2024-01-14 00:54:01 阅读量: 教育文库 文档下载
武汉理工大学《能力拓展训练》课程设计说明书
数字定时器设计
摘 要
单片机在电子产品中的应用越来越广泛,特别是51系列的单片机,由于其使用方便、价格低廉等优势,在市场上占有很大的份额。AT89S52就是51系列中的一个比较成熟的型号,它完全兼容51单片机的指令。
本文详细介绍了基于AT89S52单片机的数字电子钟的设计,本电子钟可以实现日期、时间的显示和调整,带有整点提示和一个闹钟,并且可以显示当前气温。
本设计包括硬件设计和软件设计两部分。主要硬件有:三端稳压器LM7805、AT89S52单片机、字符型液晶显示模块HY1602A和若干按键等。软件大致思路为:使用12MHz的晶振,单片机内部的定时器0工作在方式1,每计数50000个机器周期(即50ms)产生一次中断,中断20次就是一秒,这样就可以实现精确计时的目的,不断扫描按键,如果有按键按下,则对按键做出相应的响应。
关键字:单片机; 电子钟; LCD1602;
武汉理工大学《能力拓展训练》课程设计说明书
Abstract
MCU in the application of electronic products becomes more widely, particularly the 51 series of MCU, because of its ease of use, low prices and other advantages,it’s in a large market share. AT89S52 is a more mature models in the 51series, it is fully compatible with the directive MCU 51.
This paper describes the MCU based on the AT89S52 the design of digital electronic clock, the electronic clock can be achieved date, time and adjust the show, it also has the exact point timekeeping and a clock,for the better it can display the current temperature.
The design includes hardware and software design in two parts. Main hardware: AT89S52 MCU, character LCD module HY1602A, a number of buttons. the general idea for Software: by use of 12 MHz crystal, the MCU's internal timer 0 works in the methods 1, each count 50,000 machine cycle (50 ms) resulted in an interruption, Composition a second by interruptting 20 times, so that you can achieve precise The purpose of time. it will be displayed the real-time data on the LCD1602 at the same time, and constantly scan button, if a button is depressed, it will be produce the corresponding response with the button.
Keywords: MCU; electronic clock; LCD1602;
武汉理工大学《能力拓展训练》课程设计说明书
目 录
1 设计方案 ..................................................... 1
1.1 设计要求 ............................................... 1 1.2 设计方案论证 ........................................... 1 2 硬件设计 ..................................................... 2
2.1 器件选型 ............................................... 2 2.2 器件介绍 ............................................... 2
2.2.1单片机AT89S52 .................................... 2 2.2.2 LCD1602显示模块 ................................. 3
3 软件设计 .................................................... 5
3.1 软件设计思路 .......................... 错误!未定义书签。
3.1.1 实现功能 ........................ 错误!未定义书签。 3.1.2编程思路 ......................................... 5 3.1.3操作及功能介绍 .................. 错误!未定义书签。 3.2 主程序流程图 ........................................... 6 4 仿真图 ....................................................... 7 5 设计体会及小结 ............................................... 7 参考文献 ...................................... 错误!未定义书签。 附录1 硬件电路设计图 ......................... 错误!未定义书签。 附录2 主程序 ................................. 错误!未定义书签。
武汉理工大学《能力拓展训练》课程设计说明书
武汉理工大学《能力拓展训练》课程设计说明书
1 设计方案
1.1 设计要求
用AT89S52单片机,在1602LCD上显示年月日、星期、时分秒设计数字钟,内有3组可设置的时间的按钮,当你按动选择键第一次后,秒针开始闪烁,这时按动加或者减去调整秒的时间,当你按动选择键第二次后,分针开始闪烁, 这时按动加或者减去调整秒的时间,以此类推,当年份设定好以后,在按动一下选择键,时间开始走动。
1.2 设计方案论证
本设计是纯粹的应用性设计,主要以实现计时、定时、温度显示等功能为最终目的。设计以Atmel公司的AT89S52为核心,在最小系统的基础上扩展键盘,数字温度计,以及LCD显示模块,硬件设计简单节约,其功能的实现主要靠软件设计,所以软件在本设计中是最为重要的,在计时设计思路上有两种方案可以选取。
方案一:选用外部时钟芯片,单片机只负责其数据的存取读写以及外部辅助电路的扩展,这种方案的优点是计时准确,软件编写相对简单,但其要求对其芯片必须要有比较深的了解
方案二:利用单片机的内部时钟和定时器进行计数,这种方案电路简单,容易实现,但时间容易丢失,且长时间计数会有误差,而且软件编写也相对复杂。
考虑到本次设计的目的,采用方案二,并加入了年月日的扩展,由于时间和精力有限年月日只是进行简单的模拟,没有精确的进行计算。只是进行适当的扩展。
本设计包括硬件设计和软件设计两部分。主要硬件有AT89S52单片机、字符型液晶显示模块LCD1602和若干按键等。软件大致思路为:使用12MHz的
1
武汉理工大学《能力拓展训练》课程设计说明书
晶振,单片机内部的定时器0工作在方式1,每计数50000个机器周期(即50ms)产生一次中断,中断20次就是一秒,这样就可以实现精确计时的目的。在把实时数据显示在LCD1602上的同时,不断扫描按键,如果有按键按下,则对按键做出相应的响应。
2 硬件设计 2.1 器件选型
本设计选取主控MCU为Atmel公司的AT89S52,显示器件选择市面上常见的字符型液晶显示模块LCD1602A。
图2-1 硬件连接总图
2.2 器件介绍
2.2.1单片机AT89S52
2
武汉理工大学《能力拓展训练》课程设计说明书
一、功能特性描述
AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
二、外部引脚图
如图2-2为单片机AT89S52的引脚图。
图2-2AT89S52引脚图
2.2.2 LCD1602显示模块
一、LCD1602概述
3
武汉理工大学《能力拓展训练》课程设计说明书
字符型型液晶是一种用5×7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等,最常用的为2行16个字。本设计所采用的LCD1602即为最常用的2行16个字。
下面是HY1602A液晶模块的一些主要技术参数: 1、逻辑工作电压(VDD):+4.5~+5.5V 2、LCD驱动电压(VDD-VL):+4.5~+13.0V
3、工作温度(Ta):0~60℃(常温)/-20~75℃(宽温) 4、工作电流:<2.0mA 二、引脚图及功能介绍
本设计使用带背光的液晶模块1602采用标准的16脚接口,如图2-3,其引脚功能如下:
图2-3 LCD1602引脚图
第1脚:VSS为电源地,接GND。 第2脚:VDD接5V正电源。
第3脚:VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
4
武汉理工大学《能力拓展训练》课程设计说明书
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:BLA背光电源正极(+5V)输入引脚(本图未显示)。 第16脚:BLK背光电源负极,接GND(本图未显示)。 注意:液晶模块背光须消耗电流约为50mA左右。
3 软件设计
3.1.2编程思路
1. 给以下变量赋初值:年(Year)、月(Month)、日(Day)、时(Hour)、分(Min)、秒(Sec)。
2. 因为晶振频率为12MHz,所以计数频率为12MHz/12=1MHz,这就需要计数器0计数1000000次才可以达到一秒钟。我们用定时器0工作在方式1状态,每次计数50000次,如此进行20次,即可凑够一秒钟。这样可以得到初始化定时器的控制字:TMOD=0x01,计数初值65536-50000=15536即 0x3cb0,这样就可以设计一个计数一秒的函数。
3. 读相应变量的值,送入LCD显示时间等信息。
4. 不断的扫描按键,并且响应按键输入。在进入设定模式后,所有时间变量被过渡变量代替,如果确认设置,则过渡变量赋给时间变量,如果取消设置,则还使用原时间变量。
5
武汉理工大学《能力拓展训练》课程设计说明书
3.2 主程序流程图
判断是否有 有 扫描键盘 初始化 开始
键按下 设定时间 否 显示时间 结束 图3-1 主程序流程图
6
武汉理工大学《能力拓展训练》课程设计说明书
4 仿真图
5 设计体会及小结
本设计在Proteus仿真软件测试成功,但是,此电子钟有自身的先天缺陷。首先,由于采用单片机内部定时器产生时间信号,所以如果时钟意外掉电,则会丢失当前的时间和闹钟等数据,需要重新设定。由于本人能力和时间有限,只能暂时实现本既定方案。
课设也大大锻炼了我们的自学能力。比如我们要用到的很多芯片,不可能样样都在课本上学习过的,学过的毕竟是少数,在以后的学习实践和工作中,要用的东西五花八门,怎么可能四年都学遍呢?而且像我们学的这门迅速发展中的学科,知识更新一日千里,要准备好学习一辈子的,在大学里课堂上所学
7
武汉理工大学《能力拓展训练》课程设计说明书
的只是方法,至于其中的内容,还要靠自己去挖掘,所谓“师傅领进门,修行在个人”就是这个道理,这才是成年人的学习生活,因此,通过课设,我们掌握了一项很基本但对于我们来讲很重要且具有十分深刻意义的技能,就是学会自学,这是前所未有的。
源程序
#include
#define uchar unsigned char #define uint unsigned int
uchar code table[]=\ 2012-12-30 MON\ uchar code table1[]=\ 23:59:54\
sbit RS=P2^0; sbit E=P2^2; sbit xue=P3^0; sbit jia=P3^3; sbit jian=P3^7; sbit di=P3^4;
uchar num,flag,a,nian,yue,ri; uchar shi,fen,miao; void delay(uchar z) {
uint x,y;
for(x=z;x>0;x--)
8
武汉理工大学《能力拓展训练》课程设计说明书
for(y=110;y>0;y--);
}
void R_COMD(uchar i) { RS=0;
P0=i; delay(5);
E=1;
delay(5);
E=0;
}
void R_date(uchar date) { RS=1;
P0=date; delay(5);
E=1;
delay(5);
E=0;
}
void inti ()
9
武汉理工大学《能力拓展训练》课程设计说明书
{
di=0;
E=0;
R_COMD(0x01); R_COMD(0x38);
R_COMD(0x0c); R_COMD(0x06); R_COMD(0x80); TMOD=0X01;
ET0=1;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; TR0=1;
for(num=0;num<16;num++) {
R_date(table[num]); }
R_COMD(0x80+0x40);
for(num=0;num<12;num++) {
R_date(table1[num]); delay(20);
10
武汉理工大学《能力拓展训练》课程设计说明书
}
delay(20); }
void write_sfm(uchar add,uchar datt)
{ }
uchar shi,ge; shi=datt/10; ge=datt;
R_COMD(0x80+0x40+add); R_date(0x30+shi); R_date(0x30+ge);
void write_nyr(uchar add,uchar num)
{ }
void keyscan() {
uchar shi,ge; shi=num/10; ge=num; R_COMD(0x80+add); R_date(0x30+shi); R_date(0x30+ge);
11
武汉理工大学《能力拓展训练》课程设计说明书
uchar aa; // miao=0;
if(xue==0) {
aa++; delay(5); if(xue==0) { if(aa==1) {
while(xue==0); TR0=0;
R_COMD(0x0d);
R_COMD(0x80+0x40+11); } if(aa==2) {
while(xue==0);
R_COMD(0x80+0x40+8);
}
if(aa==3) {
while(xue==0);
R_COMD(0x80+0x40+5);
}
12
武汉理工大学《能力拓展训练》课程设计说明书
if(aa==4) {
while(xue==0); R_COMD(0x80+11);
} if(aa==5) {
while(xue==0); R_COMD(0x80+8); } if(aa==6) {
while(xue==0); R_COMD(0x80+5); } if(aa==7) {
while(xue==0); aa=0; TR0=1; R_COMD(0x0c);
13
武汉理工大学《能力拓展训练》课程设计说明书
}
}
}
if(aa!=0) {
if(aa==1) {
if(jia==0) {
delay(5); if(jia==0) {
while(jia==0); miao++; } {
delay(5); if(jian==0) {
if(jian==0) if(miao==60) miao=0; write_sfm(10,miao); R_COMD(0x80+0x40+11); }
14
武汉理工大学《能力拓展训练》课程设计说明书
while(jian==0); miao--; } }
if(miao==-1)
miao=59;
write_sfm(10,miao); R_COMD(0x80+0x40+11); }
if(aa==2) { {
delay(5); if(jia==0) {
while(jia==0); fen++;
if(fen==60) fen=0; write_sfm(7,fen);
R_COMD(0x80+0x40+8); if(jia==0)
15
武汉理工大学《能力拓展训练》课程设计说明书
} {
delay(5); if(jian==0) {
while(jian==0); fen--; } } if(aa==3) { {
delay(5); if(jia==0)
if(jia==0) } if(fen==-1) fen=59; write_sfm(7,fen);
R_COMD(0x80+0x40+8); if(jian==0) }
16
武汉理工大学《能力拓展训练》课程设计说明书
{
while(jia==0); shi++;
if(shi==24) shi=0; write_sfm(4,shi);
R_COMD(0x80+0x40+5);
}
}
if(jian==0) {
delay(5); if(jian==0) {
while(jian==0); shi--; if(shi==-1)
shi=23; write_sfm(4,shi);
R_COMD(0x80+0x40+5); }
17
武汉理工大学《能力拓展训练》课程设计说明书
} }
if(aa==4)
{ {
delay(5); if(jia==0) {
while(jia==0); ri++;
if(ri==31) ri=1; write_nyr(10,ri); R_COMD(0x80+11); if(jia==0)
}
}
if(jian==0) {
delay(5);
18
武汉理工大学《能力拓展训练》课程设计说明书
if(jian==0) {
while(jian==0); ri--; if(ri==-1) } }
ri=30; write_nyr(10,ri); R_COMD(0x80+11); }
if(aa==5) { {
delay(5); if(jia==0) {
while(jia==0);
yue++; if(jia==0)
19
武汉理工大学《能力拓展训练》课程设计说明书
if(yue==13) yue=1; write_nyr(7,yue); R_COMD(0x80+8);
}
}
if(jian==0) {
delay(5); if(jian==0) {
while(jian==0);
yue--;
if(yue==-1) }
yue=12; write_nyr(7,yue); R_COMD(0x80+8); }
20
武汉理工大学《能力拓展训练》课程设计说明书
}
if(aa==6) { {
delay(5); if(jia==0) {
while(jia==0);
nian++; if(nian==2099) nian=2000; write_nyr(4,nian); R_COMD(0x80+5); if(jia==0)
}
}
if(jian==0)
21
武汉理工大学《能力拓展训练》课程设计说明书
{
delay(5); if(jian==0) {
while(jian==0);
} }
}
}
void main() { inti();
while(1) { keyscan();
nian--;
if(nian==-1) nian=2099; write_nyr(4,nian); R_COMD(0x80+5);
}
22
武汉理工大学《能力拓展训练》课程设计说明书
}
}
void temer() interrupt 1 { TH0=(65536-50000)/256;
TL0=(65536-50000)%6; a++; if(a==20) { a=0; miao++; if(miao==60) {
miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; ri++; if(ri==31)
{
23
武汉理工大学《能力拓展训练》课程设计说明书
ri=1; yue++; if(yue==13) { yue=1; nian++; write_nyr(4,nian); }
write_nyr(7,yue); }
write_nyr(10,ri); }
write_sfm(4,shi); }
write_sfm(7,fen);
}
write_sfm(10,miao); }
}
24
正在阅读:
自制万年历01-14
高考语文(通用版)二轮专题复习天天增分练:(35)病句+语言连贯+图文转换+文言翻译+- 副本 doc09-13
模拟题 化工流程题专项训练10-27
东财《论文写作指导》在线作业一201604-19
我喜欢这堂课作文600字06-30
湖南大学操作系统期末考试卷201411-19
中碱玻璃纤维网格布项目可行性研究报告(发改立项备案+2013年最05-12
操作系统作业题01-02
数据库系统概论试题及答案123410-03
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 万年历
- 自制
- 策划书
- Cultural Differences of Chinese and Western Courtesy Language 中西方礼貌用语的文化差异
- 武昌区2013届高三年级五月供题训练 - 图文
- 经济效益及合同等-XX隧道 - 图文
- 七大策略教你进名企
- 小学语文沪教版三年级下册第二单元第6课《新年的礼物》优质课公开课教案教师资格证面试试讲教案
- C教材中的源程序代码
- CVT原理
- 美术史及其方法简介
- 网络机房工程建设
- 新版人教版五年级上册英语Unit 4what can you do单元备课 课时备课
- 编码练习中的几个常见问题
- 2018年国家四川公务员考试行测试题:逻辑推理(8.21)
- 004第四编 侵权责任法
- 江苏省计算机一级操作题大全
- 8线二期疏散平台技术条件20100708
- 王泽华:中国互联网新闻传播中现存的突出问题、原因与防范对策
- 长兴县人民检察院 - 图文
- 期货基础知识终极密卷一
- 激发学生兴趣,叩开习作之门