项目设计报告

时间:2024.3.15

江阴职业技术学院

项目设计报告

项目: 数字钟的设计与实现

专 业 应用电子技术专业

学生姓名 **

班 级 09应用电子(2)班

学 号 **

指导教师 **

完成日期 20XX年4月30日

摘 要

近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域.

本文介绍了一款基于AT89C51单片机数字钟的设计,通过多功能数字钟的设计思路,详细叙述了系统硬件、软件的具体实现过程。具体介绍应用Proteus的ISIS软件进行单片机系统的电子钟设计与仿真的实现方法。该方法既能准确验证所设计的系统是否满足技术要求,又能提高系统设计的效率和质量,降低开发成本,具有推广价值。

Abstract

In recent years, with computers in the infiltration and the development of large-scale integrated circuits. SCM application is steadily deepening, as it has strong function, small size, low power dissipation, low prices, reliable, easy to use features, it is particularly suited to and control of the system, increasingly widely used in various fields.

This paper introduced the design of digital clock based on SCM of AT89C51, the specific process of how the system hardware and software achieved were detailed description through the design of multifunction digital clock. Describes the application of Proteus's ISIS software of the electronic single-chip system clock to achieve the design and simulation methods in details.The method can not only test the property of the system precisely,but also improve development efficiency and reduce development cost,which values in popularity.

目 录

摘 要 1

Abstract 1

目 录 2

第一章 绪论 3

1.1单片机发展史 3

1.2单片机的特点 4

1.3课程设计目的和要求 3

第二章 总体方案 5

2.1硬件电路设计 错误!未定义书签。

2.3软件电路设计 错误!未定义书签。

第三章 仿真调试 错误!未定义书签。

3.1 keil调试 错误!未定义书签。

3.2 proteus调试 错误!未定义书签。

第四章 结论 1

4.1 总结 1

致 谢 2

参考资料 2

第一章 绪论

1.1 单片机发展史

如果将8位单片机的推出作为起点,那么单片机的发展历史大致可分为以下几个阶段:

(1)第一阶段(1976-1978):单片机的控索阶段。以Intel公司的MCS  48为代表。MCS 48的推出是在工控领域的控索,参与这一控索的公司还有Motorola 、Zilog等,都取得了满意的效果。这就是SCM的诞生年代,“单机片”一词即由此而来。

(2)第二阶段(1978-1982)单片机的完善阶段。Intel公司在MCS 48 基础上推出了完善的、典型的单片机系列MCS 51。它在以下几个方面奠定了典型的通用总线型单片机体系结构。

①完善的外部总线。MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。

②CPU外围功能单元的集中管理模式。

③体现工控特性的位地址空间及位操作方式。

④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。

(3)第三阶段(1982-1990):8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。Intel公司推出的MCS  96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。随着MCS  51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。

(4)第四阶段(1990—):微控制器的全面发展阶段。随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。

1.2 单片机的特点

由于单片机的这种结构形式及它所采取的半导体工艺,使其具有很多显著的特点,因而在各个领域都得到了迅猛的发展。单片机主要发如下特点:

(1)有优异的性能价格比。

(2)集成度高、体积小、有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。

(3)控制功能强。为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。

(4)低功耗、低电压,便于生产便携式产品。

(5)外部总线增加了I C(Inter-Integrated Circuit)及SPI(Serial Peripheral Interface)等串行总线方式,进一步缩小了体积,简化了结构。

(6)单片机的系统扩展和系统配置较典型、规范,容易构成各种规模的应用系统。

1.3课程设计目的和要求

1.目的

