单片机60s倒计时c语言项目报告

合集下载

项目六:60秒倒计时控制

项目六:60秒倒计时控制

(3)定时工作方式2 定时工作方式2
方式2为自动重新加载工作方式。在这种工作方式下, 方式 为自动重新加载工作方式。在这种工作方式下, 为自动重新加载工作方式 位计数器分为两部分, 作计数器, 把16位计数器分为两部分,即以 作计数器,以TH作预置 位计数器分为两部分 即以TL作计数器 作预置 寄存器。初始化时把初始值分别装入TL和TH中。所以方式2 寄存器。初始化时把初始值分别装入 和 中 所以方式 位计数结构, 是8位计数结构,若晶振频率为 位计数结构 若晶振频率为12MHZ,则最大时间约为 , 0.25 ms。工作原理:当TL计数满溢出了以后,TH自动将初 计数满溢出了以后, 。工作原理: TL计数满溢出了以后 TH自动将初 值装入TL,省去了方式 和方式0中要重新装初值的步骤。 省去了方式1 值装入TL,省去了方式1和方式0中要重新装初值的步骤。 计数初值的计算: 计数初值的计算: 定时时间: t=(28-T初值)× 机器周期 定时时间: ( 初值) 初值 因此, 初值 初值=2 ( 机器周期 机器周期) 因此,T初值 8-(t/机器周期) 计数:所计脉冲个数 ( 初值) 计数:所计脉冲个数=(28-T初值) 初值 因此, 初值 初值=2 所计脉冲个数 因此,T初值 8-所计脉冲个数 初始化的时候,软件编程将初值送到 位寄存器 位寄存器TH和 初始化的时候,软件编程将初值送到8位寄存器 和 TL中。启动以后,TL里面就自动加 计数。 里面就自动加1计数 中 启动以后, 里面就自动加 计数。
相关的控制寄存器
方式寄存器TMOD 方式寄存器 控制寄存器TCON 控制寄存器
在单片机应用系统中, 在单片机应用系统中,经常需要定时控制或对外部时 间信号进行计数。定时器/计数器是 计数器是MCS-51单片机的重要 间信号进行计数。定时器 计数器是 单片机的重要 模块之一。 系统单片机中51系列内部有两个定时 模块之一。MCS-51系统单片机中 系列内部有两个定时 系统单片机中 计数器T0、 ,它们都是16位的 位的。 器/计数器 、T1,它们都是 位的。 计数器 1、定时器控制寄存器(TCON) 、定时器控制寄存器( ) TCON寄存器既参与中断控制又参与定时控制,该控 寄存器既参与中断控制又参与定时控制, 寄存器既参与中断控制又参与定时控制 制寄存器的位地址和位符号如表所示: 制寄存器的位地址和位符号如表所示:

倒计时60秒程序(单片机C51)

倒计时60秒程序(单片机C51)

倒计时60秒程序(单片机C51)#include#define uint unsigned int#define uchar unsigned charuchar code table[]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};sbit gew=P2^1;sbit shiw=P2^0;sbit k2=P1^0;uchar num,num1=60,num2,shi,ge;void Init(){TMOD=0X01; TH0=(65536-50000)%256; TL0=(65536-50000)%256;EA=1;ET0=1; TR0=1;}void delay(uint xms) //延时子函数{uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void scankey() //键盘检测子函数{if(k2==0) //检测键是否被按下{delay(5); //延时消除抖动if(k2==0) //重新读取k2的值{num2++; //num2为按次数标志位while(!k2); //等待按键释放if(num2==1) //按键一次计时停止TR0=0;if(num2==2) //按键两次计时开始{TR0=1;}}}}void main() //主函数{Init(); //初始化子函数调用while(1){scankey(); //不断键盘扫描gew=0; //打开数码管个位位选P0=table[ge]; //数码管个位赋值delay(1); //延时送入数据的反应时间gew=1; //关闭数码管个位位选delay(1);shiw=0; //打开数码管十位位选P0=table[shi]; //送入数据delay(1);shiw=1; //关闭数码管十位位选delay(1);}}void Timer0() interrupt 1{TH0=(65536-50000)/256; //定时器重装初值TL0=(65536-50000)%256;num++;if(num==20) //定时器每进行一个周期num加1,运行20个周期即为1s{num=0; //到1秒,num清0重新开始num1--; //倒计时1秒if(num1==0)num1=60;shi=num1%10; //两位数分离赋给数码管十位显示ge=num1%10; //两位数分离赋给数码管个位显示}}。

