基于单片机的30秒定时器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1课程设计题目:基于单片机的30秒定时器院(系):**************专业:********学生姓名:******学号:**********指导教师:*****职称:副教授20**年**月**日2摘要定时器是生活中比较常见的电子仪器的功能之一。但又比较实用,恰巧本人正在自学单片机,如果用单片机做的话,不失为一个学习的好机会。这个实验的难点和优点都是程序控制。因为单片机应用比较灵活,很有学习价值;而又因为它应用很灵活,所以必须学习大量的硬件知识和程序设计。单片机最小系统就是最简单的输出/输入构成,并且能实现最基本的运行条件,如应有供电、时钟附属电路等。单片机的最小系统包括晶振电路复位电路和电源这时最小系统基本组成,当然还可以添加矩阵键盘数码管等。此实验的原理是利用单片机的最小系统,通过单片机来控制数码管、蜂鸣器等,并通过单片机内部中断来实现30秒定时器的功能。关键词:单片机STC89S52;10管脚共阴数码管;内部中断;蜂鸣器3前言现在电子仪器发展迅速,而且功能越来越齐全化,体积微型化,仪器智能化;电压,电流要求越来越简单,功耗越来越低。而单片机就是其中的佼佼者。单片机有这体积小,功耗低(89C52功耗在100MW左右),功能强,性能价格比高,易于推广应用等显著特点,所以在现代社会中已经占统治地位。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。我们学习了单片机,在条件的允许下,就能制作生活中几乎全部的看起来比较复杂的电子作品。41、设计报告ⅰ.设计目的:实现基于单片机的30秒定时器;训练动手能力,学习单片机的控制与制作。ⅱ.设计任务:1.30秒计时器功能,两位数字显示,计时时间间隔为1秒;2.从1到30增计时,每次计时结束时,发光二极管闪动,蜂鸣器响,显示器显示0;3.设置外部开关,可使计时器直接清零。设计要求:使用常用芯片和其他元器件等,在一块电路板上实现30秒定时器。尽量使用所学知识。㈡.最小系统:最小系统,就是最简单的输出/输入构成,并且能实现最基本的运行条件,如应有供电、时钟附属电路等。单片机的最小系统包括晶振电路复位电路和电源,本实验最小系统只控制数码管、发光二极管、蜂鸣器。2.单片机端口定义5VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在FlashROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流()。此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见下表:6在对FlashROM编程和程序校验时,P1接收低8位地址。表XXP1.0和P1.1引脚复用功能引脚号功能特性P1.0T2(定时器/计数器2外部计数输入),时钟输出P1.1T2EX(定时器/计数器2捕获/重装触发和方向控制)P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流()。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX@DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX@R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。在对FlashROM编程和程序校验期间,P2也接收高位地址和一些控制信号。P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流()。在对FlashROM编程或程序校验时,P3还接收一些控制信号。P3口除作为一般I/O口外,还有其他一些复用功能,如下表所示:引脚号复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)7P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚()也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。(29引脚):外部程序存储器选通信号()是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活。/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,必须接GND。注意加密方式1时,将内部锁定位RESET。为了执行内部程序指令,应该接VCC。在Flash编程期间,也接收12伏VPP电压。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器的输入端。3、整体硬件原理图8图1硬件原理图图2硬件PCB版图3.1硬件部分9硬件部分包括键盘部分,显示部分、STC单片机部分、蜂鸣器报警和二极管闪动部分。3.2键盘设计采用独立键盘,与STC单片机IO口直接相连,实现时间调节功能。这个按键的功能是实现清零作用。3.3数码管显示设计显示部分由10管脚共阴数码管构成,能显示2个数字,用来实现从0到30的数秒功能。3.4蜂鸣器报警和二极管闪动根据要求,从1到30增计时,两次计时结束时,发光二极管闪动,蜂鸣器响;从而设置了计时结束报时功能,到30了,蜂鸣器就能发出对应的声音、二极管就能闪动。104、程序设计#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintsbitwela1=P2^6;sbitwela2=P2^7;//定义二个位选择sbitled=P2^0;//定义发光二极管sbitkey=P2^1;//按键sbitbeep=P2^5;//蜂鸣器voiddelay(uintz);//延时函数voidinit();uintaa,num=0,numb=0,temp=1;ucharcodetable[10]={0xb7,0x11,0xab,0x9b,0x1d,0x9e,0xbe,0x13,0xbf,0x9f};//定义数码管显示数字voidmain(){init();while(temp){if(!key){delay(100);if(!key){while(!key);num=0;numb=0;}}wela2=1;P0=table[num];11wela1=1;wela2=0;delay(1);//wela1=1;P0=table[numb];wela2=1;wela1=0;delay(1);}while(!temp){P0=0xb7;wela1=0;wela2=0;led=1;delay(1000);led=0;delay(1000);beep=0;if(!key){delay(100);if(!key){while(!key);num=0;numb=0;temp=1;}}}}12voiddelay(uintz)//延时函数{uintx,y;for(x=z;x0;x--)for(y=11;y0;y--);}voidinit()//程序初始化{//uintaa;led=0;beep=1;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;//开总中断。ET0=1;//开定时器中断。TR0=1;//打开定时器。}voidtimer0()interrupt1//外部中断1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==5){aa=0;13num++;if(num==10){num=0;numb++;if(numb==3){temp=0;}}}}14程序的中的注意点:1.两位以上的数码管,是不能在静态时同时显示不同的符号的,所以就需要用到动态显示,具体方法是每位数码管一次都显示几毫秒,实现动态扫描,使人在肉眼难以分辨(人眼的分辨能力是0.1秒左右),例如:dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0xfd;//11111101Bwela=0;delay(2);2.常用程序驱动几个发光二极管来判断单片机是否工作正常,具体是用循环移动P1扣来实现。3.如果按键按下,需要测试按键是否断开:while(!key1);4.按键在闭合和断开时,触点会存在按下抖动释放抖动理想波形实际波形稳定闭合+5V+5VAB无抖动有抖动5ms左右5ms左右15按下会执行几个抖动脉冲,常用软件消抖,比较方便实用,先延时10毫秒,大致跳过抖动时间,然后再测试。如:delay(5);if(key1==0)………………其他的在这里就不详细讲述了。为了保证程序能正确且正常运行,程序需要在单片机实验板上调试好了才能烧录,然后才能连接到电路板上。具体步骤:keil4编写程序———生成HEX文件(注意晶振频率为11.0592MHz)———用STC把程序下载到单片机上。㈤.两个基本电路:复位电路和晶振电路16复位电路:一般需要送4个时钟周期的高电平。按键后:电容器被短路放电、RST直接和VCC相连,就是高电平,此时进入“复位状态”。松手后:电源开始对电容器充电,此时,充电电流在电阻上,形成高电平送到RST,仍然是“复位状态”;稍后,充电结束,电流降为0,电阻上的电压也将为0,RST降为低电平,开始正常工作。晶振电路:产生一个固定频率的脉充,驱动芯片等元

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功