03-毕业实践报告-范文_第1页
03-毕业实践报告-范文_第2页
03-毕业实践报告-范文_第3页
03-毕业实践报告-范文_第4页
03-毕业实践报告-范文_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业实践(实习)报告专业班级:计算机应用系统维护083学生姓名:胡浩学号:20082596班级序号:37实践性质:实践成绩:校内实践指导教师:何新洲长江职业学院工学院二00年三月二十日第1章概 述31.1数字电子钟的设计背景31.2ds1302数字时钟设计课题意义3第2章方案论证3第3章系统设计要求43单片机选型43.2显示部分要求53.3键盘工作模块6第4章数字电子钟软件设计74.1主程序流程图74.2屮断服务子程序流程图84.3显示部分设计94.4数字电子钟原理图104.5数字电子钟源程序10第5章实验装调及过程10致 谢11参考文献13附录一13附录二17单片机数字电子钟的设计与实现长江

2、职业学院工学院张树章 湖北,武汉 430074扌間 要:单片机即单片微型计算机(single-chip microcomputer)是集cpu , ram , rom ,定时,计数和多种接口于一体的微控制器。他体积小,成本低, 功能强,广泛应用于工业自动化上和智能产品。时钟,自从它被发明的那天起, 就成为了人类的好朋友,但随着时间的推移,科学技术的不断发展,时钟的应用 越來越广范,人们对时间计量的精度要求也越來越高。怎样让时钟更好的为人民 服务,怎样止我们的老朋友再次焕发青春呢?这就要求我们不断设计出新型的时 钊來不断满足人们的日常生活需要。然血'|j场上的时钟便宜的比较笨重,简单 实

3、用的乂比较昂贵。那么,有没有一款既简单实用价格乂便宜的时钟呢?我们课题小组设想:可不可以利用单片机功能集成化髙,价格又便宜的特点 设计一款结构既简单,价格又便宜的单片机电了时钟呢?关键词:单片机;ds1302数字时钟;计时第1章概 述1.1数字电子钟的设计背景单片机自1976年由intel公司推出mcs-48开始,迄今已有二十多年了。由 于单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉 等一系列优点,冃前己经渗入到人们工作和生活的方方而而,儿乎“无处不在, 无所不为”。单片机的应用领域己从面向工业控制、通讯、交通、智能仪表等迅 速发展到家用消费产品、办公自动化、汽车屯子、

4、pc机外围以及网络通讯等广 大领域。本文讨论的单片机多功能定时器的核心是目前应用极为广泛的51系列单片 机,配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠性 高,功能强等特点。不仅能满足所需要求,而且述有很多功能可供开发,有着有 着广泛的应用领域。1.2ds1302数字时钟设计课题意义随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备 都有自己的控制器,使用起来很不方便。根据这种实际情况,设计了一个单片机 多功能定时系统,它可以避免多种控制器的混淆,利用一个控制器对多路电器进 行控制,同时又可以进行时钟校准和定点打铃。它可以执行不同的时间表(考试 时间和日常作

5、息时间)的打铃,可以任意设置时间。这种具有人们所需要的智能 化特性的产品减轻了人的劳动,扩大了数字化的范i韦i,为家庭数字化提供了可能。第2章方案论证要求使用8051单片机为核心设计一个数字时钟,这个数字时钟使用2个弹跳按钮和8个共阴七段显示器,其屮2个弹跳按钮用来设计时间,6个七段显示 器则用來显示时间,该时钟的记时范围是00时00分00秒-一23时59分59秒, 以下是该数字时钟的基本功能:1. 6个七段显示器刚好用来显示时和分和秒的部分。2用户可以设置数字时钟的时间。设置时间时必须先单击模式选择按钮,进 入调整时间模式,然后再单击调整时间的弹跳按钮输入正确的时间。3. 我们的数字时钟只有