实验八 单片机控制的60s倒计时实验

实验八 单片机控制的60s倒计时实验

实验八单片机控制的60s倒计时实验
一、实验目的
1.用单片机AT89C51的定时/计数器实现60s倒计时。

采用两位数码管静态显示倒计时秒值。

2.用proteus设计、仿真基于AT89C51单片机的60s倒计时实验。

二、电路设计
1.从PROTEUS库中选取元件
①AT89C51:单片机;
②RES:电阻;
③7-SEG-COM-AN-GRN:带公共端的七段共阳绿色数码管;
④CAP、CAP-ELEC:电容、电解电容;
⑤CRYSTAL:晶振;
2.放置元器件
3.放置电源和地
4.连线
5.元器件属性设置
6.电气检测
三、源程序设计、生成目标代码文件
1.流程图
2.源程序设计
通过菜单“sourc e→Add/Remove Source Files…”新建源程序文件:DZC38.ASM。

通过菜单“sourc e→DZC38.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。

程序编辑好后,单击按钮存入文件DZC38.ASM。

3.源程序编译汇编、生成目标代码文件
通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。

若编译失败,可对程序进行修改调试直至汇编成功。

四、PROTEUS仿真
1.加载目标代码文件
2.仿真
单击按钮,启动仿真。

五、思考题:
1.若单片机晶振为12MHZ,用T0产生1us的定时,可以选择几种方式?分别写出定时器的方式字和计数初值。

2.编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400us,占空比为10:1的矩形波脉冲。

89C51单片机60秒倒计时的模拟与仿真设计

89C51单片机60秒倒计时的模拟与仿真设计

单片机结课设计论文学院:班级:姓名:学号:任课老师:二〇一二年五月目录1学习心得 (2)2结课设计 (2)3正文 (4)3.1 设计要求 (4)3.2 结课设计的目标 (4)3.3 设计方法和内容 (4)3.3.1硬件设计方法 (5)3.3.2软件设计方法 (9)3.4 软件调试过程 (11)3.4.1 系统调试工具keil C51 (11)3.4.2 系统调试工具PROTEUS (11)4设计总结 (12)5参考文献 (13)学习心得单片机课程是我们专业一个很重要的课程,因为单片机方面的很多知识都应用在机电一体化中。

现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。

了解到单片机的重要性,一开始我就决定了一定要好好学这门课。

刚开始接触单片机是很陌生的,当学到89C51单片机的结构及原理这一章的时候,感觉书本里面的内容抽象且难以理解,心里面本能地就有一股抵制情绪在作怪。

但是一想到单片机是如此的重要又不得不逼着自己去学去记。

学到指令系统这部分内容的时候,里面的很多指令往往让自己感到厌烦,面对一些冗长的汇编程序,往往不用看到最后就已经失去兴趣了。

感觉自己学习单片机的过程其实就是一个对陌生领域的本能的抵制而又渴望征服的过程!我意识到单片机的重要性也从心里面想过要学好这门课程,在学习的过程中我尽力的克服了由本能产生的对抽象知识的抵制情绪,上课认真听讲,做好笔记,最后总算对单片机有一个比较全面的了解。

特别是最后做的那七个实验的时候,每一次我都会认真的思考该怎么去实现这个功能,怎么样从书本中得到答案,怎么样去做好理论联系实际。

在实验的实践过程中,我发现要学好单片机不仅仅要认认真真学习书本上的理论知识,更要学得透彻,还要实际操作单片机。

理论联系实际,这样的学习才不会变得更加生动,更容易调动学习积极主动性。

虽然单片机这门课程已经结课了,但是老师传授给我的知识将使我终身受益!短短几十个学时的学习,老师作为领路者把我带入了单片机这一奇妙的领域。

本科毕业设计之基于51单片机控制的60秒倒计时系统设计

本科毕业设计之基于51单片机控制的60秒倒计时系统设计

摘要最近几年来随着运算机在社会领域的渗透,单片机的应用正在不断地走向深切,同时带动着传统控制检测日新月异的更新。

由于单片机具有体积小,易于产品化、面向控制、集成度高、功能强、靠得住性高、价钱低等特点,其在工业控制、机电一体化、智能仪表、通信等诸多领域中取得了普遍的应用。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来利用。

可是仅单片机方面知识是不够的,还应按照具体硬件结构,和针对具体应用对象特点的软件结合,以作完善。

本次设计采用C语言编程,通过倒计时子程序模块、矩阵键盘扫描模块、中断等子程序的正确挪用,完成了能够随时设置初值的基于51单片机控制的60秒倒计时系统。

