仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
目录
第1章 绪 论
1.1 设计背景与意义
第2章 课程设计目的和要求
2.1 课程设计目的
2.2 课程设计要求
第3章 多功能秒表系统概述
3.1 系统的主要功能
3.2 AT89C51的功能及简介
第4章 多功能秒表电路设计
4.1 元件清单
4.2 复位电路的设计
4.3 振荡电路的设计
4.4 按键电路的设计
4.5 显示电路的设计
4.6 报警电路的设计
4.7 总体电路设计图
第5章 总 结
参考文献
第1章 绪 论
1.1 设计背景与意义
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。课程设计是根据某一课题技术指标或逻辑功能的要求,进行电路的独立设计,实验安装和调试。根据这次课程设计的内容和要求,我首先进行了整体方案的构思,通过在图书馆和上网查阅资料,并分析和比较,选取了一种简单而且可行性高的方案。此方案主要由延时电路、定时计数电路、主控电路、程序译码驱动电路等组成。通过查阅有关书籍、上网和综合已学机以及电子技术的知识,并考虑到电路的工作稳定性,设计成本低,电路简单,功耗低等因素。
第4章 多功能秒表电路设计4.1 元件清单表4-1
4.2 复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期也(就是4微秒)的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图4-2所示,当要对晶片重置时,只要按开关就能完成LED和开关的重置。复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。单片机的RST管脚为主机提供了一个外部复位信号输入口。复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。单片机的复位方式可由手动复位完成。
图4-1复位电路
充电充满的时候流过的电流是0,所以接的是低电平,处于正常的状态,当按键按下的时候,电容被短路,电阻被接入到电路当中,5V电压直接接到电阻R1上面,所以电阻R1上的压降就是5V,所以第九脚的电压为电源电压5V,实现按键复位,电容起的作用就是开机上电复位。
4.3 振荡电路的设计8051内部有时钟电路,只需外部接石英晶体和微调电容即可,通常选用的是6MHz、12MHZ、11.0592MHz。 为多功能秒表循环系统提供稳定频率波在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,引入唯一的外部脉冲信号作为各单片机的振荡脉冲。这时外部的脉冲信号是经单片机89C51的XTAL2引脚注入的;在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率范围通常是1.2~12MHz。晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。 然而一般选用石英晶体振荡器。石英晶振的频率非常稳定,非常适合用在这个地方,图上4-1电路晶振在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的值为30μF。 图中选用的是12MHz的晶振,而它的机器周期是1微秒。
图4-2 复位电路
4.4 按键电路的设计按键电路由六个相同按键组成,分别作为开始,暂停,清零,倒计时,十位加一,个位加一,电路如下图:
图4-3 按键电路 4.5显示电路的设计显示电路使用了一个两位的共阳极LED数码管和1k欧排阻构成。数码管的位由p2.1和p2.0口决定。如下图:
图4-4 显示电路 4.6 报警电路的设计报警电路由小扬声器组成,计时完成后,利用显示子程序延时约2毫秒求反,产生250Hz的方波,从而扬声器发声,该电路如下:
图4-5 报警电路 4.7总体电路设计图
图4-6 总体电路设计图 4.7 仿真及调试
图4-6 总体电路仿真图
第5章 总 结
起初,刚拿到这个设计任务时,一头雾水,但是通过翻阅相关书籍和参考资料以及对应的秒表设计程序,终于有了一些自己的思路。通过几天的反反复复设计和程序编辑,几十次的仿真和调试,终于在答辩之前的前一天完成。此次课程设计我懂得了看花容易绣花难,理论联系实际的重要性,只有自己动手动脑,认真完成实践环节,才能加深自己对理论知识的理解。同时,在课设的过程中,也加深了自己对软件的熟练程度,查阅资料的能力。 同时,也要感谢同组同学的共同努力,通过互相发问,互相提出自己的设计方法,使得我们组同学的设计方案得到了优化,加深互相和合作的能力。也感谢老师在课设过程中给出的指导和建议。
附录一: 程序框图
- #include<reg51.h>
- #include "string.h"
- #include "stdio.h"
- #include "math.h"
- #include <INTRINS.H>
- #define uchar unsigned char
- #define uint unsigned int
- uchar a ,b ,time; //声明变量
- sbit wei1=P0^0; //关键字
- sbit wei2=P0^1;
- sbit key0= P0^2;
- sbit key1= P0^3;
- sbit key2= P0^4;
- bit dao=0; //定义位变量dao(倒计时)=0
- uchar code table[]={0x40,0x4f,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18}; //段码表
- void Delay5ms() //@12MHz
- {
- unsigned char i, j;
- i =9;
- j = 255;
- do //循环指令
- {
- while (--j);
- }
- while (--i); //循环
- Delay5ms(); //延时
- }
- main()
- {
- TMOD=0X01; //工作方式1
- TH0=(65535-50000)/256; //赋予初值
- TL0=(65535-50000)%256;
- EA=1; //允许中断
- ET0=1; //允许外部中断1
- while(1)
- {
- if(key0==0) //启动
- {
- Delay5ms(); //延时消抖
- if(key0==0)
- {
- while(!key0); //暂停/继续
- TR0=~TR0; //TR0取反
- }
- }
- YUI(key2==0)
- {
- if(key2==0) //复位
- {
- while(!key2);
- time=0;
- TR0=0; //停止T0计数
- }
- }
- wei1=0;
- P2=table[a]; //P2接口接到table[a]
- wei2=0;
- P3=table[b];
- if(key1==0)
- {
- Delay5ms();
- if(key1==0)
- {
- while(!key1);
- dao=~dao ; //取反,反向计时
- Delay5ms();
- }
- }
- a=time/10; //手动赋初值
- b=time%10;
- }
- }
- void TIME0()interrupt 1 //定时器0中断
- {
- uchar i;
- TH0=(65535-50000)/256; //初值高8位
- TL0=(65535-50000)%256; //初值低8位
- i++;
- if(i>20)
- {if(dao==0) //若倒计时为0
- time++; //计时正向(加)
- else
- if(time==0) //若时间为0
- { //正向倒向均为0
- time=0;
- TR0=0;
- dao=0;
- }
- else
- time--; //计时反向(减)
- if(time>=59)
- {
- time=59; //计数到59
- dao=1;
- TR0=0;
- }
- a=time/10; //赋予初值
- b=time%10;
- i=0;
- }
- }
复制代码
全部资料51hei下载地址(仿真工程+源码):
李士超单片机课设.zip
(364.71 KB, 下载次数: 105)
|