单片机课程设计十秒秒表
- 格式:docx
- 大小:746.06 KB
- 文档页数:16
实验报告一、实验名称10秒计时的秒表设计二、实验内容精确到0.1秒的秒表三、相关模块led数码管、usb、独立键盘四、实验代码#include "reg52.h"typedef unsigned int u16; //对数据类型进行声明定义typedef unsigned char u8;sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;sbit k1=P3^1;sbit k2=P3^0;sbit k3=P3^2;sbit k4=P3^3;u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};u16 s,sec;unsigned int i;unsigned int j;unsigned int a,b,c,d;u8 mb[2];void Timer0Init(){TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
TH0=0XFC; //给定时器赋初值,定时1msTL0=0X18;TR0=0;//打开定时器}void delay(u16 n){while(n--);}void DigDisplay1(u16 i){switch(i){case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;}if (i==1){P0=smgduan[mb[i]]+0x80;//发送段码}else{P0=smgduan[mb[i]];}delay(1); //间隔一段时间扫描P0=0x00;//消隐}void DigDisplay2(u16 i){i=i+3;switch(i){case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;}if (i==4){P0=smgduan[a]+0x80;}else{P0=smgduan[b];}delay(1);P0=0x00;}void DigDisplay3(u16 i){i=i+6;switch(i){case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;}if (i==7){P0=smgduan[c]+0x80;}else{P0=smgduan[d];}delay(1);P0=0x00;}void key1(){delay(10);if(k1==0){TR0=!TR0;while(!k1);}}void key2(){delay(10);if(k2==0){s=0;sec=0;while(!k2);}}void key3(){delay(10);if(k3==0){if (j==0) j=1;else j=0;if (j==1){a=mb[1];b=mb[0];}if (j==0){c=mb[1];d=mb[0];}while(!k3);}}void key4(){delay(10);if(k4==0){s=0;sec=0;a=0;b=0;c=0;d=0;while(!k2);}}void main(){Timer0Init();i=0;j=0;while(1){delay(10);key1();if(TF0==1){TF0=0;TH0=0XFC; //给定时器赋初值,定时1msTL0=0X18;s++;}if(s==60){s=0;sec++;if(sec==100)sec=100;}key2();mb[0]=sec%10;mb[1]=(sec/10)%10;key3();DigDisplay1(i);DigDisplay2(i);DigDisplay3(i);i++;i=i%2;key4();}}五、实验效果K1作用:启动、开始或暂停计时K2作用:计数位清零K3作用:记录当前时间并显示K4作用:清零所有的数码管六、实验遇到的问题经过前几次的实验,0到10秒的计数已经不成问题,本次实验的难点主要在几个按键的功能实现上。
基于单片机的秒表课程设计————————————————————————————————作者:————————————————————————————————日期:基于单片机的秒表课程设计姓名:班级:学号:专业:指导老师:年月日目录1、总体设计方案简介1.1设计课程任务1。
2系统分析1。
3系统方案1.4方案论证2、硬件设计2。
1控制芯片的介绍2.2硬件接线2。
2。
1硬件接线接口2。
2。
2硬件接线图3、软件设计3.1程序设计思路3.2流程图3.3源程序3.4仿真结果4、元件清单5、心得体会基于单片机的秒表课程设计摘要本设计的成品是在单片机最小系统的基础上增加显示电路和控制电路来完成数字式秒表的硬件电路的。
电子秒表电路主要由AT89S51单片机最小系统电路、七段数码管动态显示电路和控制电路组成,它能实现八段数码显示和计时,能通过控制电路控制时间的暂停和开始。
关键字:AT89S51 数码管最小系统1总体设计方案简介1。
1设计课题任务设计一个具有特定功能的数字式秒表。
用AT89C52设计一个2位LED 数码显示“秒表”,显示时间为00-59,另设计一个“开始”按钮和一个“复位”按钮。
按键说明:按“开始"按键,开始计数,数码管从00开始每秒自动加一;按“复位”按键,系统清零,数码管显示00。
1.2系统分析设计的电路主要是能多次计时,计时的多少通过显示电路出来,设计框图如图所示;控制部分技术和存储部显示部分1.3系统方案利用AT89C52单片机设计数显定时器。
此方案采用AT89C52单片机系统来实现。
AT89C52芯片内含8KB 的EEPROM ,不需要外扩展存储器,可是系统整体结构更为简单。
设计框图如图所示;1.4方案论证此方案是以AT89C52芯片为中心控制系统,可实现计时、清零等功能,大大提高了系统的智能化,也是的系统所测结果精度大大提高。
所以此方案可行。
2硬件设计2。
1控制芯片的介绍AT89S52是一种低功耗、高性能的片内含有4KB 快闪可编程/擦除只读存储器,的8位CMOS 微控制器,使用高密度、非易失存储技术制造,并外部控制开关AT89C52单 片 机七段数码显示与80S52引脚和指令系统完全兼容。
单片机课程设计_基于单片机的数字秒表设计在当今科技迅速发展的时代,电子设备的应用无处不在,其中数字秒表作为一种常见的计时工具,具有广泛的应用场景,如体育比赛、科学实验、工业生产等。
本次课程设计旨在基于单片机技术实现一个数字秒表,通过对硬件电路的设计和软件程序的编写,掌握单片机系统的开发流程和方法,提高实践动手能力和解决问题的能力。
一、设计要求1、能够实现秒表的启动、暂停、复位功能。
2、计时精度达到 001 秒。
3、能够通过数码管显示计时结果。
二、系统方案设计1、硬件设计单片机选型:选用常见的 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。
显示模块:采用 8 位共阴极数码管作为显示器件,通过动态扫描的方式实现数字的显示。
按键模块:设置三个独立按键,分别用于启动、暂停和复位操作。
时钟模块:使用单片机内部的定时器/计数器产生精确的时钟信号,实现计时功能。
2、软件设计主程序:负责系统的初始化、按键扫描和计时处理等。
中断服务程序:利用定时器中断实现 001 秒的定时,更新计时数据。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振频率选择 12MHz,为单片机提供时钟信号。
复位电路采用上电复位和手动复位相结合的方式,确保系统能够可靠复位。
2、显示电路将 8 位数码管的段选引脚通过限流电阻连接到单片机的 P0 口,位选引脚通过三极管连接到单片机的 P2 口。
通过动态扫描的方式,依次点亮每个数码管,实现数字的显示。
3、按键电路三个按键分别连接到单片机的 P10、P11 和 P12 引脚,采用低电平有效。
当按键按下时,相应引脚的电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。
四、软件程序设计1、主程序流程系统初始化后,进入主循环。
在主循环中,不断扫描按键状态,如果检测到启动按键按下,则启动计时;如果检测到暂停按键按下,则暂停计时;如果检测到复位按键按下,则将计时数据清零。
单片机控制秒表课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握单片机在秒表设计中的应用。
2. 使学生掌握秒表计时原理,了解秒表各功能模块的工作原理。
3. 帮助学生掌握相关编程语言,实现单片机控制秒表的程序编写。
技能目标:1. 培养学生运用所学知识,设计并实现一个具有启动、停止、复位和计秒功能的单片机控制秒表。
2. 提高学生动手实践能力,学会使用编程软件、下载器和调试工具。
3. 培养学生团队协作能力,分工合作完成课程设计任务。
情感态度价值观目标:1. 培养学生热爱科学、勇于探索的精神,增强对单片机及嵌入式系统学习的兴趣。
2. 培养学生严谨、认真、负责的学习态度,养成良好的学习习惯。
3. 引导学生关注科技发展,了解单片机在日常生活和工业生产中的应用,提高创新意识。
本课程针对高年级学生,具有较强的实践性和综合性。
通过本课程的学习,使学生能够将所学理论知识与实际应用相结合,提高解决实际问题的能力。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果。
在教学过程中,需关注学生的个体差异,激发学生的学习兴趣,培养其动手实践能力和团队协作精神,为后续学习打下坚实基础。
二、教学内容本章节教学内容主要包括以下几部分:1. 单片机基本原理:讲解单片机的组成、工作原理和功能特点,使学生了解单片机在秒表设计中的核心作用。
2. 秒表计时原理:介绍秒表的计时原理,分析秒表的启动、停止、复位和计秒功能模块。
3. 编程语言及开发环境:学习单片机编程所需的语言(如C语言),介绍编程软件、下载器和调试工具的使用。
4. 单片机控制秒表设计:根据课程目标,制定以下详细教学大纲:(1)秒表功能需求分析:讨论并明确秒表的各项功能需求。
(2)硬件设计:讲解如何选用合适的单片机、时钟电路、按键、显示屏等硬件设备。
(3)软件设计:指导学生使用C语言编写单片机控制秒表的程序代码。
(4)系统调试:教授学生如何进行硬件和软件的调试,确保秒表的正常工作。
单片机秒表课程设计1. 引言秒表是一种常用的计时工具,可以用来测量时间的精确度。
在本课程设计中,我们将使用单片机来设计一个简单的秒表。
本文档将详细介绍该秒表的设计思路、硬件和软件实现以及测试结果。
2. 设计思路我们的设计目标是实现一个简单的秒表,包括计时、暂停和复位功能。
我们将采用基于单片机的设计,使用定时器和中断来实现计时。
具体的设计思路如下:•使用微控制器作为核心控制单元,我们选择XXXX型号的单片机。
•使用定时器模块来计时,通过设置定时器的计数频率来控制计时的精确度。
•使用外部中断按钮来控制计时的开始、暂停和复位操作。
•使用LED显示屏来显示计时结果。
3. 硬件设计3.1 硬件连接在硬件设计方面,我们需要将单片机与其他外部设备进行连接。
具体的连接方式如下:•将定时器模块的输出引脚连接到单片机的计时输入引脚。
•将外部中断按钮连接到单片机的中断输入引脚。
•将LED显示屏的控制引脚连接到单片机的输出引脚。
3.2 硬件组成本设计所需要的硬件组成如下:•单片机:XXXX型号微控制器•定时器模块•外部中断按钮•LED显示屏4. 软件设计4.1 主程序框架主程序的框架如下:#include <reg51.h>// 定义全局变量和标志位// 定时器中断函数// 外部中断中断函数// 主程序入口void main() {// 初始化定时器和中断// 循环检测按钮状态,并执行相应操作}4.2 定时器中断函数定时器中断函数用于实现计时功能,其主要逻辑如下:1.获取当前的计数值,并进行相关处理。
2.更新LED显示屏上的计时数据。
4.3 外部中断函数外部中断函数用于响应按钮的按压操作,其主要逻辑如下:1.判断按钮的按下类型,根据不同的按压类型执行相应的操作(开始、暂停或复位)。
2.根据操作类型更新相应的标志位。
4.4 功能函数除了定时器中断函数和外部中断函数之外,还可以编写一些功能函数来实现计时、暂停和复位等功能。
实验目的:1.了解单片机51的基本功能和编程方法;2.掌握单片机定时器的使用方法;3.实现一个十秒以内的秒表功能。
实验器材和材料:1.单片机51开发板;B数据线;3.LED灯;4.导线。
实验原理:1.单片机51是一种常见的微控制器,具有较强的数据处理和控制能力;2.单片机51内部包含定时器/计数器模块,可以实现定时功能;3.利用单片机的IO口和定时器功能,可以实现基本的计时功能。
实验步骤:1.将单片机51开发板连接至电脑,利用Keil编译器新建一个工程;2.在工程中编写程序,包括初始化单片机的IO口和定时器模块;3.利用定时器模块设置定时时间为十秒;4.将LED灯连接至单片机的IO口,利用程序控制LED灯的亮灭;5.下载程序至单片机,进行实际测试。
实验结果与分析:1.经过编译和下载,程序顺利运行,LED灯在开始计时时亮起,十秒后熄灭;2.通过示波器观察定时信号的波形,可以发现定时器的计时精度较高;3.实验过程中,需注意系统时钟频率和定时器的工作原理,以确保定时功能的准确性。
实验心得与体会:1.单片机51的定时器模块功能丰富,可以实现各种定时、计数功能;2.通过本次实验,我对单片机的资源管理和编程方法有了更深入的了解;3.在实际应用中,单片机的定时功能可以用于计时、控制、触发等多种场景,具有广泛的应用前景。
实验小结:本次实验通过单片机51实现了一个十秒以内的秒表功能,通过编程和实际操作,加深了对单片机的理解和熟练程度。
同时也为今后的单片机应用打下了良好的基础。
单片机(Microcontroller Unit,MCU)是一种集成了微处理器核心、存储器、定时器、串行通信接口等多种功能模块的微型计算机系统,常用于控制和嵌入式系统中。
单片机51系列是Intel推出的8位微控制器,功能强大,广泛应用于各种电子设备中。
本次实验旨在通过单片机51实现一个简单的十秒以内的秒表功能,以加深对单片机定时器、编程和IO口控制的理解。
一:课程设计题目秒表/时钟计时器二:课程设计任务与要求:利用89C51单片机设计秒表/时钟计时器,通过LED显示器显示秒十位和个位,在设计过程中用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒计数达到60时,就自动返回到0,重新开始秒计数。
三:设计过程:1.设计原理:此次课程设计题目是秒表/时钟计时器,由课程设计的要求和任务,我采用的C语言编程,设计秒表要求一秒定时,采用了定时器和FOR循环来定时,其中一个软件一个硬件,会在方案论证中分析在1秒时采用的是硬件定时,即用单片机内部的定时器T0。
先将时钟初始化,赋入初值50ms定时,循环20次来进行1秒定时。
然后由定义的变量second来进行加一运算,然后将其值通过P1,P2口在数码管上进行显示。
其中数码管的显示时,我在程序中首先定义了一个关于数码管显示的字形码定义,以便在显示时调用即可。
(1)方案论证:方案1:在方案1中,我们所选用的是软件定时,即用for循环来定时1秒进行显示的变化.方案2:在方案2中,采用的是硬件定时,即用单片机内部的定时器T0。
先将时钟初始化,赋入初值50ms定时,循环20次来进行1秒定时.方案比较:我们从两方面进行两种方案的比较,第一,由于此次课程设计要求是秒表,则在定时时要求比较精确,所以采用硬件的定时器定时时比较准确的。
第二,由于秒表的定时程序是很小的,在利用软件定时占用的CPU并不是很多,不能显现出来,但真正大程序时会很占用资源的,所以在用定时中断过程中是非常节省资源的.综合上述两种比较,我们选用了第二种方案.(2)创新点:a。
在课程要求的基础上,我们做成的电路板上,用复位键来控制秒表计时的重新开始,即清零。
b。
在以上设计的基础上,我们又重新设计了一个程序,基本原理没有变,只是将秒表在到达59清零的瞬间向分的位数上进1,程序将会在附录3中给出。
2.硬件系统框图与说明:首先,连接的是单片机51的最小系统,其中包括时钟电路,复位电路,在此中包括的元器件在附录3中.我们所选用的数码管是共阴极的,置1时导通,所以将单片机的P1。
新疆工业高等专科学校电气系课程设计说明书十秒的秒表专业班级:电力10—10(2)班学生姓名:赵学奋指导教师:陈晓芸完成日期: 2012年6月 8日电气系系课程设计任务书教研室主任(签名)系(部)主任(签名)年月日新疆工业高等专科学校电气系课程设计评定意见设计题目:十秒的秒表学生姓名:赵学奋专业电力系统自动化班级 10—10(2)班评定意见:评定成绩:指导教师(签名):年月日评定意见参考提纲:1.学生完成的工作量与内容是否符合任务书的要求。
2.学生的勤勉态度。
3.设计或说明书的优缺点,包括:学生对理论知识的掌握程度、实践工作能力、表现出的创造性和综合应用能力等。
目录1单片机介绍 (1)1.1单片机概述 (1)1.2单片机芯片 (1)1.3单片机的应用分类 (2)1.3.1通用型/专用型 (2)1.3.2总线型/非总线型 (2)1.3.3控制型/家电型 (2)1.4单片机的发展历史 (3)1.4.1基本结构 (3)1.4.2主要阶段 (3)1.5早期发展史 (4)1.6单片机的硬件特性 (5)1.7单片机的应用范围 (5)1.7.1智能仪器 (5)1.7.2工业控制 (6)1.7.3家用电器 (6)1.7.4网络和通信 (6)1.7.5医用设备领域 (6)1.7.6模块化系统 (6)1.7.7汽车电子 (6)1.8Proteus介绍 (7)1.9 Keil C51 介绍 (7)2.硬件设计 (8)2.1电源电路 (8)2.2晶体振荡电路 (8)2.3复位电路 (8)2.4显示电路 (9)2.5键盘电路 (9)2.6硬件主电路图设计 (10)2.7 元器件清单 (10)3.主要原器件介绍 (12)3.1 A T89C51单片机 (12)3.2发光二极管 (14)3.3石英晶振 (15)3.4数码管 (15)4.课程设计 (17)4.1设计题目 (17)4.2电路原理图 (17)4.3工作原理 (17)4.4程序设计 (18)4.4.1如图3.2是我们组利用Keil进行编程的环境 (18)4.4.2以下就是使是秒秒表实现功能的C语言程序 (18)4.5仿真效果 (20)4.5.1按第一次按开关按键计时器开始计时 (21)4.5.2按第二次开关按键计时器暂停计时 (21)4.5.3按第三次开关按键定时器清零 (22)结论 (23)致谢 (24)参考文献 (25)摘要本实验利用单片机的定时器/计数器和计数的原理,结合按键开关以及LED数码管来设计计时器。
单片机 秒表 课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握秒表编程的基本知识。
2. 学生能描述单片机内部定时器的功能和工作原理。
3. 学生能运用所学知识,编写出功能完整的秒表程序。
技能目标:1. 学生能运用C语言进行单片机程序设计,具备一定的编程能力。
2. 学生能够通过实验,学会使用开发板和编程软件进行程序下载和调试。
3. 学生能够通过团队协作,解决实际编程过程中遇到的问题。
情感态度价值观目标:1. 学生培养对单片机编程的兴趣,激发创新意识和实践欲望。
2. 学生在学习过程中,形成积极思考、主动探究的良好学习习惯。
3. 学生通过团队协作,培养沟通能力和团队精神,学会共同解决问题。
课程性质:本课程为实践性课程,以单片机基础知识为背景,结合秒表实例,培养学生的编程能力和实际操作能力。
学生特点:学生已具备一定的单片机基础知识和C语言编程能力,对实际操作感兴趣,喜欢动手实践。
教学要求:教师需结合课程目标,采用任务驱动法,引导学生主动参与,注重培养学生的动手能力和团队协作能力。
教学过程中,关注学生个体差异,给予个性化指导,确保学生能够达到预期的学习成果。
通过课程学习,使学生在知识、技能和情感态度价值观方面得到全面提升。
二、教学内容1. 理论部分:a. 单片机基础知识回顾:主要包括单片机内部结构、工作原理及常用寄存器的作用。
b. 定时器原理讲解:详细介绍单片机内部定时器的工作原理,包括计数器、定时器的设置和使用方法。
c. C语言编程基础:复习C语言在单片机编程中的应用,重点讲解与秒表编程相关的语法和技巧。
2. 实践部分:a. 秒表功能需求分析:明确秒表的功能需求,包括开始、停止、计次、清零等功能。
b. 程序设计:引导学生运用所学知识,编写秒表的程序代码。
c. 程序下载与调试:教授学生如何将编写好的程序下载到开发板上,并进行调试和优化。
3. 教学大纲:a. 第一课时:回顾单片机基础知识,讲解定时器原理,明确秒表功能需求。
目录1 设计目的 (1)1.1设计目的 (1)1.2设计内容和要求 (1)1.3设计思路 (1)2 设计原理分析 (2)2.1十秒秒表系统设计 (2)2.2十秒秒表系统的功能要求 (2)2.2.1 计时显示 (2)2.2.2 中断设置 (2)2.3十秒秒表系统的基本构成及原理 (2)2.3.1 LED数码管显示器的结构与原理 (3)2.3.2 LED数码管的显示方式 (4)3系统硬件电路的设计 (5)3.1系统硬件总电路构成及原理 (5)3.2主控制部分――AT89C51单片机简介 (5)3.2.1 AT89C51的内部结构功能 (6)3.2.2 51单片机的串行接口工作方式 (7)3.3其它器件 (8)3.4十秒秒表系统原理图 (8)3.5设计的连线图 (9)3.6硬件资源及其分配 (9)3.7运行步骤 (10)3.8检测与调试 (10)3.8.1 硬件调试 (10)3.8.2 软件调试 (11)4 系统软件程序的简单设计 (12)4.1程序框图 (12)4.2程序 (13)4.3仿真结果图 (15)结论 (17)参考文献 (18)1 设计目的1.1 设计目的1、通过单片机课程设计,熟练掌握单片机C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2、通过定时/计数器控制两个LED数码管显示器显示10秒秒表系统的设计,掌握定时/计数器和LED数码管显示器的使用方法,同时掌握简单程序的编写,最终提高我们的逻辑抽象能力。
1.2 设计内容和要求内容:设计一个开关控制两个LED数码管显示器显示10秒秒表的模拟系统。
要求:利用单片机的定时/计数器定时,使两个LED数码管显示器分别显示秒位和毫秒位。
1.3 设计思路1、先熟悉实验原理,同时了解定时/计数器的运作,和LED数码管显示器显示0到9数字的原理。
2、绘制电路原理图,编写基本程序,并进行仿真,实现两个LED数码管显示器显示0到9数字的功能。
目录目录 01 设计目的 (1)设计目的 (1)设计内容和要求 (1)设计思路 (1)2 设计原理分析 (2)十秒秒表系统设计 (2)十秒秒表系统的功能要求 (2)计时显示 (2)中断设置 (2)十秒秒表系统的基本构成及原理 (3)LED数码管显示器的结构与原理 (3)LED数码管的显示方式 (4)3系统硬件电路的设计 (6)系统硬件总电路构成及原理 (6)主控制部分――AT89C51单片机简介 (6)AT89C51的内部结构功能 (7)51单片机的串行接口工作方式 (8)其它器件 (9)十秒秒表系统原理图 (9)设计的连线图 (11)硬件资源及其分配 (11)运行步骤 (12)检测与调试 (12)硬件调试 (12)软件调试 (13)4 系统软件程序的简单设计 (14)程序框图 (14)程序 (15)1 设计目的设计目的1、通过单片机课程设计,熟练掌握单片机C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2、通过定时/计数器控制两个LED数码管显示器显示10秒秒表系统的设计,掌握定时/计数器和LED数码管显示器的使用方法,同时掌握简单程序的编写,最终提高我们的逻辑抽象能力。
设计内容和要求内容:设计一个开关控制两个LED数码管显示器显示10秒秒表的模拟系统。
要求:利用单片机的定时/计数器定时,使两个LED数码管显示器分别显示秒位和毫秒位。
设计思路1、先熟悉实验原理,同时了解定时/计数器的运作,和LED数码管显示器显示0到9数字的原理。
2、绘制电路原理图,编写基本程序,并进行仿真,实现两个LED数码管显示器显示0到9数字的功能。
3、进一步完善程序,并进行仿真,使第二个LED数码管显示器每100毫秒(即秒)显示一个数字,使第一个LED数码管显示器每1秒显示一个数字。
2 设计原理分析十秒秒表系统设计通过编写程序,实现对LED数码管显示器的控制,进行十秒的计时。
使第二个LED数码管显示器每100毫秒(即秒)显示一个数字,使第一个LED数码管显示器每1秒显示一个数字。
采用单片机内部的I/O口上的P0口和P2口控制两个LED数码管显示器,用引脚来接收按钮的控制。
十秒秒表系统的功能要求本设计能模拟基本的十秒秒表显示系统,是用中断的方式计数和控制LED 数码管显示器显示数字。
计时显示定时/计数器工作方式寄存器存入定时/计数器工作方式,定时器采用T0定时器0工作于模式1:16位计数范围。
中断设置每累计2次定时器中断就相当于执行了秒,每累计20次定时器中断就相当于执行了1秒。
十秒秒表系统的基本构成及原理图 系统的总体框图LED 数码管显示器的结构与原理LED 数码管显示器是由发光二极管按一定的结构组合起来的显示器件。
在单片机应用系统中通常使用的是8段式LED 数码管显示器,它有共阴极和共阳极两种结构,如下图所示。
图 8段式LED 数码管结构其中图(a )为共阴极结构,8段发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共段接地,要使哪根发光二极管亮,则对应的阳极端接高电平;图(b )为共阳极结构,8段发光二极管的阳极端连接在一起,阴极端分单片机 晶振 复位电路 LED 数码管显示器1LED 数码管显示器2 开关开控制,使用时公共端接电源,要使哪根发光二极管亮,则对应的阴极端接地。
图(c)为引脚图,从a~dp引脚输入不同的8位二进制编码,可显示不同的数字或字符。
通常把控制发光二极管的8位二进制编码称为字段码。
此系统使用的共阴极结构,“0”~“9”数字的共阴极对应的字段码如表所示。
表“0”~“9”数字对应LED数码管的显示方式LED数码管在显示时,通常有静态显示方式和动态显示方式两种,本系统采用的是静态显示方式。
LED静态显示时,其公共端直接接地,各段选线分别与I/O接口线相连。
要显示字符,直接在I/O线发送相应的字段码,如图所示。
两个数码管的共阴极端直接接地,如果要在第一个数码管上显示数字1,只要在I/O(1)发送1的共阴极字段码;如果要在第二个数码管上显示2,只要在I/O(2)发送2的共阴极字段码。
图两位数码管静态显示3系统硬件电路的设计系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用AT89C51单片机及外围器件构成最小控制系统,2个LED数码管显示器和1个按钮等。
主要器件的选择:表3-1 元器件表主控制部分――AT89C51单片机简介89C51是一种带4K字节闪存可编程可擦除(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51单片机为40引脚双列直插芯片,有4个I/O口:P0、P1、P2、P3,单片机的最小系统如图所示,18引脚和19引脚接时钟脉冲电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器反相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器反相放大器的输出端,第9引脚为复位输入端,接上电容,电阻及开关后构成上电复位电路,20引脚为接地端,40引脚为电源端。
如图所示:图晶振与单片机的连接AT89C51的内部结构功能·中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
·数据存储器(内部RAM):数据存储器用于存放变化的数据。
AT89C51中数据存储器的地址空间为256个RAM单元,但其中能作为数据存储器供用户使用的仅有前面128个,后128个被专用寄存器占用。
·程序存储器(内部ROM):程序存储器用于存放程序和固定不变的常数等。
通常采用只读存储器,且其有种类型,在89系列单片机中全部采用闪存。
AT89C51内部配置了4KB闪存。
·定时/计数器(T0):定时/计数器用于实现定时和计数功能。
AT89C51共有2个16位定时/计数器。
·并行输入输出(I/O)口:8051共有4组8位I/O口(P0、P1、P2、P3),用于对外部数据的传输。
每个口都由1个锁存器和一个驱动器组成。
它们主要用于实现与外部设备中数据的并行输入与输出,有些I/O口还有其他功能。
·全双工串行口:A89C51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
·时钟电路:时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。
·中断系统:中断系统的作用主要是对外部或内部的终端请求进行管AT89C51共有5个中断源,其中有2个外部中断源和3个内部中断源。
51单片机的串行接口工作方式51单片机的串行接口有四种工作方式。
方式0是将SBUF作为8位同步移位寄存器使用(固定波特率);方式1是10位异步通信方式(可变波特率);方式2是11位异步通信方式(固定波特率);方式3是11位异步通信方式(可变波特率)。
图串行接口与单片机的连接其它器件LED数码管显示器根据本设计的特点,采用LED数码管显示器,它是由发光二极管按一定的结构组合起来的显示器件,在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种结构。
本系统设计采用的是共阴极结构,如下图所示。
图LED数码管显示器十秒秒表系统原理图本系统以单片机为核心,系统硬件电路由单片机、排阻、LED数码管显示器、按钮等组成。
如下图所示:图系统原理设计的连线图图实物图硬件资源及其分配主要用到的硬件:P0口、P2口、LED数码管显示器、按钮、定时器T0。
硬件分配:(1)P0口、P2口:各连接一个LED数码管显示器。
(2)定时/计数器T0:用来产生50毫秒的定时。
(3)按钮:用来对秒表器开始、暂停、清零。
运行步骤1、按硬件图接线,为了确保LED数码管显示器能够正确显示,P0口和P2口和两个数码管显示器连接应该注意。
按钮接引脚。
2、开始运行,点击按钮观察两个LED数码管显示器显示是否与程序设计思路对应,如果有偏差,则单步运行或断点运行,进行调试,直至满足设计要求。
3、整体运行,点击按钮观察两个LED数码管显示器显示是否都符合要求,如果不符合,则再调试,直至满足要求。
检测与调试硬件调试硬件调试是利用开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。
硬件调试可分为静态调试与动态调试两步进行。
◆静态调试静态调试是在用户系统未工作时的一种硬件检测。
第一步:目测。
检查外部的各种元件或者是电路是否有断点。
第二步:用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步:加电检测。
给电路板加电,检测所有的插座或是器件的电源端是否符合要求的值第四步:是联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
◆动态调试动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。
动态调试的一般方法是由近及远、由分到合。
由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。
当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试,由分到合的调试就完成。
由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。
调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件。
软件调试软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
编辑程序后,查看程序是否有逻辑错误。
4 系统软件程序的简单设计程序框图图程序框图程序#include <>#define uchar unsigned char#define uint unsigned intsbit K1 = P3^7;【2】余锡存,曹国华著,单片机原理及接口技术,西安电子科技大学出版社,2011.【3】雷丽文,等著,微机原理与接口技术,电子工业出版社,1997.【4】吴黎明,王桂棠,洪添胜等著,单片机原理及应用技术,科学出版社,2005. 【5】韩克,柳秀山等著,电子技能与EDA技术,暨南大学出版社,2004. 【6】张毅坤著,单片微型计算机原理及应用,西安电子科技大学出版社,1998.。