MCS51 单片机最小系统设计.docx

上传人:b****7 文档编号:11329057 上传时间:2023-02-27 格式:DOCX 页数:18 大小:247.70KB
下载 相关 举报
MCS51 单片机最小系统设计.docx_第1页
第1页 / 共18页
MCS51 单片机最小系统设计.docx_第2页
第2页 / 共18页
MCS51 单片机最小系统设计.docx_第3页
第3页 / 共18页
MCS51 单片机最小系统设计.docx_第4页
第4页 / 共18页
MCS51 单片机最小系统设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

MCS51 单片机最小系统设计.docx

《MCS51 单片机最小系统设计.docx》由会员分享,可在线阅读,更多相关《MCS51 单片机最小系统设计.docx(18页珍藏版)》请在冰豆网上搜索。

MCS51 单片机最小系统设计.docx

MCS51单片机最小系统设计

MCS-51单片机最小系统设计

第一部分课程设计任务书

一、课程设计题目

MCS-51单片机最小系统设计

二、课程设计时间

一周

三、课程设计提交方式

提交打印课程设计报告

四、设计要求

(1)掌握AT89C51实验开发系统中的实验模块原理,利用Proteus画出电路原理图,使用C语言进行程序编写,利用Keil进行程序的调试;

(2)设计一个电子数码钟,实现24小时时间显示与调节;

(3)利用七段数码管进行时分秒的显示;

(4)设计三个功能键,第一个键选择时、分、秒调节,第二个和第三个键进行时间加减调节;

(6)写出完整的设计任务书;

第二部分课程设计报告

一、单片机发展概况

单片机是在一块硅片上集成了各种部件的微型计算机。

随着大规模集成电路技术的发展,可以将中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)定时器计数器以及输入/输出(I/O)接口电路等主要计算机部件,集成在一块电路芯片上。

虽然单片机只是一个芯片,但从组成和功能上,都已具有了微机系统的含义。

由于单片机能独立执行内部程序,所以又称它为微型控制器(Microcontroller)。

单片机自从问世以来,性能在不断的提高和完善,它不仅能够满足很多应用场合的需要,而且具有集成度高、功能强、速度快、体积小使用方便、性能可靠、价格低廉等特点。

因此,在工业控制、智能仪器仪表、数据采集和处理、通信、智能接口、商业营销等领域得到广泛的应用,并且正在逐步取代现有的多片微机应用系统。

单片机的潜力越来越被人们所重视,所以更扩大了单片机的应用范围,也进一步促进了单片机技术的发展,单片机的发展史大致可分为三个阶段。

第一阶段(1976-1978):

初级单片机微处理阶段。

该时期的单片机具有8位CPU,并行I/O端口、8位时序同步计数器,寻址范围4KB,但是没有串行口。

第二阶段(1978-1982):

高性能单片机微机处理阶段,该时期的单片机具有I/O串行端口,有多级中断处理系统,15位时序同步技术器,RAM、ROM容量加大,寻址范围可达64KB。

第三阶段(1982-至今)位单片机微处理改良型及16位单片机微处理阶段。

二、MCS-51单片机系统简介

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪烁可编程可擦除只读器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

单片机内部结构图为如图

三、设计思想

(1)根据功能要求选取所需的元件,绘制硬件电路图;

(2)根据功能要求绘制程序流程图;

(3)设置各功能模块,绘制流程图;

(4)根据流程图编写程序,并进行模拟仿真;

四、硬件电路设计

五、软件设计框图

主程序流程图

定时器中断流程图

按键检测流程图

时间显示过程流程图

六、程序源代码

#include

unsignedcharcode

table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};

unsignedcharflag,temp,t0,temp,hour,min,sec;

/********延时*******/

voiddelay()

{

unsignedcharx,y;

for(x=15;x>0;x--)

for(y=100;y>0;y--);

}

/***********初始化***********/

voidinit()

