电子时钟 单片机实习报告(推荐)_电子时钟实习报告

2020-02-28 实习报告 下载本文

电子时钟 单片机实习报告(推荐)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“电子时钟实习报告”。

桂林理工大学博文管理学院

实习名称:专业班级:学生姓名:指导老师:实习时间:

实习报告

单片机应用实践

学号:

2015年12月14日至 2016年1月4日

题目名称:基于MSP430G2231实现的简易电子时钟

摘要:单片计算机即单片微型计算机。由 RAM ,ROM,CPU构成,定时,计数和 多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。

多功能数字钟的应用非常普遍,由单片机作为数字钟的核心控制器,通过它的时钟信号 进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。本系统利用单片机实现其具有闹钟、校时、开关数码管显示等功能的数字时钟.是以单片机MSP430G2553为核心元件同时采用四位一体的共阴数码管同时显示“时、分、秒的低功耗简易装置,显示极具人性化。另外具有校时功能,闹钟功能和节电保护功能。利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。

一、引言:

1.电子时钟的简介

1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。

2.电子时钟的基本特点

现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。3.数码管的工作原理

数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在一起,即为公共商。阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为 8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。

二、系统框图

根据设计要求与设计思路,确定该系统的设计方案,上图为该系统设计方案的硬件电路设计框图。硬件电路由8部分组成,即按键输入电路、单片机、时钟电路、复位电路、LED显示器段码驱动电路、LED显示器位码驱动电路、4位显示器电路和蜂鸣器电路。

三、硬件部分:

如图所示,在MCU选择上,我选择了20引脚的MSP430G2553,它是16位单片机,它有以下特点:低工作电压:1.8~3.6V、超低功耗:活动模式:280UA(1MHZ,2.2V);待机模式 :0.5UA;掉电模式 :(RAM数据保持)0.1UA。有5种节电模式;从待机到唤醒的响应时间不超过1us;10位A/D转换器;(带有内部参考源、采样保持,最大采样率200Ks/s);16位精简指令结构(RISC),6.25ns指令周期;带有3个捕获/比较器结构的16位定时器;串行通信可软件选择UART/SPI/I2C三种模式;可在线串行编程,不需要外部编程电压;FLASH存储器为16KB,RAM为512B。这些功能足够用来做这款MINI桌面时钟,我采用了真个P1口作为数码管的数据端口,P2.0-P2.3为数码管的选通断,P2.4和P2.5为按键输入端,XIN和XOUT接32.768KHZ的晶振,所以它的引脚全部用上了,这样避免了硬件资源浪费。

显示部分选用了0.28英寸的共阴数带时钟码管,这样可以满足尺寸的要求,正好可以利用数码管上面的秒显显示时钟的活动状态。

在时钟产生电路上面并没有采用DS1302,一是为了减小体积,而是因为采用在MCU外部加32.768KHZ晶振的方式足够满足时钟的需求,因为在MCU内部可以选择系统的主时钟为内部时钟源1MHZ,配置定时器的时钟源为外部晶振32.768KHZ,16位的定时器足够满足定时的精度要求。

按键电路采用的是轻触按键开关,经上拉电阻接MCU,按键的输入信号是低电平,一般按键在按下和松开时会有抖动现象,可以采用两种方式消除按键抖动,一是采用程序延时,一是采用硬件RS触发器,后者增加了成本和体积,前者完全可以满足需求,所以我选择了软件消抖。

四、软件部分:

主函数是必须的,时钟配置函数需要把主时钟配置为DCOCLK 1MHZ,定时器时钟配置为ACLK时钟,使用外部32.768KHZ时钟源。端口初始化函数是将各个端口为输入或者输出,以及赋初值。

定时器配置函数配置定时器工作在连续计数模式,并打开全局中断,每20MS产生一次中断。

在定时器中断函数中,需要注意的是,让秒显每1S闪烁一次的方法是每500ms取反一次,在程序中,用dp取反并配合数码管数位分解和显示函数中的switch语句配合使秒显的闪烁实现。按键检测函数用来检测按键是否被按下,配合其他函数中的程序,赋予按键不同的功能。数位分解和数码管显示函数,是将产生的时间信息和调整的时间信息实时显示到数码管上。

按键控制开关显示是在正常走时状态下检测到按键按下后,对一个全局变量进行取反,在主函数中判断这个变量的值而来控制数码管选通端的开启或关闭。

五、调试结果及总结:

经过反复的多次检查硬件与调试,最终该作品的预期功能基本实现。特此总结:首先,对数码管显示的工作原理还不够熟悉。没有自主检查元器件的习惯,导致共阳数码管买成了共阴数码管,后来又要改原理图和程序代码,很大程度上影响了我的实习进度。那么在今后的作品制作中,对元器件的正确性的排查很有必要。其次,在调试过程中遇到数码管乱显示和不规律走跳的现象时,不会很好地利用手上的工具对作品进行排查,后来通过询问实习老师后才找到原因,这在今后的实习也是非常需要注意的地方。随后,就是按键的失效问题,后来经过严格的排查,发现接地一端不稳定,导致芯片无法识别按键是否被按下,因此按键失效。