6、2种模式,分别是显示时间的模式和调整时间的模 式,所以模式选择按钮只能在这2种模式z间切换。4. 单击调整时间的弹跳按钮时,数字时钟的分会一直往上增加,分增加到 60就会进位到时,如果数字时钟的进位到23,分乂增加到59,接下来就会凹到 00时00分。5. 数字屯子时钟的另一个功能就是加入语音芯片tsd1420,开机复位时,语 音提示“欢迎使用”,当按下按钮调时时,语音提示“请设置时间”。第3章系统设计要求3.1单片机选型本文数字时钟设计原理主要利用at89c51单片机,由单片机的p0 口控制数码 管的位显示,p2 口控制数码管的段显示,p1 口与按键相接用于时间的校正。在 设计中引入两个电源

7、电路,一个是外部电源系统产生+5v电压,用于给cpu及显 示电路提供t作电压,这是数字时钟正常t作时的总电压。另一个是备用电源, 当外部电源关断时由它提供工作电压使cpu继续工作,利用单片机的空闲方式降 低功耗,数码管不显示但能使计时保持正常,不会造成掉电时计时清零的现象。整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系 统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器, 每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号, 该信号将被送到“时计数器” o “时

8、计数器”采用24进制计时器,可实现对一 天24小时的累计。显示电路将“时”、“分”、“秒”计数器的输出,通过六 个七段led显示器显示出來。校时电路是直接加一个脉冲信号到时计数器或者分 计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。at89s52是一种低功耗、高性能cm0s8位微控制器,具有8k在系统可编程 flash存储器。使用atmel公司高密度非易失性存储器技术制造,与工业80c51 产品指令和引脚完全兼容。片上flash允许程序存储器在系统可编程,亦适于常 规编程器。在单芯片上,拥有灵巧的8位cpu和在系统可编程flash,使得 at89s52为众多嵌入式控制应用系

9、统提供高灵活、超有效的解决方案。at89s52 具有以下标准功能:8k字节flash, 256字节ram, 32位i/o 口线,看门狗定 时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构 ,全双工串行口,及时钟电路。另外,at89s52可降至ohz静态逻辑操作,支 持2种软件可选择节屯模式。空闲模式下,cpu停止工作,允许ram、定时器/ 计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻 结,单片机一切工作停止,直到下一个中断或硬件复位为止。3. 2显zf部分要求单片机应用系统中使用的显示器主要有发光二极管显示器,简称led (light emitt

10、ing diode);液品显示器 lcd (liquid crystal display);近几年也 有配置crt显示器的。而冃前在单片机系统屮,通常用led数码显示器来显示各 种数字或符号。出于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因 此使用非常广泛。单片机中通常用七段led构成字型“8”,另外,还有一个小数点发光二极 管以显示小数位!这种显示器有共阴和共阳两种!发光二极管的阳极连在一起的 (公共端)称为共阳极显示器,阴极连在一起的称为共阴极显示器。一位显示器 曲8个发光二极管组成,其中,7个发光二极管构成字型“8”的各个笔划(段) jg,另一个小数点为dp发光二极管。当某段发光

11、二极管上施加一定的正向电压 时,该段笔画即亮;不加电圧则暗。为保护各段led不被损坏,需外加限流电阻。led数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降 较大,正向电阻也较大。在一定范围内,其正向电流与发光亮度成正比。由于常 规的数码管起辉电流只有12ma,最大极限电流也只有10-30ma (静态总电流 80ma (每段10ma);动态均电流45ma,峰值电流100ma),所以它的输入端 电源或高于ttl高电平(3.5v)的电路信号相接时,一定要串加限流电阻以免损 坏器件。这里采用的是共阴极连接。led显示器有静态显示方式和动态显示方式两种。静态显示就是当显示器 显示某个字符

12、时,相应的段恒定的导通或截止,直到显示另一个字符为止。led 显示器工作于静态显示方式时,各位的共阴极接地;若为共阳极则接+5v电源。 每位的段选线分别与一个8位锁存器的输岀口相连,显示器屮的各位相互独立, 而且各位的显示字符一经确定,相应锁存的输出将维持不变。正因为如此,静态 显示器的亮度较高。这种显示方式编程容易,管理也较简单,但占用i/o 口线资 源较多。因此,在显示位数较多的情况下,一般都采用动态显示方式。由于所有6位段皆由一个i/o 口控制,因此,在每一瞬间,6位led会显示 相 同的字符。要想每位显示不同的字符,就必须采用扫描方法流点亮各位led, 即在每一瞬间只使某一位显示字符。

