单片机51实习报告之电子钟.doc

上传人:仙人指路1688 文档编号:4147213 上传时间:2023-04-07 格式:DOC 页数:24 大小:2.75MB
返回 下载 相关 举报
单片机51实习报告之电子钟.doc_第1页
第1页 / 共24页
单片机51实习报告之电子钟.doc_第2页
第2页 / 共24页
单片机51实习报告之电子钟.doc_第3页
第3页 / 共24页
单片机51实习报告之电子钟.doc_第4页
第4页 / 共24页
单片机51实习报告之电子钟.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《单片机51实习报告之电子钟.doc》由会员分享,可在线阅读,更多相关《单片机51实习报告之电子钟.doc(24页珍藏版)》请在三一办公上搜索。

1、单片微型计算机与接口技术实习报告 -数字电子钟设计目录实习题目:电子时钟设计1一、实习目的1二、实习要求1三、实习环境1四、.单片机11、单片机的概述12、单片机的基本结构2五、SPI总线简介41、概述.42、 特点43、 工作机制5六、74HC595简介61. 特点.62、 输出能力63、应用6七、74LS138简介8八、电子钟的显示设计91.主程序:92.数码管显示模块:113.定时器/计数器T0中断服务程序:124.外部中断服务程序:14九设计程序:15十 程序调试及显示:181.调试程序182.下载实验箱运行19十一、实习心得20十二、参考文献21实习题目:电子时钟设计一、实习目的1、

2、 学会看原理图,并根据原理图编写相应的程序完成相应的实习要求。2、 掌握51单片机的功能及用途,熟悉SPI总线和74HC595的应用。3、 熟练掌握C语言对SPI总线的写入。4、 正确应用中断程序的中断触发程序,掌握数码管显示的原理和控制方法。5、 掌握电子钟的基本程序设计和调试方法。二、实习要求1、用单片机完成在数码管上显示小时-分钟-秒。2、编写程序实现电子钟,可以用按键对时间进行校正。3、设计一个电子钟钟,可以对电子钟进行启动和停止,具有整点报时功能。三、实习环境1、上机利用编写,利用keil 4进行调试。2、编译通过后下载到DVCC-51/AVR-1试验箱进行验证。四、.单片机1、单片

3、机的概述人们过去把单片机微型计算机简称单片机,这个称谓一直延续至今。但在国际上,单片机一词的英文表达式还是有一定的演变的。最初单片机一词是源于“Single Chip Microcomputer”,因此简称SCM。随着SCM在技术上.体系结构上不断扩展其控制功能,单片机已不能用“单片微型计算机”来准确表达其内涵。国际上逐渐采用MCU(Micro Controller Unit)来代替。这就形成了日前单片机界公认的最终统一的名词。2、单片机的基本结构单片机是由8个大的部分组成的,这8个部分分别是中央处理器(CPU).数据存储器(RAM).程序存储器(ROM/EPROM).输入、输出接口(I/O)

4、,又分为P0口P1口P2口和P3口,可编程串行口,定时、计数器,中断系统及特殊功能寄存器。(1)AT89C52单片机的结构图2-1图2-1是AT89S51单片机引脚配置图,40个引脚中,正电源和接地两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。引脚说明如下:Pin20 :接地线Pin40 : 正电源接脚。正常工作或对片内EPROM 烧写程序时, AT89S51 可以接4.55.5V范围内的直流正电源,一般取代+5V作为电源 使用Pin19 : 时钟XTAL1脚,片内振荡电路的输入端Pin18 : 时钟XTAL2脚,片内振荡电路的输出端输入/输出(I/O)引