关键词:倒计时单片机KeiluVision3 LED数码显示器目录1 MCS-51 单片机硬件结构及原理 (1)MCS-51系列单片机结构 (1)1.1.1 MCS-51单片机的大体组成 (1)1.1.2内部大体结构 (3)MCS-51单片机存储器安排 (6)1.2.1存储器空间安排 (6)1.2.2片内存储器 (6)单片机秒表课程设计的概述 (9)课程设计思路及描述 (9)课程设计任务和要求 (10)系统硬件方案设计 (11)软件方案设计 (11)生“HEX”文件的步骤 (12)源程序及注释 (15)原理图分析 (16)课程设计效果 (18)总结 (19)致谢 (20)参考文献 (21)1 MCS-51 单片机硬件结构及原理 MCS-51系列单片机结构 1.1.1 MCS-51单片机的大体组成 1 整体结构图1-1单片机的整体结构2. MCS-51单片机外部引脚及其说明最多见的封装形式是40引脚双列直插式DIP(Dual In-line Package) 尚有44引脚的无引线芯片载体封装PLCC(Plastic Leaded Chip Carrier)图1-2 MCS-51单片机外部引脚及说明其中两条电源线,两条外接晶体,4条控制或作电源复用,32条I/O 引线。

倒计时60s项目报告

倒计时60s项目报告

60秒倒计时项目报告班级:姓名:学号:目录一.前言(摘要)二.项目要求三.方案选择四.电路分析(芯片介绍)五.软件介绍(流程图、程序清单)六.电路仿真(KEILC51,PROTEUS界面图以及过程)七.焊接调试(元件清单,调试过程,产品照片)八.项目总结(多写,深入,项目分工)一.前言当今时代电子技术以惊人的速度更新着,尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,逐渐被单片机智能控制系统所取代。

单片机具有体积小、功能强、成本低、应用面广等优点。

课程设计是单片机课程教学的重要环节,是对学生进行全面的系统的训练。

为了使我们能很好地通过这一教学环节得到锻炼,达到预期效果,要为每一项目写一篇项目报告,设计应重视动手实验的内容,做到实验与设计两者并重;对于单片机应用课程设计,则又应软、硬件结合和兼顾。

在符合教学、符合学生水平、符合实验室条件的情形下,供我们试设计。

老师考虑到设计时间较短促、学生的独立工作能力还不是很强,且老师将同时指导三个班级,因此我们分组合作,工作量不太大;学生可编组进行设计,可选择焊接但提倡个人有独到的见解,并应独立写出设计说明书。

此次做倒计时。

定时/实现方式:1.软件定时;(延时程序)2.不可编程硬件定时(555);3.可编程定时(8253),单片机定时/计数器这次我们AT89C51单片机自制了一款简易的60秒倒计时。

二.项目要求1.基于AT89C51的60秒倒计时装置应用定时器/计数器及其中断实现60秒倒计时,并将倒计时过程显示在LED数码管上,倒计时循环进行用定时器计数器T1,选12MHz晶振,宜选用方式1。

基本定时时间为50ms,则定时溢出次数计数达到20次为定时1秒。

显示器采用共阳数码管,静态显示。

每一秒显示刷新一。

2.硬件和软件功能的划分系统的硬件配置和软件设计是紧密地联系在一起的,且硬件和软件具有一定的互换性。

多用硬件完成一些功能,可以提高工作速度,但降低了系统的柔性。

单片机60秒计时器实验报告

单片机60秒计时器实验报告

单片机60秒计时器实验报告一、实验目的本实验旨在设计并实现一个基于单片机的60秒计时器,通过学习单片机的基本原理和编程语言,掌握单片机计时器的设计和实现方法。

二、实验原理1. 单片机基础知识:单片机是一种集成电路芯片,它包含了中央处理器(CPU)、存储器(RAM、ROM)、输入输出(I/O)接口等多个功能模块。

单片机可以通过编写程序来控制各种外设,如LED灯、蜂鸣器等。

2. 计时器原理:计时器是一种用于测量时间的电子设备,它通常由一个晶振作为基准信号源,通过分频和计数来实现精确计时。

在单片机中,计时器通常由定时器(Timer)模块来实现。

3. 60秒计时器设计:本次实验需要设计一个能够精确计时60秒的计时器。

具体步骤如下:(1) 设置定时器工作模式为定时模式;(2) 设置定时时间为60秒;(3) 等待定时完成,并触发中断;(4) 在中断服务函数中输出时间到LED灯或数码管上。