(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;

(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;

(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤;

(4)掌握半导体数码管显示器的使用;

(5)连接数字钟的工作原理。

2、要求

(1)设计能支持时、分、秒的时钟。

(2)时钟有时间调整功能。

(3)时钟具有闹钟功能。

第2章 总体方案

2.1硬件电路设计

1.硬件电路

项目设计报告

图2-1 电子钟硬件电路图

2.Protel电路图设计

图2-2 Protel 设计的电子钟电路原理图

3.Proteus 电路图设计

2.2 软件电路设计

1.程序流程图设计

2.源程序设计

以下为源程序:

#include<reg51.H>

#define s0 0x01 //调时/工作/移位

#define s1 0x02 //+1调时、调闹

#define s2 0x04 //调闹/工作/移位

#define s3 0x08 //开/停闹钟

unsigned char seg[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf,0xff};

char count=0,sec=0,min=0,hour=0,asec=0,amin=0,ahour=0,time[8]={0,0,10,0,0,10,0,0};

//时分秒,闹时分秒变量

bit Cflag=0,Aflag=0,alarm=0;

//工作/调时标志,工作/调闹标志,闹有效标志

sbit spk=P1^0;//蜂鸣器

unsigned char test(void);//键盘测试

unsigned char scan(void);//键盘扫描,返回键值

void secadd(void);//调时调闹+1

void minadd(void);

void houradd(void);

void display(void);//显示

void delay(void);//延时

void alarmspk(bit flag);//闹钟控制

unsigned char comp();//闹时比较

void change(void);//时分秒对显示缓冲刷新

void shanchange(void);

void schange(unsigned char a);

void mchange(unsigned char a);

void hchange(unsigned char a);

main()

{

unsigned char t,work=0;

//WORK为工作状态标志0:准备调时 1:调秒,2调分,3:调时

TMOD=0X01;

TH0=0X3C;

TL0=0XB0;

TR0=1;

ET0=1;

EA=1;

while(1)

{

display();

if(alarm)

{

if(comp())alarmspk(1);

}

t=scan();

switch(t)

{

case s0:if(!Aflag)

if(work==0)

{

Cflag=1;ET0=0;work++;

}

else if(work<=2)work++;

else

{

work=0;ET0=1;Cflag=0;

}break;

case s1:if(work==1)secadd();

else if(work==2) minadd();

else houradd();break;

case s2:if(!Cflag)

if(work==0)

{

Aflag=1; ET0=0;work++;

}

else if(work<=2)work++;

else {work=0; ET0=1; Aflag=0;}break;

case s3:alarm=~alarm;if(!alarm) alarmspk(0);

}//switch(t)

}//while(1)

}//main()

void houradd(void)

{

unsigned char temp;

if(Cflag)

{

temp=hour;

temp++;

if(temp>=24)temp=0;

hour=temp;

}

else

{

temp=ahour;

temp++;

if(temp>=24)temp=0;

ahour=temp;

}

hchange(temp);

}

void minadd(void)

{

unsigned char temp;

if(Cflag)

{

temp=min;

temp++;

if(temp>=60)temp=0;

min=temp;

}

else

{

temp=amin;

temp++;

if(temp>=60)temp=0;

amin=temp;

}

mchange(temp);

}

void secadd(void)

{

unsigned char temp;

if(Cflag)

{

temp=sec;

temp++;

if(temp>=60)temp=0;

sec=temp;

}

else

{

temp=asec;

temp++;

if(temp>=60)temp=0;

asec=temp;

}

schange(temp);

}

unsigned char scan(void)

{

unsigned char k,i;

if(test())

{

i=5;

while(i--)display();

if(k=test())

{

while(test())display();

return k;

}

}

return 0;

}

at0()interrupt 1 using 1

{

unsigned char cout;

TH0=0X3C;

TL0=0XB0;

cout++;

if(cout==20)

{

cout=0;

sec++;

if(sec>=60){sec=0;min++;}

if(min>=60){min=0;hour++;}

if(hour>=24)hour=0;

change();

}

}

void change(void)

{

if(!Aflag)

{

hchange(hour);

mchange(min);

schange(sec);

}

else

{

hchange(ahour);

mchange(amin);

schange(asec);

}

}

void hchange(unsigned char a)

{

time[0]=a/10;

time[1]=a%10;

}

void mchange(unsigned char a)

{

time[3]=a/10;

time[4]=a%10;

}

void schange(unsigned char a)

{

time[6]=a/10;

time[7]=a%10;

}

void shanchange(void)

{ unsigned char cout;

if(cout<=10)

{

time[2]=10;

time[5]=10;

}

else

{

time[2]=11;

time[5]=11;

}

}

void display(void)

{

unsigned char t,i;

for(i=0;i<8;i++)

{

t=time[i];

P0=~seg[t];

P2=i;

delay();

P0=0x00;

}

}

unsigned char test(void)

{

unsigned char k;

P3=0XFF;

k=P3;

k=~k;

return k;

}

void delay(void)

{

unsigned char i=250;

while(i--);

}

void alarmspk(bit flag)

{

if(flag) spk=0;

else spk=1;

}

unsigned char comp(void)

{

return(hour==ahour)&&(min==amin)&&(sec==asec)

}

第三章 仿真调试

3.1 Keil调试

(1)在Windows下运行Keil μVisiion3软件,进入Keil μVisiion3开发环境。

(2)在Keil μVisiion3选择Project/New Preject…,建立一个新的工程项目。

(3)给工程项目取名为clock,然后保存。

项目设计报告

(4)紧接着自动化弹出器件选择窗,选择Atmel公司的AT89C51,并在弹出窗口中选择否。

项目设计报告

(5)在Keil μVisiion32中选择File/New,打开程序编辑器。

(6)输入程序,检查无误后保存文件(扩展名.c)在工程项目相同的目录中。

(7)在Preject Workspace窗口中,选择Source Group1条目并单击右键,在 弹出的菜单在选择Add Files to Group ‘Source Group 1’。

(8)加入刚才保存的汇编程序源文件clock.c。注意,按一次Add按键即可,选完后单击Close退出。

(9)在Project Workspace窗口中,选择Target 1条目并单击右键,在弹出的菜单中选择Option for Target ‘Target 1‘,准备为Target 1配置编译环境。

(10)在Output页为Create HEX File项打勾,以便输出单片机烧写用HEX格式文件。

项目设计报告

(11)选项配置好后,在Keil μVisiion3中选择Project/Build target,编译工程项目。

(12)编译结果显示在Output Windows中,若有错,可双击错误提示行,然后定位到源程序中修改;若无误就可进行下面的软件调试。

项目设计报告

3.2 Proteus进行电子钟系统仿真

启动Proteus软件,按照元件清单选择所需要的元件,按照电路图连接好电路图,选择单片机,载入已编译好的程序(格式为HEX文件),然后运行,显示普通电子计时器的功能。

第四章 结论

4.1 总结

本文的电子钟系统是以单片机(AT89C52)为核心,具体介绍应用Protel DXP进行电路原理图设计,Keil C51软件调试程序以及Proteus的ISIS软件进行单片机系统的电子钟设计与仿真。实现了硬件软化的目的。

设计过程中我初步找到了单片机开发规律,更加了解了元原件的具体内容,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在完成单片机课程设计后,我们发现我们还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。但通过学习这一次实践,增强了我们的动手能力,提高和巩固了单片机方面的知识,特别是硬件方面。

致 谢

首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多的难题,开阔的思维、敏锐的洞察力以及详细的修改意见一直给我很大的启发,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。

其次,我要感谢帮助过和我一组的同学,他们也为我解决了不少我不太明白的设计上的难题以及对我的鼓励与建议。不断得到他们的关心与帮助,使我在学习和生活中不断得到友谊的温暖与关怀,最重要的是一种精神上的激励,让我非常感动。同时也想在此课题上帮助过我的同学和老师表示衷心的感谢。

参考资料

[1]杨立民.单片机技术及应用[M].西安:西安电子科技大学出版社.1997.90~120.

[2]包军卫,单片机课件.江阴职业技术学院.20XX.3-

更多相关推荐:
Java项目设计报告

分类号密级学号Java项目报告学生信息管理系统作者姓名所在系部专业指导教师20xx年06月27日摘要现代社会随着科技的发展如果依然采用人工管理庞大的数据库是一项繁重枯燥的工作无论是数据录入查询还是...

C语言项目设计报告

电子科技大学成都学院课程设计报告电子科技大学成都学院电子工程系课程设计报告课程名称C语言程序设计能力教程设计题目万年历指导教师组杨剑学生学号1140810429学生姓名王玲琳电子工程系制20xx年12月电子科技...

装修项目设计报告

1装修项目集成管理设计房屋装修所涉及的主要人员包括项目经理和客户分别是负责管理项目的人和会使用项目产品的组织或个人项目主要的干系人有执行组织发起人权力阶层项目管理办公室等正确的识别和分析项目的干系人是制定计划的...

2项目设计工作总结报告

来宾市兴宾区五山乡止马村等2个村土地整治项目设计工作总结报告编制单位北京国泰天平行土地规划设计有限公司南宁分公司日期二O一二年七月二十五日一项目概况11建设规模项目区总面积为121101hm实施面积103111...

Photoshop项目设计报告

信息工程系Photoshop项目设计报告课程名称图形图像处理设计题目信息工程系三折页设计专业班级20xx级电子商务二班学生姓名高芳学号7指导教师李华勇起止日期20xx年6月21日至6月28日信息工程系三折页设计...

WEB项目设计报告

web技术及应用大作业项目报告web技术及应用项目设计报告同济大学EP车队官网指导老师曹建平老师小组成员陈霏霏0820xx黄毓敏082172尹攀飞08222642120xx第1页web技术及应用大作业项目报告目...

其他印刷厂项目可行性研究报告评审方案设计(20xx年发改委标准案例范文)

其他印刷厂项目可行性研究报告评审方案设计20xx年发改委标准案例范文编制机构博思远略咨询公司360投资情报研究中心研究思路关键词识别1其他印刷厂项目可研2其他印刷厂市场前景分析预测3其他印刷厂项目技术方案设计4...

C++项目设计报告

停车场管理系统项目设计报告所在班级能源1004班指导教师胡彬项目开发分工1目录一项目分析3二功能描述3三概要设计报告4四程序流程4五程序结构图5六操作指南5七项目总结8八程序代码92一项目分析1目的加强所学习的...

工程项目管理课程设计报告本(终)

同济大学工程项目管理课程设计设计说明书本工程是蓝山锦湾花苑LP3228连排式别墅工程位于湖南省长沙市雨花区本工程由长沙市君鑫房地产投资有限公司投资兴建代理商为世联地产澳大利亚柏涛墨尔本建筑设计公司设计工程结构型...

软件项目开发实战设计报告

哈尔滨德强商务学院软件项目开发实战设计报告系别专业班级学生学号20xx年10月11日摘要随着网络技术的发展Internet已成为最具市场潜力的技术领域使用Web技术设计的数据库应用软件是目前Internet市场...

在线考试系统的设计项目报告

项目设计报告在线考试系统的设计班级XXX学生姓名XXX学号XXX指导教师XXX所属院系XXX报告提交日期XXX一项目概述及功能介绍在学生考试模块中首先要选择登录身份然后验证登录用户是否正确如果是考生登录则验证成...

数据库项目设计实验报告

数据库项目设计实验报告项目名称人力资源管理系统项目需求为了处理公司人事资料可以完成对人事资料进行查询修改增加删除及存储并能快速准确的完成档案资料的统计和汇总工作并可输出报表人力资源管理系统主要用于员工个人资料的...

项目设计报告(44篇)