5、脚 : Pin39Pin32为P0.0P0.7输入/输出脚, Pin1Pin8为P1.0P1.7输入/输出脚,Pin21Pin28为P2.0P2.7输入/输出脚,Pin10Pin17为P3.0P3.7输入/输出脚。 Pin9 : RST复用信号复用脚。(当单片机通电后,时钟电路开始工作,在RST引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H ,P0P3输出口全部为高电平,堆栈指针写入07H,其他专用寄存器被清“0”,RST由高电平变为低电平后,系统即从0000H地址开始执行程序。 Pin30 : ALE/PROG ALE,当访问外部程序存储器时,A

6、LE(地址锁存)的输出用于锁存地址的低字节,而访问内部程序存储器时,ALE 端将有一个1/6时钟频率的正脉冲信号,这个信号可以识别单片机是否在工作,也可以当作一个时钟周期向外输出;还有一个特点,当访问外部程序存储器时,ALE 会跳过一个脉冲。如果单片机是EPROM在编程期间,PROG将用于输入编程脉冲。Pin29 :PESN,当访问外部程序存储器时,此引脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P3口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。Pin31 :EA/ VPP,程序存储器的内外部选通线。(2) AT89S51单片机的内部结构 AT89S51内部结构

7、图a、中央处理器(CPU):主要由运算器和控制器构成;运算器主要包括算术与逻辑运算部件ALU,累加器ACC,寄存器B, 存器TMP1和TMP2,程序状态字寄存器PSW、布尔存储器和十进制调整电路等b、存储器:由片内程序存储器和片外程序存储器,片内数据存储器、片外数据存储器。c、输入/输出(I/O)端口:由并行I/O端口和串行I/O端口d、定时/计数器e、中断系统五、SPI总线简介1、概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmic

8、ro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模块(Module)来实现的, 它允许 MCU 以全双工的同步串行方式, 与各种外围设备进行高速数据通信. SPI 主要应用在 EEPROM, Flash, 实时时钟(RTC), 数模转换器(ADC), 数字信号处理器(DSP) 以及数字信号解码器之间. 它在芯片中只占用四根管脚 (Pin) 用来控制以及数据传输, 节约了芯片的 pin 数目, 同时为 PCB 在布局上节省了空间. 正是出于这种简单易用的特性, 现在越来越多的芯片上都集成了 SPI技术.2、 特点(1) 采用主-从

9、模式(Master-Slave) 的控制方式 SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作.(2) 采用同步方式(Synchronous)传输数据 Master 设备会根据将

10、要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的.(3) 数据交换(Data Exchanges) SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 发送者(Transmitter) 或者 接收者(Receiver). 在每个 Clock 周期内, SPI 设备都会发送并接收一个

11、 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了. 一个 Slave 设备要想能够接收到 Master 发过来的控制信号, 必须在此之前能够被 Master 设备进行访问 (Access). 所以, Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上. 在数据传输的过程中,每次接收到的数据必须在下一次数据传输之前被采样. 如果之前接收到的数据没有被读取, 那么这些已经接收完成的数据将有可能会被丢弃,导致 SPI 物理模块最终失效. 因此, 在程序中一般都会在 SPI 传输完数据后, 去读取 SPI 设备里

12、的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的.3、 工作机制 上传下载附件 (28.52 KB) 上图只是对 SPI 设备间通信的一个简单的描述, 下面就来解释一下图中所示的几个组件(Module): SSPBUF, Synchronous Serial Port Buffer, 泛指 SPI 设备里面的内部缓冲区, 一般在物理上是以 FIFO 的形式, 保存传输过程中的临时数据; SSPSR, Synchronous Serial Port Register, 泛指 SPI 设备里面的移位寄存器(Shift Regitser), 它的作用是根据设置好的数据位宽(bit

13、-width) 把数据移入或者移出 SSPBUF; Controller, 泛指 SPI 设备里面的控制寄存器, 可以通过配置它们来设置 SPI 总线的传输模式. 通常情况下, 我们只需要对上图所描述的四个管脚(pin) 进行编程即可控制整个 SPI 设备之间的数据通信:SCK, Serial Clock, 主要的作用是 Master 设备往 Slave 设备传输时钟信号, 控制数据交换的时机以及速率; SS/CS, Slave Select/Chip Select, 用于 Master 设备片选 Slave 设备, 使被选中的 Slave 设备能够被 Master 设备所访问; SDO/MO

14、SI, Serial Data Output/Master Out Slave In, 在 Master 上面也被称为 Tx-Channel, 作为数据的出口, 主要用于 SPI 设备发送数据; SDI/MISO, Serial Data Input/Master In Slave Out, 在 Master 上面也被称为 Rx-Channel, 作为数据的入口, 主要用于SPI 设备接收数据; SPI 设备在进行通信的过程中, Master 设备和 Slave 设备之间会产生一个数据链路回环(Data Loop), 就像上图所画的那样, 通过 SDO 和 SDI 管脚, SSPSR 控制数据

15、移入移出 SSPBUF, Controller 确定 SPI 总线的通信模式, SCK 传输时钟信号.六、74HC595简介74HC595是8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。1、1、特点:(1)、 8位串行输入(2)、 8位串行或并行输出(3)、 存储状态寄存器,三种状态(4)、 输出寄存器可以直接清除(5)、 100MHz的移位频率2、 输出能力 (1、) 并行输出,总线驱动 (2)、 串行输出;标准 (3)、 中等规模集成电路3、应用 串行到并行的数据转换 Remote control holding register.(1)、描述 595是告诉的硅结构的CMOS

16、器件, 兼容低电压TTL电路,遵守JEDEC标准。595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。 (2)、 参考数据 符号参数条件TYP单位HCHCttPHL/tPLH传输延时SHcp到Q7STcp到QnMR到Q7CL=15pFVcc=

17、5V161714212019NsNsNsfmaxSTcp到SHcp最大时钟速度10057MHzCL输入电容Notes 13.5 3.5pFCPDPower dissipation capacitance per package.Notes2115 130 pFCPD决定动态的能耗,PDCPDVCCf1+(CLVCC2f0) F1输入频率,CL输出电容 f0输出频率(MHz) Vcc=电源电压(3)、功能表输入输出功能SHCPSTCPOEMRDSQ7QnLLNCMR为低电平时紧紧影响移位寄存器LLLL空移位寄存器到输出寄存器HLLZ清空移位寄存器,并行输出为高阻状态LHHQ6NC逻辑高电平移入移

18、位寄存器状态0,包含所有的移位寄存器状态移入,例如,以前的状态6(内部Q6”)出现在串行输出位。LHNCQn移位寄存器的内容到达保持寄存器并从并口输出LHQ6Qn移位寄存器内容移入,先前的移位寄存器的内容到达保持寄存器并输出。H高电平状态, L低电平状态,上升沿,下降沿,Z高阻,NC无变化 ,无效当MR为高电平,OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输出到并行端口。七、74LS138简介74LS138译码器的相关知识G1 G2A G2BC B AY7 Y6 Y5 Y4 Y3 Y2 Y1 Y01 0 00 0 0 1 1 1 1 1 1 1 01 0 00 0 1

19、1 1 1 1 1 1 0 11 0 0 0 1 0 1 1 1 1 1 0 1 11 0 00 1 1 1 1 1 1 0 1 1 11 0 01 0 0 1 1 1 0 1 1 1 11 0 01 0 1 1 1 0 1 1 1 1 11 0 01 1 0 1 0 1 1 1 1 1 11 0 01 1 1 0 1 1 1 1 1 1 1其它状态X X X 1 1 1 1 1 1 1 1由图得:74LS138是一个3位二进制译码器,A2A0是三个输入端,Y0Y7是八个输出端且为低电平有效,另设三个使能端STA、STB、STC用以控制译码器工作以及扩展功能。当STA=1,STB=STC=0时

20、,译码器工作,这时输出端Y0Y7的状态由输入变量A2、A1、A0决定。即:Y0=A2A1A0 Y1=A2A1A0 Y2=A2A1A0 Y3=A2A1A0 Y4=A2A1A0 Y5=A2A1A0 Y6=A2A1A0 Y7=A2A1A0当STA=0或STB=1,或STC=1时译码器处于“禁止”译码状态,输出端Y0Y7均为1。八、电子钟的显示设计根据试验箱总图进行设计:1.主程序: 先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和中断处理模块,当有外部中断右按键按下时,进入键盘扫描程序,分别对时分秒进行校正,校正结束后,跳出。2.数码管显示模块: 本实验有8个数码管,从左到右为小时、

21、横线、分钟、横线、秒。在本系统中数码管显示利用SPI总线进行传输显示。3.定时器/计数器T0中断服务程序: T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的指定位置。4.外部中断服务程序:对定时器启动停止进行切换。九设计程序:#include#define uchar unsigned char#define ui

22、nt unsigned intuchar code table10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar hour,min,sec,j,k,m,n;bit flag=0;sbit clk=P20;sbit din=P21;sbit enable_a=P22;sbit enable_b=P23;sbit enable_c=P24;sbit beeper=P00;sbit key1=P10;sbit key2=P12;sbit key3=P14;sbit key4=P16;void init()EX0=1; EX1=1;/外

23、部中断0,外部中断1打开IT0=1;IT1=1; /外部中断1.0均为下降沿触发TMOD=0X21; /T1工作在方式2,T0工作在方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256; /50msTR0=1; /启动定时器1,0IP=0X15; / 中断优先级号ET0=1; /开启定时器EA=1;/开总中断beeper=0;flag=0;void delay(uint k) uint i,j; for(i = 0; i k; i+)for(j = 0; j 256; j+); void display(uchar date)uchar i;for(i=

24、0;i8;i+)clk=0;din=(bit)(date&0x80);date=1;clk=1;void enable()enable_c=0;enable_b=0;enable_a=0; /初使化enable_c=1; /选通使能enable_b=1;enable_a=0;void beep()beeper=1;delay(50);beeper=0;void keyscan()if(key1=0)delay(5);if(key1=0)sec+;if(sec=60) sec=0; min+; while(!key1);if(key2=0)delay(5);if(key2=0)min+; if(

25、min=60) min=0; hour+;while(!key2);if(key3=0)delay(5);if(key3=0)hour+; if(hour=24) hour=0; min=0; sec=0;while(!key3); void main()init();while(1)keyscan();if(j=20)sec+;j=0;if(sec=60)beep();sec=0;min+;if(min=60)beep();min=0;hour+;if(hour=24)hour=0;/keyscan();display(tablesec%10);display(tablesec/10);di

26、splay(0xbf);display(tablemin%10);display(tablemin/10);display(0xbf);display(tablehour%10);display(tablehour/10); /显示时分秒enable();void time0()interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;j+;void int0()interrupt 0TR0=TR0;十 程序调试及显示:1.调试程序(1)调试主程序。主程序运行后,在无任何外部中断时观察有无显示,时钟是否工作,其时、分、秒显示的变化过程是否正确

27、。若运行结果不正确,首先应根据程序运行的实际现象分析判断哪些因素可引起相关故障,再通过调试方法逐一认证和排除。例如:若定时/计数器的初始化出错,则时钟将不能工作;若显示程序出错,则将不能正确显示时钟单元内容;若定时/计数器中断服务子程序出错,则其显示数据的变化规律将不正常。(2)调试子程序。在调试主程序时,必然要调用相关的功能子程序。因此,首先应明确子程序的具体功能,通过对子程序的分析,确定子程序的入口、出口参数及相关标识位的状态,然后在满足入口条件的状态下,设法检查从主程序进入子程序,再由子程序返回到主程序的运行过程。可采用跟踪运行或运行至光标处的方法,检查从主程序进入子程序内部的运行过程,

28、再通过单步运行等方法检查子程序内部的运行情况和返回主程序的过程。通过反复调试,发现并排除软件与硬件存在的各类问题,以满足系统设计的预期目的。2.下载实验箱运行 将程序下载到实验箱上显示及调试。如图6所示:图6.下载十一、实习心得一周的实习很快就过去了,在一周时间里,我从上课对单片机知识的懵懵懂懂的,到实习后,略有感悟,总的来说迈出了很大一步。之前,学过C语言,掌握还不错,对编程并不陌生。所以此次实习关键在于单片机的汇编语言。学过C这样高级语言之后,我感觉汇编语言有点难,全是缩写,虽然精炼但是不好记忆。于是在实习过程中,我认真看了一遍书本和笔记,并请教了不少同学。我们的实习题目是外部中断记录,涉

29、及中断,计时,显示等主要模块。于是我通过回忆,了解计时原理,定时器初始化(选择定时器),启动定时器,1秒定时。其中1秒定时的计算方法在我看了好多遍之后有所了解。之前发生过定时不时一秒的情况,经过研究发现时频率设定的不对。在实验机箱上有两个槽,可用来记录中断次数,并进行12进制与24进制的切换,经我们几个同学的讨论研究,还是很顺利的做了出来。显示程序是老师给的,其中你若要改显示的数字或者符号,需要改的就是最后一行TAB后面的数值大小,我们实验机箱是共阴极,所以需要FFH减去共阳极的数值。当然最后这个程序做出来了,但还有不少可以更改的地方。在实习完的一周之内我又下功夫的看了一遍课本。总之,一周实习很充实,对于我们的问题能耐心详细解答并分析什么原因。实习过去了,但是我知道,今后我的路还是很长,我要学的东西也有很多。通过这次实习,我深刻的认识到计算机专业的路的不平坦,但我会以一种良好的态度去迎接每一个挫折和挑战。在此,我也也谢谢辛辛苦苦指导我们实习的老师,同时也谢谢帮助我的同学们。十二、参考文献1 李群芳.肖看.单品微型计算机与接口技术. 电子工业出版社,第四版2 刘湘涛江世明单片机原理与应用. 北京:电子工业出版社,2006.5 李光才单片机课程设计 实例指导M北京航空航天大学出版社 2004.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号