项目4 设计制作9.9秒表(课件)- 《单片机技术与应用教程(第2版)》同步教学(清华大学版)

2024-07-11
| 30页
| 31人阅读
| 1人下载
普通

内容正文:

项目4 设计制作9.9秒表 项目3 设计制作9.9秒表 1 本项目学习目标 1)巩固C51指数组应用; 2)熟悉MCS-51系列单片机定时/计时器工作 方式; 3)掌握MCS-51系列单片机定时器的应用; 4)进一步熟练C51程序设计; 5)巩固数码管显示技术 项目3 设计制作9.9秒表 项目描述 1.项目名称 设计制作9.9秒表 2.项目要求 1)用KeilC51、Proteus作开发工具; 2)用AT89C51单片机作控制; 3)数码管作显示; 4)能以0.1秒为单位进行计时,秒表从 “9.9”秒,开始倒计时,当9.9秒到,数码管显示“0.0”。 5)发挥扩充功能:计时到“0.0”后以闪烁方式提示。 项目3 设计制作9.9秒表 3.设计制作任务 项目描述 1)拟定总体设计制作方案; 2)设计硬件电路; 3)编制软件流程图及设计相应源程序; 4)仿真调试秒表; 5)安装元件,制作秒表,调试功能指标; 6)完成项目报告。 项目3 设计制作9.9秒表 相关知识 1 .定时/计数器作定时器使用 1)定时/计数器方式寄存器TMOD设置 TMOD为T1、T2的工作方式寄存器,其格式如下: 例如,设置T1工作于方式1、作定时器用、且与外部中断无关,则M1=0、M0=1,C/(/T)=0、GATE=0,则高4位应为0001;T0未用,一般将其设为0000,TMOD赋值语句为: TMOD=0x10; 项目3 设计制作9.9秒表 相关知识 2)定时器/计数器控制寄存器TCON设置 TCON的作用是控制定时器/计数器的启动、停止,标志定时器的溢出和中断情况。其中与定时器/计数器相关的位如下: TR0:T0运行控制位。当GATE=1,/INT0为高电平时,TR0置1启动T0;当GATE=0时,TR0置1启动T0。 TF0:T0溢出标志位。当T0计数满产生溢出时,由硬件自动置TF0=1。 项目3 设计制作9.9秒表 在中断允许时,向CPU发出T1的中断请求,进入中断服务程序后,由硬件自动清0。在中断屏蔽时,TF0可作查询测试用,此时只能由软件清0。 TR1:T1运行控制位。其功能及操作同TR0。 TF1:T1溢出标志位。其功能及操作况同TF0。 TCON的字节地址为88H,可位寻址,例如:TR1=0;启动T1计数。 相关知识 项目3 设计制作9.9秒表 相关知识 作定时器使用时,计数器对内部机器周期计数,每过一个机器周期,计数器加1。计满溢出时,若计数值为N,定时器的定时时间为: t=Tc(机器周期)×N。 MCS-51单片机的一个机器周期由12个振荡脉冲组成,则机器周期为: Tc=12/ fosc 如果单片机系统采用12M晶振,则计数周期(即机器周期)为: Tc=12/(12×106)=1us 若计数值为N,则定时N微秒。 2. 计数初值的计算 项目3 设计制作9.9秒表 相关知识 定时/计数器T0和T1是加法计数器,每来一个计数脉冲,计数器的值加1,加满则溢出(溢出值即计数最大值,常用M表示),如果要计N个单位就溢出,则首先应向计数器值初值X。 X=M(最大计数值)- N(计数值) 项目3 设计制作9.9秒表 相关知识 3 作定时器的初始化 在作定时器使用时,必须确定工作方式、中断允许、定时计数初值,这个过程称为定时器初始化。 确定工作方式——对TMOD赋值。 预置定时或计数的初值——将初值写入TH0、TL0或TH1、TL1。 根据需要开启定时器/计数器中断——直接对IE寄存器赋值。 启动定时器/计数器工作——将TR0或TR1置“1”。 项目3 设计制作9.9秒表 案例:编程输出周期20ms方波。 主程序流程图 中断服务程序流程图 项目3 设计制作9.9秒表 相关知识 #include<reg51.h> sbit CLK=P3^3; /**********T1初始化函数**********/ void T1_Init (void) { TMOD=0x10; TH1=(65536-100)/256; TL1=(65536-100)%256; TR1=1; } 项目3 设计制作9.9秒表 相关知识 /*T1溢出中断初始化函数*/ void T1_int_init (void) { EA=1; ET1=1; } /***T1中断函数***/ void T1_int(void) interrupt 3 using 0 { TH1=(65536-100)/256; TL1=(65536-100)%256; CLK=!CLK; } 项目3 设计制作9.9秒表 /***************主函数***************/ main() { T1_Init (); T1_int_init(); while(1) { ; } } 相关知识 项目3 设计制作9.9秒表 相关知识 /**********定时器中断服务函数*********/ void time_t0() interrupt 1 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; count--; } 项目3 设计制作9.9秒表 项目实施 1. 9.9秒表总体设计思路 基本功能实现思路是: 用AT89C51单片机作控制,12MHz时钟,用AT89C51内的一个定时/计数器作定时器,定时10ms产生中断,10次中断即0.1秒。每秒0.1秒,让9.9秒减1,实现倒计时,倒计时数据经处理后用数码管显示,总体框图如图4-3所示总体结构框图如图所示。 项目3 设计制作9.9秒表 项目实施 9.9秒表总体结构框图 项目3 设计制作9.9秒表 项目实施 2.设计硬件原理图 用AT89C51单片机作控制,系统时钟12MHZ,采用上电复位方式,3位一体的共阴极数码管作显示,AT89C51的一个I/O口(P1)作显示数据输出端口,一个I/0口(P2)作数码管位选控制端口,T0作频率测试输入端,参考电路如图所示。 项目3 设计制作9.9秒表 项目实施 2.设计硬件原理图 项目3 设计制作9.9秒表 项目实施 3.设计9.9秒表程序 1)程序设计思路 定时计数器工作于定时状况,12MHz时钟下,机器周期为1us,定时器T0工作于方式1,初值为65536-10000,每计10000个机器周期,定时器中断1次,耗时10ms,中断10次则耗时0.1s。在中断服务程序让中断次数加1,每中断10次。秒数从初值“9.9”秒开始减0.1秒即可实现倒计时。当秒数为0,则停止计数,数码管显示亮、灭交替可实现闪烁显示“0.0”。参考主程序流程图,中断服务程序如图所示。 项目3 设计制作9.9秒表 项目实施 3.设计9.9秒表程序 项目3 设计制作9.9秒表 项目实施 4.主要参考程序 /************************ 函数名称:延迟函数 ***********************/ void delay(unsigned char time) { unsigned char i,j; for(i=0;i<time;i++) for(j=0;j<120;j++) ; } /************************ 函数名称:定时器初始化函数 ***********************/ void T0_init(void) { TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0=1; } 项目3 设计制作9.9秒表 项目实施 /************************ 函数名称:中断初始化函数 ***********************/ void int_init(void) { EA=1; ET0=1; } /************************ 函数名称:数据处理函数 ***********************/ void dat_change(unsigned char dat) { dat_display[1]=dat/10; dat_display[0]=dat%10; } 项目3 设计制作9.9秒表 项目实施 /************************************** 函数名称:显示函数 *************************************/ void display(unsigned char SEG_dat,unsigned char bit_code,bit fg) { P1 =0x00; if(fg) P1 =SEG_dat|0x80; else P1 =SEG_dat; P2 =bit_code; delay(5); } /************************************** 函数名称:0.1秒判断函数 *************************************/ void seconds_01(void) { if(count==10) { count=0; seconds--; } } 项目3 设计制作9.9秒表 项目实施 /************************************** 函数名称:9.9秒判断函数 ***************************************/ void seconds_99(void) { if(seconds==0) { TR0=0; } } /*************定时器t0中断服务函**********/ void time_t0()interrupt 1 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; count++; } 项目3 设计制作9.9秒表 项目实施 4.调试仿真频率计 (1)利用keil uVisison2的调试功能,根据错误提示,双击提示找到错误代码,排除各种语法错误。 (2)通过对端口、寄存器、存储空间赋值,存储空间或、端口、寄存器观察,单步运行调试子程序和主程序。 (3)编译成hex文件。 (4)用Proteus按设计原理图,添加电阻(RES)、电容(CAP)、晶振(CRYSTAL)、AT89C51、2位数码(7SEG-MPX2-CA)管等元件、仿真信号源。设计仿真模型。设置好元件属性,以仿真信号源提供测试信号,进行仿真调试。 项目3 设计制作9.9秒表 项目实施 项目3 设计制作9.9秒表 项目实施 5.安装元器件,烧录、调试样机 (1) 仿真调试成功后,按原理图把元件安装焊接在实验板上,并进行动态和静态检测。 (2)烧录hex文件,运行程序,如不能运行,先排除各种故障(供电、复位、时钟,内外存储空间选择、软硬件端口运用一致等)。 项目3 设计制作9.9秒表 项目实施 (3)测试9.9秒表,观察计时时间和标准秒表运行的时间是否一致,分析是否达到性能指标。 (4)如没有达到性能指标,根据性能指标,调整电路或元件参数、优化程序,重新调试、编译、下载、运行程序,测试性能指标。 项目3 设计制作9.9秒表 项目四 结束 谢 谢! 项目3 设计制作9.9秒表 $$

资源预览图

项目4 设计制作9.9秒表(课件)- 《单片机技术与应用教程(第2版)》同步教学(清华大学版)
1
项目4 设计制作9.9秒表(课件)- 《单片机技术与应用教程(第2版)》同步教学(清华大学版)
2
项目4 设计制作9.9秒表(课件)- 《单片机技术与应用教程(第2版)》同步教学(清华大学版)
3
项目4 设计制作9.9秒表(课件)- 《单片机技术与应用教程(第2版)》同步教学(清华大学版)
4
项目4 设计制作9.9秒表(课件)- 《单片机技术与应用教程(第2版)》同步教学(清华大学版)
5
项目4 设计制作9.9秒表(课件)- 《单片机技术与应用教程(第2版)》同步教学(清华大学版)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。