三、实验材料1. STC89C52RC单片机开发板;2. 4位共阳数码管或8个LED灯;3. 杜邦线若干。

四、实验步骤1. 连接电路:将单片机开发板上的P0口连接到4位共阳数码管或8个LED灯的控制引脚,P3口连接到晶振、复位电路等。

2. 编写程序:使用Keil C51编写单片机程序,实现60秒计时器功能。

具体代码如下:#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit LED1 = P0^0; //LED灯连接到P0.0sbit LED2 = P0^1; //LED灯连接到P0.1sbit LED3 = P0^2; //LED灯连接到P0.2sbit LED4 = P0^3; //LED灯连接到P0.3void InitTimer() //初始化定时器{TMOD &= 0xF0; //设置工作模式为定时模式TH1 = 0x3C; //设置定时时间为60秒TL1 = 0xB0;ET1 = 1; //开启定时器中断允许位}void TimerInterrupt() interrupt 3 //定时器中断服务函数{static uchar cnt = 60; //计数器,初始值为60秒if(cnt > 0) cnt--; //每次中断计数器减一if(cnt == 10) { //当计数器为10秒时,LED1闪烁LED1 = ~LED1;}if(cnt == 0) { //当计数器为0秒时,所有LED灯关闭 LED1 = 0;LED2 = 0;LED3 = 0;LED4 = 0;}}void main(){InitTimer(); //初始化定时器while(1) {LED2 = 1; //LED2始终点亮if(TF1) { //如果定时器溢出,重新加载计时器TF1 = 0; //清除定时器中断标志位TH1 = 0x3C; //设置定时时间为60秒TL1 = 0xB0;ET1 = 1; //开启定时器中断允许位cnt = 60; //重置计数器}}}3. 烧录程序:将编写好的程序通过ISP或其他烧录工具烧录到单片机中。

单片机60秒计时器程序c语言

单片机60秒计时器程序c语言

一、概述计时器在日常生活和工业生产中扮演着重要的角色。

60秒计时器是一种常见的计时器类型,用于测量较短的时间间隔。

单片机作为一种微处理器,具有广泛的应用领域,其使用C语言编程可以实现各种功能,包括计时器。

本文将介绍如何使用C语言编写单片机60秒计时器程序。

二、程序框架1. 宏定义和全局变量声明在编写单片机60秒计时器程序时,首先需要定义一些宏和全局变量,用于设置计时器的工作模式和进行时间计数。

例如:```c#define FOSC xxx#define T1MS (xxx-FOSC/12/1000) 每隔1ms中断一次```全局变量声明如下:```cunsigned char g_seconds;unsigned char g_minutes;unsigned char g_flag;```2. 定时器初始化计时器的初始化是整个程序的重要步骤,需要配置计时器的工作模式、中断使能等。

在C语言中,可以通过编写相应的代码实现。

```cvoid Timer1Init() {TMOD |= 0x10; //设置计数器的工作方式为方式1TH1 = T1MS / 256; //装初值TL1 = T1MS 256;ET1 = 1; //打开定时器1中断允许TR1 = 1; //打开定时器EA = 1; //打开总中断}```3. 计时器中断处理函数计时器中断发生时,需要进行相应的处理,例如对秒数进行累加,判断是否达到60秒等。

```cvoid Timer1_ISR() interrupt 3 using 1 {TH1 = T1MS / 256;TL1 = T1MS 256;g_seconds++;if (g_seconds >= 60) {g_minutes++;g_seconds = 0;}if (g_minutes >= 60) {g_minutes = 0;}g_flag = 1;}```4. 主函数在主函数中,可以设置好计时器的初始状态,并通过不断循环等待计时器中断的触发,实现60秒计时功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

倒计时项目报告电子08-1班组员:目录目录 (2)一.摘要 (3)二.项目要求 (4)三.方案选择 (5)3.1 LED显示方式的选择 (5)3.1.1LED数码管的介绍 (5)3.1.2LED动、静态的显示 (5)3.2定时计数器的工作方式和溢出判断方式的选择 (6)3.2.1定时计数器的工作方式 (6)3.2.2溢出判断方式 (7)3.3本项目的选择 (7)四.电路分析 (8)4.1AT89S51 (8)4.2LED数码管 (11)五.软件介绍 (12)5.1流程图 (12)5.2程序清单与解释 (13)六.电路仿真 (15)七.焊接调试 (17)7.1元件清单 (17)7.2调试过程 (17)7.3产品照片 (17)八.项目总结 (18)一.摘要随着计算机技术的发展,在后PC时代里,嵌入式得到了飞快的发展,同时已经渗透到各个领域。

