网站大量收购独家精品文档,联系QQ:2885784924

关于单片机课程设计论文.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于单片机课程设计论文.doc

  关于单片机课程设计论文 关于单片机课程设计论文导读: 单片机课程设计论文 题 目 基于单片机的数字时钟设计 学 号 姓 名 指导教师 *** 二○一三年十一月 一.基于单片机的数字时钟的基本原理 本设计基于STC89C52单片机,采用内部定时器实现走表,用数码管显示实现的简单的电子数字时钟。由于晶振易受温度等因素的影响,所以会出现走表不准的现象,但是对于单片机初学者来讲,是单片机入门的必经之路。而在一些对时间要求较高的场合,可采用DS1302,DS12C887等类似的专用时钟芯片。 STC89C52单片机具有2个定时器,分为定时器0和定时器1,并且各有4种工作方式。用于定时器/计数器管理的特殊功能寄存器有工作方式寄存器TMOD和控制寄存器TCON,寄存器的值由指令写入。当MCS-51单片机系统复位时,两个寄存器所有位都被清零。 1.工作方式寄存器TMOD 寄存器TMOD是定时器/计数器的工作方式控制寄存器,是一个可编程的特殊功能寄存器,字节地址为89H,不可位寻址。其中低四位控制T0,高四位控制T1,其格式如图所示: D7 D6 D5 D4 D3 D2 D1 D0 GATE:控制方式选择位,用来控制定时器启动操作方式。 当GATE=0时,只能由软件控制TR0或TR1位来控制定时器的启停。TRi(i=0,1)位为1,定时器启动,开始工作;TRi(i=0,1)为0时,定时器停止工作; 当GATE=1时,定时器的启动要由外部中断引脚和TRi(i=0,1)位共同控制。只有当外部中断引脚为高时,TRi(i=0,1)置1才能启动定 时器工作。 C/T: 计数/定时方式选择位,当C/T=0时设置为定时器工作方式,计数脉冲由内部提供,计数周期等于机器周期。当C/T=1时设置为计数器工作方式,计数脉冲由外部引脚T0或T1引入。 M1,M0:工作方式控制位,这2位可形成四种编码,对应于四种工作方式。4种工作方式对应于下表: 2.控制寄存器TCON 控制寄存器TCON是一个8位特殊功能寄存器,字节地址为88H,可以位寻址,位地址为88H-8FH,用来存放控制字,控制定时器的启停,定时器的溢出标志设置和外部触发方式等。 D7 D6 D5 D4 D3 D2 D1 D0 本设计中用到了两个定时器,并且都用的是方式1,定时器0用来产生秒信号,定时器1用来控制在调表的时候产生闪烁。 程序的初始化如下: TMOD=0x11;//定时器0,1的工作方式1 TH0=(65535-50000)/256;//定时器0赋初值 PCB板: EA=1;//打开总中断 TR1=0;//关闭定时器1 TR0=1;//打开定时器0 二.电子时钟的硬件设计 TL1=(65535-50000)%256; TL0=(65535-50000)%256; ET0=1;//打开定时器0的中断 ET1=1;//打开定时器1的中断 TH1=(65535-50000)/256;//定时器1赋初值 本设计的硬件电路主要由上电自动复位电路,时钟电路,74HC573锁存器电路和数码管及按键电路组成。 1.上电自动复位电路在系统上电的时候对单片机复位。 2.晶振电路主要产生单片机的时钟电路。 3.锁存器电路控制数码管可以节省单片机的IO资源,且74HC573提供的电流足以驱动共阳极数码管,且具有控制简单等优点。 元器件清单 三.电子时钟的软件设计 #includelt;reg52.hgt; #define uint unsigned int #define uchar unsigned char sbit con=P3;//控制键 sbit add=P3;//加 sbit sub=P3;//减 sbit gnd=P3;//接地 void keyscan();//键盘扫描函数的声明 uchar hour,minute,second,count,j; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管段码表 void delay(uint z)//延时函数 { uint x,y; for(x=z;xgt;0;x--) for(y=100;ygt;0;y--); } void display11()//显示函数 { if(count!=1)//如果count==1,控制数码管的灭 { P0=table[hour/10]; P2=0x7f; dela

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档