13、在此瞬间,段选控制i/o 口输出相应字符段 选码(字型码),而位选则控制i/o 口在该显示位送入选通电平(因为led为共 阴,故应送低电平),以保证该位显示相应字符。如此轮流,使每位分时显示该 位应显示字符。3.3键盘工作模块按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导 电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。 前者造价低,后者寿命长。目前,微机系统屮最常见的是触点式开关按键。按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区 别是识别键符及给出相应键码的方法。编码键盘主要是用硬件來实现对键的识 别,非编码键盘主要是由软件来实

14、现键盘的定义与识别。全编码键盘能够由硬件逻辑白动提供与键对应的编码,此外,-般还具有去 抖动和多键、窜键保护电路。这种键盘使用方便,但需要较多的硬件,价格较贵, 一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它 工作均由软件完成。出于其经济实用,较多地应用于单片机系统中。在本套设计 屮由于只需要儿个功能键,此时,可采用独立式按键结构。独立式按键是直接用 1/0 口线构成的单个按键电路,其特点是每个按键单独占用一根i/o 口线,每个 按键的工作不会影响其它t/0 口线的状态。第4章数字电子钟软件设计4. 1主程序流程图图4.1子程序流程图4.2中断服务子程序流程图图4.2中

15、断服务流程图4.3显示部分设计lei)数码管根据led的接法不同分为共阴和共阳两类,了解led的这些特性, 对编程是很重要的,因为不同类型的数码管,除了它们的硬件屯路有差异外,编 程方法也是不同的。图1是共阴和共阳极数码管的内部电路,它们的发光原理是 一样的,只是它们的电源极性不同而己。a b c d e f 6 h+5v共阳极7段数码管图4. 3数码管内部结构图本课题用的是共阳极数码管。共阳极码oxco, 0xf9, 0xa4, oxbo, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90(0, 1, 2, 3, 4, 5, 6, 7,8, 9)数码管是用共阳极的, 数码

16、管的一个公共端接的是p2 口的一个引脚,并且从p2 口输出的是高电平来选 通数码管,p0 口就输出低电平让数码管数显示出需要的时间计数。时钟显示通 过单片机的p0 口与数码管连接起来显示实时时钟,通过编程写入数据从p0 口输 出,开始两位显示小时,111间两位显示分,最后两位显示秒。4.4数字电子钟原理图图4. 4数字时钟原理图4.5数字电子钟源程序关于数字电了钟源程序清单请参考本文附录部分。第5章实验装调及过程5.1硬件调试用万用表对元器件进行测试,确定元器件完好。然后测试面包板,确定面包 板的导通状态(横向导通还是纵向导通),然后按照所设计的电路图进行布线, 要求连线尽量整齐、简明。连线时

17、应特别注意电解电容的正负极连接连接问题, 这问题特別重要,它也是我们容易出错的地方。电路调试:调试时先断开各部分连接,一步一步测量输出是否与理论值相近。 可以分以下儿个步骤:1. 检查电路是否连接正确。2. 接通电源,用万用表的正负电源线z间的电压是否为+5v。遇到的问题:1. 在检测面包板状况的过程屮,出现木该相通的地方却未通的状况,后经检 验发现是由于万用表笔尖未与面包板内部垂直接触所至。2. 检查时发现输出直流电压的值很小,结果发现地线未接通。主要检查了电路板有无虚焊、短路、连线是否正常,尤其是单片机的齐使能 端的接线,i/o接口连线是否有误。由于我们采用了六个数码管并联接入p2 口 的

