单片机60s倒计时c语言项目报告Word格式.docx

上传人:b****3 文档编号:7181374 上传时间:2023-05-08 格式:DOCX 页数:14 大小:123.89KB
下载 相关 举报
单片机60s倒计时c语言项目报告Word格式.docx_第1页
第1页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第2页
第2页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第3页
第3页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第4页
第4页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第5页
第5页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第6页
第6页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第7页
第7页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第8页
第8页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第9页
第9页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第10页
第10页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第11页
第11页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第12页
第12页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第13页
第13页 / 共14页
单片机60s倒计时c语言项目报告Word格式.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机60s倒计时c语言项目报告Word格式.docx

《单片机60s倒计时c语言项目报告Word格式.docx》由会员分享,可在线阅读,更多相关《单片机60s倒计时c语言项目报告Word格式.docx(14页珍藏版)》请在冰点文库上搜索。

单片机60s倒计时c语言项目报告Word格式.docx

按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

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

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

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

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

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

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

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

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

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

LED动、静态的显示

LED显示器工作方式有两种:

静态显示方式和动态显示方式。

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

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

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

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

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

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

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

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

共阳极的数码管0~f的段编码是这样的:

unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,//0~3

0x99,0x92,0x82,0xf8,//4~7

0x80,0x90,0x88,0x83,//8~b

0xc6,0xa1,0x86,0x8e//c~f

};

3.2定时计数器的工作方式和溢出判断方式的选择

3.2.1定时计数器的工作方式

M1M0:

四种工作方式的选择位

M1M0

方式

说明

00

13位定时器(TH的8位和TL的低5位)

01

1

16位定时器/计数器

10

2

自动重装入初值的8位计数器

11

3

T0分成两个独立的8位计数器,

T1在方式3时停止工作

溢出判断方式

中断方式:

利用AT89C51中的溢出中断,当定时计数器发生溢出时,跳到溢出中断的入口地址0BH/1BH里去执行中断服务子程序。

查询方式:

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

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

3.3本项目的选择

显示部分选择LED的动态显示

定时计数器选用方式1

溢出判断方式用中断方式

四.电路分析

4.1AT89S51

  AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:

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

  1.主要特性:

  •8031CPU与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.0RXD(串行输入口)

  P3.1TXD(串行输出口)

  P3.2/INT0(外部中断0)

  P3.3/INT1(外部中断1)

  P3.4T0(记时器0外部输入)

  P3.5T1(记时器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流程图

等待,是否有溢出中断

开始

中断和寄存器的初始化

进入中断,重装初值

aa是否到20(是否到1S)

给aa赋值20,

temp减一

temp是否到-1

给temp重新赋值60

显示

5.2程序清单与解释

#include<

reg51.h>

//头文件

sbitx1=P2^1;

//位定义

sbitx2=P2^2;

voiddelay(unsignedintz);

//函数申明

voiddisplay(unsignedcharshi,unsignedcharge);

voidcsh();

unsignedchartemp;

//变量定义

unsignedcharge,shi,aa;

unsignedcharcodea[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

unsignedinti=0;

voidmain()//主函数开始

{

csh();

//对中断初始化

while

(1)

{

shi=temp/10;

//分离十位和个位

ge=temp%10;

display(shi,ge);

//显示

if(aa==20)//判断师是否到一秒

{aa=0;

temp--;

if(temp==-1)

temp=60;

}

}

voiddelay(unsignedintz)//延时函数

{

unsignedintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

}

voiddisplay(unsignedcharshi,unsignedcharge)//动态显示函数

P1=a[shi];

x1=1;

delay(3);

x1=0;

P1=a[ge];

x2=1;

x2=0;

voidcsh()//初始化函数

TMOD=0x01;

TH0=0x3c;

TL0=0xb0;

EA=1;

EX0=1;

IT0=1;

ET0=1;

PX0=1;

PT0=0;

TR0=0;

P3=0xff;

voidint1()interrupt1//溢出中断0

aa++;

voidint0()interrupt0//外部中断0

{

TR0=~TR0;

六.电路仿真

用keil编程过程

编译连接通过

原理图

用proteus仿真

七.焊接调试

7.1元件清单

At89s51一片

At69s51插座一个

300欧姆电阻10个

12MHz晶振一个

30p电容2个

22uF的电解电容1个

开关一个

LED数码管一个

9013三极管2个

8.2k电阻1个

电源接口1个

万能板一块

7.2调试过程

由于一开始没有加三极管,所以LED数码管非常暗,才想到单片机的驱动能力不够。

所以加了三极管驱动。

7.3产品照片

八.项目总结

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2