{

temp=0;

hour=0;

min=0;

sec=0;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

/************显示************/

voiddisplay(hour,min,sec)

{

P2=0xfe;

P0=table[hour/10];

delay();

P2=0xfd;

P0=table[hour%10];

delay();

P2=0xfb;

P0=table[10];

delay();

P2=0xf7;

P0=table[min/10];

delay();

P2=0xef;

P0=table[min%10];

delay();

P2=0xdf;

P0=table[10];

delay();

P2=0xbf;

P0=table[sec/10];

delay();

P2=0x7f;

P0=table[sec%10];

delay();

P0=table[11];

}

/**********主函数***********/

voidmain()

{

init();

while

(1)

{

P3=0xff;

flag=P3;

while(flag==0xef)

{

delay();

flag=P3;

while(flag==0xef)

{

temp++;

if(temp==4)

temp=0;

while(flag==0xef)

{EA=0;

flag=P3;

display(hour,min,sec);

}

}

}

if(temp==0)

{

EA=1;

display(hour,min,sec);

}

else

{

P3=0xff;

flag=P3;

while(flag==0xdf||flag==0xbf)

{

delay();

flag=P3;

while(flag==0xdf||flag==0xbf)

{

flag=P3;

if(temp==1)

{

switch(flag)

{

case0xdf:

{

hour++;

if(hour==24)

hour=0;

}

break;

case0xbf:

{

hour--;

if(hour==-1)

hour=23;

}

break;

}

}

if(temp==2)

{

switch(flag)

{

case0xdf:

{

min++;

if(min==60)

min=0;

}

break;

case0xbf:

{

min--;

if(min==-1)

min=59;

}

}

}

if(temp==3)

{

switch(flag)

{

case0xdf:

{

sec++;

if(sec==60)

sec=0;

}

break;

case0xbf:

{

sec--;

if(sec==-1)

sec=59;

}

}

}

while(flag==0xdf||flag==0xbf)

{

flag=P3;

display(hour,min,sec);

}

}

}

P2=0xfb;

P0=table[10];

delay();

P2=0xdf;

P0=table[10];

delay();

P2=0xbf;

P0=table[sec/10];

delay();

P2=0x7f;

P0=table[sec%10];

delay();

switch(temp)

{

case1:

{

P2=0xf7;

P0=table[min/10];

delay();

P2=0xef;

P0=table[min%10];

delay();

P2=0xbf;

P0=table[sec/10];

delay();

P2=0x7f;

P0=table[sec%10];

delay();

if(t0<=10)

{

P2=0xfe;

P0=table[hour/10];

delay();

P2=0xfd;

P0=table[hour%10];

delay();

}

else

{

P2=0xfe;

P0=table[11];

delay();

P2=0xfd;

P0=table[11];

delay();

}

}

break;

case2:

{

P2=0xfe;

P0=table[hour/10];

delay();

P2=0xfd;

P0=table[hour%10];

delay();

P2=0xbf;

P0=table[sec/10];

delay();

P2=0x7f;

P0=table[sec%10];

delay();

if(t0<10)

{

P2=0xf7;

P0=table[min/10];

delay();

P2=0xef;

P0=table[min%10];

delay();

}

else

{

P2=0xf7;

P0=table[11];

delay();

P2=0xef;

P0=table[11];

delay();

}

}

break;

case3:

{

P2=0xfe;

P0=table[hour/10];

delay();

P2=0xfd;

P0=table[hour%10];

delay();

P2=0xf7;

P0=table[min/10];

delay();

P2=0xef;

P0=table[min%10];

delay();

if(t0<10)

{

P2=0xbf;

P0=table[sec/10];

delay();

P2=0x7f;

P0=table[sec%10];

delay();

}

else

{

P2=0xbf;

P0=table[11];

delay();

P2=0x7f;

P0=table[11];

delay();

}

}

break;

}

}

}

}

/************定时器设定***********/

voidtimer0()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t0++;

if(t0==20)

{

t0=0;

sec++;

if(sec==60)

{

sec=0;

min++;

if(min==60)

{

min=0;

hour++;

if(hour==24)

{

hour=0;

}

}

}

}

}

七、结束语

通过这短短一周的实践,我感觉到自己从课本上学到的理论知识和实践仍有很大的差距。

遇到了不少问题,花费了很多的时间。

这让我重新反思我们的学习,深刻领悟到我们这个专业动手,实践的重要性。

这次的课程设计,让我学到了很多书本上学不到的东西,学到了实际应用时,是取用成本的最小化,做设计不仅要考虑大的方面,小的方面也必须做到完美。

同时,更加深刻的掌握了AT89C51的使用,还有七段数码管,按键的应用。

完成本次课程设计的过程,是一个从无到有的过程,开始时很迷茫,慢慢的变得烦躁,但是最后做完的的时候有一种很强烈的成就感。

八、参考文献

1.张鑫.单片机原理及应用(第二版).电子工业出版社

2.郭天祥.51单片机C语言教程.电子工业出版社

3.谭浩强.C程序设计(第二版).清华大学出版社

4欧阳斌林.单片机原理及应用.中国水利水电出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1