18、段选端,因此接线较多,经常容易出现管脚间短路现象。这是硬件设计不足之 处,今后将注意元件的选配使设计更简洁实用。5.2软件部分调试在仿真软件上,对定时中断程序、显示子程序、按键中断子程序进行了分段 调试,结果功能正常。5. 3时钟计时检测通过与其它计时器对比观察发现数字时钟走时过快,检杏定时中断程序发 现to的初始值设定有误,因此重新设置:在连接五进制的过程中,发现电路只能 4, 5的跳动,后经发现是由于接到与非门的引脚接错一根所至,经纠正正常显示。致 谢在论文完成之际,我要特别感谢我的指导老师何老师的热情关怀和悉心指导。 在我撰写论文的过程中,何老师倾注了大量的心血和汗水,无论是在论文的选题

19、、 构思和资料的收集方而,还是在论文的研究方法以及成文定稿方而,我都得到了 何老师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、 严谨的治学精神和一丝不苟的工作作风使我终生受益,在此表示真诚地感谢和深 深的谢意。在论文的写作过程屮,也得到了许多同学的宝贵建议,在此一并致以诚挚 的谢意。感谢所有关心、支持、帮助过我的良师益友。最后,向在百忙中抽出时 间对本文进行评审并提出宝贵意见的各位专家表示衷心地感谢!参考文献1江志红51单片机技术与应用系统开发案例精选2008年12月版清华人学出版社 祁 伟单片机c51程序设计教程与实验2007年8月第2次北京航空航天大学出版社3何永艳单片

20、机应用及控制技术2008年8月 第一版化学丁业出版社附录一:实时时钟芯片源程序#define_real_timer_ds1302_2003_7_21include <at89x51.h> sbit ds1302 clk = p3飞; sbit ds1302_i0 = p37; sbit ds1302_rst = p3“5; sbit acco = acc'o; sbit acc7 二 acc"7;/实时时钟时钟线引脚/实时时钟数据线引脚/实吋时钟复位线引脚typedef struct systemtimeunsigned unsigned unsigned uns

21、igned unsigned unsigned unsigned unsi gned unsi gnedcharcharcharcharcharcharcharcharcharsecond;mi nute;hour;week;day;month;year; datestring9; timestring9;systemtime; /定义的时间类型am (x)xpm(x)(x+12)ds1302_sec0ndds1302 minute#define#define#define#define#defineds1302 hour0x800x820x84#defineds1302 week0x8a#d

22、efineds1302 day0x86#defineds1302 month0x88#defineds1302 yeards1302 ram(x)0x8c(0xc0+ (x)*2)#definevoid ds13021nputbyte(unsigned char d)unsi gned char i;acc = d;for(i=8; i>0; i)ds1302.t0 = acco;ds1302_clk = 1;ds1302_clk = 0;acc = acc » 1;unsigned char ds13020utputbyte(void)/转成24小吋制/秒寄存器/分寄存器/用

23、于计算ds1302.ram地址的宏 /实时时钟写入一字节(内部函数)相当于汇编中的rrc发一个高跳变到低的脉冲/实时时钟读取一字节(内部函数)/相当于汇编中的rrc发-个高跳变到低的脉冲unsigned char ucda) /ucaddr/地址,命令/写lbyte数据/rst 0->1->0, clk 0->1/读取ds1302某地址的数据unsigned char i;for (i=8; i>0; i一)acc = acc »1;acc7 = ds1302 jo;ds1302_clk = 1;ds1302_clk = 0;return(acc);void

24、writel302(unsigned char ucaddr,ds1302地址,ucdata:要写的数据 ds1302 rst = 0;ds1302_clk = 0;ds1302_rst = 1;ds1302inputbyte(ucaddr);ds1302tnputbyte(ucda);ds1302_clk = 1;ds1302_rst = 0;unsigned char read1302(unsignod char ucaddr)unsigned char ucdata;ds1302_rst = 0;ds1302 clk = 0;ds1302 rst = 1;ds13021nputbyte(

25、ucaddr 0x01);ucdata = ds13020utputbyte();ds1302_clk = 1;ds1302_rst = 0;return(ucdata);void ds1302_setprotect (bit flag)if (flag)writel302(0x8e, 0x10);/enable/地址,命令/读lbyte数据/rst 0->1->0,clk 0->1是否写保护/wp=1,不能写入elseunsigned char value)/ 设置时间函数writel302(0x8e, 0x00) ;/wp二0,可以写入 void ds1302 setti