通过本次的实习,使我收获良多。不但学习了MSP430G2553这款芯片,还温习了一遍老师以前讲过的数码管知识等。真干出知识,这句话果然没错,接着本次实习学到的知识与经验,希望在下次实习中做的更好,突破自己!附录: 原理图:

PCB图:

实物图:

关键代码:

/**********数码管显示函数***********/ void xianshi(uchar shi,uchar fen){ P1OUT=0x00;P2OUT&=0xF0;//数码管清零 uchar s1=0,s2=0,s3=0,s4=0;//定义局部变量

s1=shi/10;s2=shi%10;s3=fen/10;s4=fen%10;//数位分解 P2OUT&=~BIT0;P2OUT|=BIT1;P2OUT|=BIT2;P2OUT|=BIT3;P1OUT=table[s1];__delay_cycles(1000);P2OUT|=BIT0;P2OUT&=~BIT1;P2OUT|=BIT2;P2OUT|=BIT3;switch(dp)//小数点显示选择 { case 1:P1OUT=(table[s2]&0x7F);break;case 0:P1OUT=table[s2];break;default:break;} __delay_cycles(1000);P2OUT|=BIT0;P2OUT|=BIT1;P2OUT&=~BIT2;P2OUT|=BIT3;P1OUT=table[s3];__delay_cycles(1000);P2OUT|=BIT0;P2OUT|=BIT1;P2OUT|=BIT2;P2OUT&=~BIT3;P1OUT=table[s4];__delay_cycles(1000);} /************P2.5输入判断函数******************/ void IO_INIT(){ if((P2IN&0x20)==0){ __delay_cycles(2);if((P2IN&0x20)==0){ SW++;if(SW==3){SW=0;} } } while((P2IN&0x20)==0);} void IO_INIT2(){ if((P2IN&0x10)==0){ __delay_cycles(2);if((P2IN&0x10)==0){ ac^=1;} } while((P2IN&0x10)==0);} /*********IO口初始化函数********/ void SZ_INIT(){ P1DIR|=0xFF;//配置P1口为输出 P1OUT|=0xff;//P1口赋初值,输出0xFF

P2DIR|=0x0F;//配置P2.0、P2.1、P2.2、P2.3为输出 P2DIR&=0xCF;//配置P2.4、P2.5为输入 } /****************时钟调试函数**********************/ void xuanze(){ switch(SW){ case 0: break;case 1: while(SW==1){ _DINT();if((P2IN&0x10)==0){ __delay_cycles(2);if((P2IN&0x10)==0){ bs++;if(bs==60){ bs=0;} } } while((P2IN&0x10)==0);xianshi(as,bs);IO_INIT();} break;case 2:while(SW==2){ _DINT();if((P2IN&0x10)==0){ __delay_cycles(2);if((P2IN&0x10)==0){ as++;dp=0;if(as==24){ as=0;} } } while((P2IN&0x10)==0);xianshi(as,bs);IO_INIT();} break;default:break;} } /*****************定时器配置函数 ****************/ void dingshiqi(){ TA0CCTL0 = CCIE;//打开中断(Timer0_A3 Capture/Compare Control 0)TA0CCR0 = 10080;//设定计数变量

TA0CTL = TASSEL_2 + MC_3;//定时器选择时钟SMCLK,使用模式二连续计数方式 _EINT();//开总中断 } /***********************主函数*******************/ void main(void){ WDTCTL = WDTPW + WDTHOLD;// 关闭看门狗 SZ_INIT();dingshiqi();IO_INIT();_EINT();//开总中断 while(1){ IO_INIT();IO_INIT2();P2OUT|=0x30;xuanze();if(bs==0){ BEEP=0X7F;} else BEEP=0x7F;if(ac==1){ xianshi(as,bs);_EINT();} else if(ac==0){ P2OUT|=0x0f;} } }

元器件详细清单:

参考文献:

1、张靖武、周灵彬《单片机原理、应用与PROTEUS仿真》。

2、沈建华、杨艳琴《MSP430系列16位超低功耗单片机原理及应用》。

3、童诗白、华成英《模拟电子技术基础》。

《电子时钟 单片机实习报告(推荐).docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
电子时钟 单片机实习报告(推荐)
点击下载文档
相关专题 电子时钟实习报告 实习报告 单片机 时钟 电子时钟实习报告 实习报告 单片机 时钟
[实习报告]相关推荐
    [实习报告]热门文章
      下载全文