数字化产品设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字化产品设计报告

专业:计算机科学与技术

班级:0991121

姓名:于苗苗

指导教师:朱国晗、孟祥莲、毕津滔、王嘉鹏

哈尔滨工业大学华德应用技术学院

2011 年 12 月 23日

一、需求分析:

应用场合:应用于对运动物体的速度、加速度的测量实验,还可

用来验证机械守恒等物理实验,同时也适用于对时间

测量精度要求较高的场合,如测定短时间间隔的表。

设计目的:实现短时间的计时功能,以及加减功能。

立题意义:熟悉集成电路的引脚安排

掌握芯片的逻辑功能及使用方法

了解板子的结构及接线方法

掌握数字产品的设计与需求

二、硬件设计方案

硬件所需器件:12MHZ晶振、2个数码管、AT89C52芯片、MAX232芯

片、5个按键、1个数据口、6个电容、1个电阻芯片原理简要介绍:

AT89C52是一种带4K字节闪烁可编程可擦除只读存储器的低电压,

高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度

非易失存储器制造技术制造。由于将多功能8位CPU和闪烁存储器

组合在单个芯片中,ATMEL的AT89C51上一种高效微控制器,为很

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

主要特性:

4K字节可编程闪烁存储器

寿命:1000写/擦循环

数据保留时间:10年

全静态工作:0Hz—2424Hz

三级程序存储器锁定

128*8位内部RAM32可编程I/O线

两个16位定时器/计数器

5个中断源

可编程串行通道

低功耗的闲置和掉电模式

片内振荡器和时钟电路

三、软件设计方案

四、系统调试

硬件调试:在硬件调试过程中出现了很多问题,由于导线太多,有

些地方出现短路现线,同时也存在导线虚焊,经过查找

重新焊接;才得以将问题解决。实现第四天的时候,数

码管烧坏,又及时更换数码管,才得以将程序与硬件完

美结合。

软件调试:利用所需的元器件绘制出设计图,当程序设计出来之起

来后,就可以通过仿真软件对其进行编译,生成仿真所

需要的HEX文件。将生成的文件加载到Protues上,就

可以进行系统仿真。通过仿真检测所作设计是否能实现

预期效果。

五、总结

时间过得真快,一个礼拜的课设又结束了,通过本次课程设计,我收获很多,能够让我将理论学习与实践有机的结合起来,真正了解自己不足与缺陷。此次实验让我学会,在设计过程中,首先要调整好心态,能够清楚的分析课题,根据所学知识绘制出系统部体设计框图。然后按照自己的设计思路,利用所给的元器件绘制出设计图,当程序设计出来之后,就可以通过仿真软件对其进行编译,生成仿真所需要的HEX文件。将生成的文件加载到Protues 上,就可以进行系统仿真。通过仿真检测所作设计是否能实现预期效果。本次课程设计使我对单片机的工作原理有了更深刻的认识,掌握了许多在以前学习中混淆不清的知识点。在翻阅相关书籍和查询相关资料过程中学到了丰富的单片机知识,开阔了眼界,增加了知识且真正做到了理论联系实际的重要性。但是在我设计和调试的过程中,也遇到许多问题和困难,在同学和老师的帮助下,还是顺利的完成了此次课程设计,在以后的学习中,我会更加细心和认真的,避免出现一些异常和小错误。

附录1:

#include

#define uchar unsigned char #define uint unsigned int

sbit key1=P1^0;

sbit key2=P1^1;

sbit key3=P1^2;

sbit key4=P1^3;

sbit pc1=P1^7;

sbit pc2=P1^6;

uchar code led[]=

{0x3f,0x06,0x5b,0x4f,0x66,0x6d ,0x7d,0x07,0x7f,0x6f};

uchar times=0,s=0,bz=0;

void delay(uint x)

{

uchar j;

while(x--)

{

for(j=0;j<125;j++);

}

}

xianshi()

{

if(s>100)s=s%100;

pc1=0;

P0=led[s/10];

delay(1);

pc1=1;

pc2=0;

P0=led[s%10];

delay(1);

pc2=1;

}

shijian()interrupt 1

{

TH0=0x3c; TL0=0xb0;

times++;

if(times==20)

{

s++;

times=0;

}

}

void main()

{

EA=1;

ET0=1;

TMOD=0X01;

TH0=0x3c;

TL0=0xb0;

while(1)

{

xianshi();

if(key1==0)

{

while(!key1);

TR0=~TR0;

if(!TR0)biaozhi=1;

else biaozhi=0;

}

if(key2==0)

{

while(!key2);

TR0=0;

s=0;

biaozhi=1;

}

if(key3==0&&biaozhi)

{

while(!key3);

TR0=0;

if(s<99)s++;

相关文档
最新文档