作为嵌入式重要组成部分的单片机,以它的优势占领重要的地位。

当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机,目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起学习单片机的最有效方法就是理论与实践并重,本项目用AT89S51单片机自制了一款简易倒计时,介绍了其软件编程方法,和一些简单的硬件电路。

软件应用了C语言编程,应用到AT89S51的一个定时计数器,一个外部中断,显示部分应用了LED动态扫描的方法。

应用到三极管的开关特性。

基本的功能是60秒循环倒计时,可以用一个开关来控制倒计时的停止与开始。

二.项目要求应用定时计数器及其中断实现60s倒计时,并将倒计时的过程显示在LED数码管上,倒计时循环进行。

三.方案选择3.1 LED显示方式的选择3.1.1LED数码管的介绍数码管是一种半导体发光器件,其基本单元是发光二极管。

数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。

当某一字段的阴极为高电平时,相应字段就不亮。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。

当某一字段的阳极为低电平时,相应字段就不亮。

使用时,要注意区分这两种不同的接法。

为了显示数字或字符,必须对数字或字符进行编码。

七段数码管加上一个小数点,共计8段。

3.1.2LED动、静态的显示LED显示器工作方式有两种:静态显示方式和动态显示方式。

静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。

当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。

这种方法的优点是占用CPU时间少,显示便于监测和控制。

缺点是硬件电路比较复杂,成本较高。

动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。

选亮数码管采用动态扫描显示。

所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。

动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

共阳极的数码管0~f的段编码是这样的:unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,//0~30x99,0x92,0x82,0xf8,//4~70x80,0x90,0x88,0x83,//8~b0xc6,0xa1,0x86,0x8e //c~f};3.2定时计数器的工作方式和溢出判断方式的选择3.2.1定时计数器的工作方式M1 M0:四种工作方式的选择位3.2.2溢出判断方式中断方式:利用AT89C51中的溢出中断,当定时计数器发生溢出时,跳到溢出中断的入口地址0BH/1BH里去执行中断服务子程序。

查询方式:通过查询TF0/TF1是否为一,如果为一,定时计数器发生溢出中断,为零反之。

但要注意的是通过软件查询方式的,必须要通过软件使TF0/TF1清零。

3.3本项目的选择显示部分选择LED的动态显示定时计数器选用方式1溢出判断方式用中断方式四.电路分析4.1AT89S51AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4 k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

1.主要特性:• 8031 CPU与MCS-51 兼容• 4K字节可编程FLASH存储器(寿命:1000写/擦循环)• 全静态工作:0Hz-24KHz• 三级程序存储器保密锁定• 128*8位内部RAM• 32条可编程I/O线• 两个16位定时器/计数器• 6个中断源• 可编程串行通道• 低功耗的闲置和掉电模式• 片内振荡器和时钟电路2.管脚说明:VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

4.2LED数码管原理在方案选择中已经说过了,在这里就不多说了!五.软件介绍5.1流程图5.2程序清单与解释#include<reg51.h> //头文件sbit x1=P2^1; //位定义sbit x2=P2^2;void delay(unsigned int z); //函数申明void display(unsigned char shi,unsigned char ge);void csh();unsigned char temp; //变量定义unsigned char ge,shi,aa;unsigned char code a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; unsigned int i=0;void main() //主函数开始{csh(); //对中断初始化while (1){shi=temp/10; //分离十位和个位ge=temp%10;display(shi,ge); //显示if(aa==20) //判断师是否到一秒{aa=0;temp--;if(temp==-1)temp=60;}}}void delay(unsigned int z) //延时函数{unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void display(unsigned char shi,unsigned char ge) //动态显示函数{P1=a[shi];x1=1;delay(3);x1=0;P1=a[ge];x2=1;delay(3);x2=0;}void csh() //初始化函数{TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;EX0=1;IT0=1;ET0=1;PX0=1;PT0=0;TR0=0;temp=60;P3=0xff;}void int1() interrupt 1 //溢出中断0 {TH0=0x3c;TL0=0xb0;aa++;}void int0() interrupt 0 //外部中断0 {TR0=~TR0;}六.电路仿真用keil编程过程编译连接通过原理图用proteus仿真七.焊接调试7.1元件清单7.2调试过程由于一开始没有加三极管,所以LED数码管非常暗,才想到单片机的驱动能力不够。

相关文档
最新文档