26、me(unsigned char address,ds1302 setprotect(0);writel302(address, (value/10)<<4 位为个位void ds1302 gettime(systemttme *time)(value%10); 高4位为十位,低4unsigncd char readvalue;rcadvalue = read1302(ds1302_second);time->second = (rcadvalue&0x70) »4) *10 + (readvalue&oxof) ; /转换成 10 进制的秒read

27、value = read1302(ds1302_minute);time-minute = (readvalue&0x70)>>4)*10 + (readvalue&oxof);readvalue = readl302(ds1302 hour);time->hour = (readvalue&0x70)»4)*10 + (readvaiue&oxoe);readvalue = readl302(ds1302 day);time->day = (readvalue&0x70)»4)*10 + (readvalue

28、&oxof);readvalue = read 1302(ds1302jveek);time->week = (readvalue&0x70)»4)*10 + (readvalue&oxof);readvalue = readl302(ds1302_month);time_>month = (readvalue&0x70)»4)*10 + (readvalue&oxof);readvalue = read1302(ds1302_year);time->year = (readvalue&0x70)»

29、4)*10 + (readvalue&oxof);void datctostr(systemttme *time)t i rae->dat estringo=time->year/10 + 'o'/数字类型转化为字符类型time->datestringltirae->year%10 + 'o'time->datestring2time>datestring3time>datestring4time->datestring5time->datestring6time->datestring7tim

30、e->month/10 + 'o'time->month%10 + ' o'time->day/10 +,o'time->day%10 + ' o'time->datestring8 = ' 0 ; void timetostr(systemtime *time)time->timestring0: time->timestringl: time->timestring2: time->timestring3: time->timestring4:=time->ho

31、ur/10 + ' o' 数字类型转化为字符类型 =time->hour%10 + ' o', y 9=time->minute/10 +,o'=time->minute%10 + ' o'time->timestri ng 5time->timestring6 = time-second/10 + ' o'time->timestring7 = time->second%10 + ' o'void initial_ds1302(void)unsi gned cha

32、r second=readl302(ds1302 second); if(second&0x80) /如果第七为1 (表明没有启动),则启动吋钟 ds1302_settimc(ds1302_sec0nd, 0);附录二:单片机数字电子钟源程序include <at89x51. h>ftinclude <ds1302.h>定义共阳极字型码0123456789-unsigned char code dispcode = oxco, 0xf9, 0xa4, oxbo, 0x99,0x92, 0x82, 0xf8, 0x80, 0x90, oxbf;unsigned c

33、har buf = 0, 0, 0, 0, 0, 0, 0, 0;systemttme time; /在dsl302.h文件中已经定义了一个名字为systemttme的结构体, 在这里我们定义一个变量名/为 time 的 systemtime 结构体void delay (unsigned char i)/延时子程序unsigned char j;while (i-)!=0)for(j=123; j>0; j);button (n, x, y)/时钟调整子程序unsigned char n, x, y;if (pl_l=0)delay(50);if(pl_l=o)n+;if (n=x)n

34、二0;while(pl_l=0);if(pl_2=0) delay(50);if(pl_2=0)if(n=0)n=y;elsen;while (pl 2=0);return n;/显示子程序void di splay (secondlo, secondl, minutelo, minutel, hour10, hourl) unsigned char secondlo, secondl, minutelo, minutcl, hourlo, hourl;p2=0x01;po=dispcodesecondlo ;/显乐秒的十位 delay (3);p2二0x02;po=di spcodesecondl; /显示秒的个位 delay (3);p2=0x04;po=di spcode 10;/显示delay (3);p2=0x08;po=dispcodeminutelo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论