单片机课设万年历报告Word下载.docx
- 文档编号:13469063
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:17
- 大小:49.22KB
单片机课设万年历报告Word下载.docx
《单片机课设万年历报告Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课设万年历报告Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
2、单片机芯片的选择方案和论证:
采用89C51芯片作为硬件核心,数码管显示,为使用户更清楚更明白,万年历的日期和时间是分开显示,同时分别对应两个74LS138芯片用于控制数码管显示,还有74LS373译码器芯片,74LS21芯片是用于控制键盘的功能。
如图所示:
74LS138的八个输出引脚,任何时刻要么全为高电平1也就是芯片处于不工作状态,要么只有一个为低电平0,其余7个输出引脚全为高电平1。
如果出现两个输出引脚同时为0的情况,说明该芯片已经损坏。
74LS373原理图
当74LS373用作地址锁存器时,应使OE为低电平,此时锁存使能端G为高电平时,输出Q1~Q8状态与输入端D1~D8状态一样;
当G发生负的跳变时,输入端D1~D8数据锁入Q1~Q8。
51单片机的ALE信号可以直接与74LS373的G连接。
在MCS-51单片机系统中,常采用74LS373作为地址锁存器使用,其连接方法如上图所示。
其中输入端1D~8D接至单片机的P0口,输出端提供的是低8位地址,G端接至单片机的地址锁存允许信号ALE。
输出允许端OE接地,表示输出三态门一直打开。
显示模块选择方案:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
使用多个数码管显示LED数码管是利用二极管发光显示数字和字母,具有亮度大、接口设计比较容易,价格相对较便宜等优点,所以采用了LED数码管作为显示。
数码管电路
3、键盘的选择
采用独立式按键电路。
每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。
而且在本次实验课设用的键盘很少,所以采用独立式按键比较实用。
4、实现定时:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
5、电路设计最终方案决定
综上各方案所述,对此次作品的方案选定:
采用AT89S51作为主控制系统;
LED数码管动态扫描作为显示。
两个74LS138和一个74LS21芯片。
图-5LED动态扫描显示
实验心得:
经过了两个星期的学习和实验,我终于完成了单片机万年历课程设计。
从开始接到课设要求到万年历的实现,再到报告的完成,每走一步对我来说都是新的尝试与挑战,这也是我在大学期间独立完成的最大的项目。
在这段时间里,我学到了很多知识也有很多感受,我开始了独立的学习和试验,查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己非常稚嫩作品一步步完善起来,每一次改进都是我学习的收获。
这次报告的书写也会使我终身受益,我感受到做报告是要用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。
通过本次单片机课设,获得了丰富的理论知识,极提高了实践能力,单片机领域这对我今后进一步学习计算机方面的知识有极大的帮助。
参考文献
[1]建忠.单片机原理与应用.电子科技大学出版2006.02
[2]俊谟.单片机中级教程.航空航天大学出版2006.03
[3]余发山.单片机原理与与应用技术.中国矿业大学2003.12
[4]凌霄.微型计算机原理与应用.中国矿业大学2004.08
[5]何立民.单片机应用技术选编.航空航天大学2000.08
[6]万光毅.单片机实验与实践教程.航空航天大学2005.01
[7]周航慈.单片机程序设计基础.航空航天大学1991.11
[8]黄遵熹.单片机原理接口与应用.西北工业大学1997.05
[9]振江,杜铁军,群.流行单片机实用子程序与应用实例[M].:
电子科技大学,2002
[10]子文编单片机原理与应用电子科技大学2006
[11]王法能编单片机原理与应用科学2004
附源代码:
#include<
reg51.h>
sbitp1_0=P1^0;
sbitp1_1=P1^1;
sbitp1_2=P1^2;
sbitp1_3=P1^3;
sbitp1_4=P1^4;
sbitp3_2=P3^2;
unsignedcharcodezimal[13]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,
0x40,0x80,0x00,};
/*共阴极字形代码,显示0-9字形码,最后三个代码分别表示‘-’,‘.’‘熄灭’*/
unsignedintyear,month,day,hour,minute,second;
//定义变量年,月,日,时,分,秒;
voiddelay();
//延时函数;
voidxianshi(unsignedinth,min,s);
//显示时间函数;
voidymdxianshi(unsignedintyear,month,day);
//显示年月日;
voidfengming();
//蜂鸣器函数;
intleap(unsignedintyear);
//判断闰年函数;
unsignedinth,m,s=5;
//记录定时时间;
unsignedintmode=1,td=0,yw=0;
//状态;
voidmain()
{
year=2010;
month=5;
day=20;
hour=23;
minute=59;
second=0;
/*初始化年,月,日,时,分,秒*/
TMOD=0x10;
//定时器1;
模式1;
TL1=0xb0;
TH1=0x3c;
定时时间为50ms
TR1=1;
//打开定时器1
ET1=1;
//定时器1溢出中断允许位
EX0=1;
//外部中断0允许
IT0=1;
//外部中断0触发方式为边沿触发
EA=1;
while
(1)//主循环;
{
if(hour==h&
&
minute==m&
second==s)fengming();
//定时时间到,蜂鸣器响;
if(mode%2==0)ymdxianshi(year,month,day);
//显示年月日
else
if(td%3==2)xianshi(h,m,s);
//定时状态;
elsexianshi(hour,minute,second);
//正常显示时间状态;
}
}
voiddelay()//延时函数;
unsignedinti;
for(i=0;
i<
400;
i++);
voidymdxianshi(unsignedintyear,month,day)//年月日的显示与调整
{inti,j;
i++;
if(td%2==1&
yw%8==0&
i%2==0)//点亮年的第一个
P2=0x7f;
P0=zimal[12];
for(j=0;
j<
2000;
j++);
}
P2=0x7f;
P0=zimal[year/1000];
delay();
yw%8==1&
i%2==0)//点亮年的第二个
P2=0xbf;
for(j=0;
1800;
P2=0xbf;
P0=zimal[year%1000/100];
yw%8==2&
i%2==0)//点亮年的第三个
P2=0xdf;
else
P2=0xdf;
P0=zimal[year%100/10];
if(td%2==1&
yw%8==3&
i%2==0)//点亮年的第四个
P2=0xef;
else//显示年
P0=zimal[year%10];
yw%8==4&
i%2==0)//显示月点亮
P2=0xf7;
P0=zimal[12];
P2=0xfb;
P0=zimal[month/10];
P0=zimal[month%10];
P2=0xef;
//显示点
P0=zimal[11];
100;
P2=0xfb;
yw%8==5&
i%2==0)//显示日的第一个
P2=0xfd;
P0=zimal[12];
{
P0=zimal[day/10];
yw%8==6&
i%2==0)//显示日的第二个
P2=0xfe;
P2=0xfe;
P0=zimal[day%10];
delay();
voidxianshi(unsignedinth,min,s)//显示时间函数;
{unsignedinti,j;
i++;
if(td%3!
=0&
yw%6==0&
i%2==0)
{P2=0x7f;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 万年历 报告