实验二数码管时钟显示.doc_第1页
实验二数码管时钟显示.doc_第2页
实验二数码管时钟显示.doc_第3页
实验二数码管时钟显示.doc_第4页
实验二数码管时钟显示.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

单片机实验报告题 目: 实验二 时钟显示实验 班 级: 0310405 姓 名: 左立刚 学 号: 031040522 指导老师: 高林 时 间: 2013年5月26日 实验二 时钟显示实验一、实验目的 (1)熟练掌握单片机定时器的编程技巧;(2)掌握八段数码LED显示器的工作原理和编程方法。二、实验内容 (1)在实验箱上完成:编写程序,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示(左边2个数码管显示“时”,中间2个显示“分”,右边2个显示“秒”)。 (2)用Proteus软件参照实验电路连线并仿真运行,得出与实验箱上相同的软件仿真结果。所用元器件:单片机AT89C51、8位锁存器74LS273或74LS373、3-8译码器74LS138、排阻或电阻RESPACK-8(RES)、或非门74LS02、非门NOT、共阳极六合一数码7SEG-MPX6-CA三、程序框图 四、实验预备知识1数码显示电路:电路组成:6个共阳极数码管、2个74LS273锁存器端口地址: 字型口(段码锁存器)FFDCH;字位口(位码锁存器)FFDDH2动态显示:每次只有一个数码管显示其相应字符,并且从左往右反复快速扫描,利用人眼的“视觉滞留”效益实现“同时”显示不同字符的工作方式。3字型码表:(共阳极)09:0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90五、仿真电路图(用proteus软件画出):6、 需要实现的功能及程序清单1. 6个数码管同时分别显示05,程序如下:#include#include /访问外部存储器时,需用此头文件#define ZX XBYTE 0xffdc /字形口端口地址宏定义#define ZW XBYTE 0xffdd /字位口端口地址宏定义void delay(); /延时子函数声明unsigned char buffer6=0,1,2,3,4,5;unsigned char table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;void main() while(1) ZX=tablebuffer0; ZW=0x20; delay(); ZX=tablebuffer1; ZW=0x10; delay(); ZX=tablebuffer2; ZW=0x08; delay(); ZX=tablebuffer3; ZW=0x04; delay(); ZX=tablebuffer4; ZW=0x02; delay(); ZX=tablebuffer5; ZW=0x01; delay();void delay() /延时子函数定义 int i; for(i=0;i100;i+);2. 时钟的数码管显示,程序如下:#include #include /访问外部存储器时,需用此头文件#define uint unsigned int#define uchar unsigned char#define ZX XBYTE0xffdc /字形口端口地址宏定义#define ZW XBYTE0xffdd /字位口端口地址宏定义void display();uchar buffer=0,0,0,0,0,0,num,hour=23,min=59,sec=50;/时分秒初始化uchar table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/共阳字09void main() TMOD=0x01; /定时器0的工作模式为1IE=0x82; /开中断TH0=(65536-50000)/256; /装初值,晶振为6MHz,定时100msTL0=(65536-50000)%256;TR0=1; /打开定时器T0while(1)display();/一直执行数码管显示程序void delay(uint x) /定义延时子函数uint i;for(i=x;i0;i-);void shuzi() /数字分解buffer5=sec%10; /秒的个位buffer4=sec/10; /秒的十位buffer3=min%10; /分的个位buffer2=min/10; /分的十位buffer1=hour%10; /时的个位buffer0=hour/10; /时的十位void display()uchar temp=0x20;char cnt;shuzi();temp=0x20; /数码管动态显示,利用人眼的“滞留”效应for(cnt=0;cnt=1;ZX=0xff; /数码管消影void timer0()interrupt 1 using 1 /中断服务子程序TH0=(65536-50000)/256; /重装初值TL0=(65536-50000)%256;num+;if(num=10) /1s时间到num=0;sec+;if(sec=60) /60s时间到sec=0;min+;if(min=60) /1小时时间到min=0;hour+;if(hour=24) /24小时时间到hour=0;七、思考(1)电子钟走时精度和程序中那些常数有关? 原因分析: 1. 此实验中单片机电子钟的计时脉冲基准是由外部晶振的频率经过12分频后提供,采用内部的定时/计数器T0来实现计时功能。所以,外接晶振频率精确度直接影响电子钟计时的准确性。 2. 单片机电子钟利用内部定时/计数器溢出产生中断(6MHz晶振一般为100ms)再乘以相应的倍率来实现秒、分、时的转换。然而,从定时/计数器产生中断请求到响应中断需要3-8个机器周期,定时中断子程序中的数据入栈和重装初值还需要占用几个机器周期,还有从中断入口转到中断子程序也要占用一定的机器周期。所以TH0,TL0中的常数50000,num的最后值10等,都会影响电子钟的走时精度。(2)将数码显示也改为定时扫描方式该如何编程?此程序中同时用到51 单片机内部的两个定时器T0和T1,程序如下:#include #include /访问外部存储器时,需用此头文件#define uint unsigned int#define uchar unsigned char#define ZX XBYTE0xffdc /字形口端口地址宏定义#define ZW XBYTE0xffdd /字位口端口地址宏定义void display();uchar buffer=0,0,0,0,0,0,num,hour=23,min=59,sec=50;/时分秒初始化uchar table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/共阳字09void main() TMOD=0x11; /定时器0的工作模式为1TH0=(65536-50000)/256; /装初值,晶振为6MHz,定时100msTL0=(65536-50000)%256;TH1=(65536-50)/256; /装初值,晶振为6MHz,定时0.1msTL1=(65536-50)%256;EA=1; /打开总中断ET0=1; /打开定时器T0和T1ET1=1;TR0=1; /启动定时器T0和T1TR1=1;while(1)display();void delay(uint x) /定义延时子函数uint i;for(i=x;i0;i-);void shuzi() /数字分解buffer5=sec%10; /秒的个位buffer4=sec/10; /秒的十位buffer3=min%10; /分的个位buffer2=min/10; /分的十位buffer1=hour%10; /时的个位buffer0=hour/10; /时的十位void display()uchar temp=0x20;char cnt;shuzi();temp=0x20; /数码管动态显示,利用人眼的“滞留”效应for(cnt=0;cnt=1;ZX=0xff; /数码管消影void timer0()interrupt 1 using 1 /中断服务子程序TH0=(65536-50000)/256; /重装初值TL0=(65536-50000)%256;num+;if(num=10) /1s时间到num=0;sec+;if(sec=60) /60s时间到sec=0;min+;if(min=60) /1小时时间到min=0;hour+;if(hour=24) /24小时时间到hour=0;void timer1()interrupt 3 /中断服务子程序TH0=(65536-50000)/256; /重装初值TL0=(65536-50000)%256;shuzi();八、心得体会1. 做完此次的单片机数码管时钟显示实验后,不仅加深了对数码管显示原理,74LS273锁存器和74LS138译码器的工作原理,51单片机的定时器和中断系统的理解,而且掌握了用C语言实现时钟的编程方法,以及用proteus画出硬件电路的方法(包括总线bus的快速画法),最重要的是,培养了自己独立调试程序的动手能力和解决实际问题的能力;2. 掌握以单片机为核心的电路基本画法,通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,为今后调试程序,设计一般的系统打下了一点基础;3. 另外,注意在每次送完字形数据后,送入字位数据之前,需要一句:ZX=0xff,这个叫做“消影”,若不加消影,再执行接下来的打开位选锁存器命令后,原来保存在P0口的字形数据将立即通过位选锁存器直接加在数码管上,接

温馨提示

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

评论

0/150

提交评论