单片机99秒计时器
99秒倒计时器

单片机课程设计摘要近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
At89s52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
模拟多通道压力系统是利用压力传感器采集当前压力并放映在显示器上,它可以分析压力过量程,并发出报警。
并采用电子秤原理可根据输入单价准确的计算出物体的金额。
本篇论文讨论了简单的倒计时器的设计与制作,对于倒计时器中的LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。
关键词:AT89C51 LED数码管显示器晶体振荡器目录摘要 (I)第一章概述 (1)1.1 课程设计目的 (1)1.2 总体设计 (1)第二章硬件电路 (2)2.1各个元件介绍 (2)2.1.1 AT89C51的芯片概述 (2)2.1.2 LED数码管显示器概述 (3)2.2 其他元器件介绍及参数选择 (6)2.2.1 单片机的最小系统与复位电路 (6)2.2.2显示电路的设计 (7)第三章软件部分 (9)3.1 相关软件介绍 (9)3.1.1 Keil C软件 (9)3.1.2 Proteus软件 (9)3.2 软件设计 (10)3.2.1 程序框图如图 (10)3.2 .2 软件程序 (11)第四章软件调试 (14)4.1 系统调试工具keil c51 (14)4.2 PROTEUS仿真 (14)第五章电路焊接与调试 (17)5.1 电路板的焊接 (17)总结 (19)参考文献 (20)致谢 (21)第一章 概述1.1 课程设计目的 课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
单片机课程设计(99s计时)

#include<reg52.h>unsigned char time;unsigned char code ss[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(unsigned int t);void display(unsigned char num);void timer_init(void);void INT_init(void);sbit weixuan_1=P2^0;sbit weixuan_2=P2^1;void main(){time=0;weixuan_1=1;weixuan_2=1;INT_init( );timer_init( );while(1){display(time);}}void display(unsigned char num){unsigned char i,j;if(num<10){weixuan_1=0;weixuan_2=1;P0=ss[num];}else{for(i=0;i<20;i++){weixuan_1=0;weixuan_2=1;P0=ss[num%10];}delay(20);P0=0XFF;for(j=0;j<50;j++){weixuan_1=1;weixuan_2=0;P0=ss[num/10];}}}void delay(unsigned int t){unsigned int i;for(i=t;i>0;i--){;}}void INT_init(void){EX0 = 1;IT0 = 1;EX1 = 1;IT1 = 1;EA = 1;}void interrupt0_handler(void)interrupt 0 {TR0=~TR0;}void interrupt1_handler(void)interrupt 2 {time=0;INT_init( );timer_init( );}void timer_init(void){TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;TR0=1;ET0=1;}void timer0(void)interrupt 1{unsigned char n;TH0=(65536-50000)/256;TL0=(65536-50000)%256;n++;if(n==20){time++;n=0;if(time==100){time=0;}}}//从TLC1543读取采样值,形参port是采样的通道号unsigned int read1543(unsigned char port) {unsigned int ad=0;unsigned int i;unsigned int al=0,ah=0;_CS=0;CLOCK=0;port<<=4;for (i=0;i<4;i++) //把通道号打入1543{D_IN=(bit)(port&0x80);CLOCK=1;CLOCK=0;port<<=1;}for (i=0;i<6;i++) //填充6个CLOCK{CLOCK=1;CLOCK=0;}_CS=1;delay(100);_CS=0; //等待AD转换CLOCK=0; for (i=0;i<2;i++) //取D9,D8{CLOCK=1;ah<<=1;if (D_OUT){ah +=0x01;}CLOCK=0;}for (i=0;i<8;i++) //取D7--D0{CLOCK=1;al <<= 1;if (D_OUT){al +=0x01;}CLOCK=0;}ah=ah*256;ad=ah+al;_CS=0;_CS=1;return(ad);}unsigned char read_keyboard(){hangxian=0x00;key_value=(liexian&0x0f);if(key_value!=0x0f){delay(10000);if(key_value!=0x0f){hangxian=0x0e;delay(2);if((liexian&0x0f)==0x0f){hangxian=0x0d;delay(2);if((liexian&0x0f)==0x0f){hangxian=0x0b;delay(2);if((liexian&0x0f)==0x0f) {hangxian=0x07;delay(2);}}}}key_value=liexian&0x0f;while((liexian&0x0f)!=0x0f);delay(10000);key_value=key_value<<4; switch(key_value|(hangxian&0x0f)){case 0xee:key_return =0;break;case 0xde:key_return =1;break;case 0xbe:key_return =2;break;case 0x7e:key_return =3;break;case 0xed:key_return =4;break;case 0xdd:key_return =5;break;case 0xbd:key_return =6;break;case 0x7d:key_return =7;break;case 0xeb:key_return =8;break;case 0xdb:key_return =9;break;case 0xbb:key_return =10;break;case 0x7b:key_return =11;break;case 0xe7:key_return =12;break;case 0xd7:key_return =13;break;case 0xb7:key_return =14;break;case 0x77:key_return =15;break;}}return key_return;}矩阵键盘核心程序#include<at89x52.h>#include<absacc.h>#include<intrins.h>#include<lcd.h>#include<AD.h>unsigned char aaa[]={"ADzhuanhuantest"};unsigned char ad_result[10]={0};unsigned char temp[4]={0};float jizhun_AD=2.51;unsigned int ad_data=0;unsigned int ad_v=0;unsigned int ad_bak=6000;unsigned int count;void shuzhichuli(void);void main(void){PORT=0x03;lcd_init( );lcd_clear( );while(1){count++;ad_data=read1543(0);ad_v=(unsigned long int)ad_data*2510/1024;if((ad_v!=ad_bak)&&(count>300)){count=0;shuzhichuli();lcd_string(aaa,1);lcd_string(ad_result,2);ad_bak=ad_v;}}}void shuzhichuli(void){unsigned int temp0,temp1;unsigned int i;unsigned int w;temp1=ad_v;for(i=0;i<4;i++){temp0=temp1%10;temp1=temp1/10;temp[i]=temp0;}for(w=0;w<5;w++){if(w==0){ad_result[w]=temp[3]+48;}else if(w==1){ad_result[w]='.';}else{ad_result[w]=temp[4-w]+48;}}}。
单片机99秒倒计时课程设计用74ls246

单片机99秒倒计时课程设计用74ls246
首先需要明确的是,经典的倒计时电路设计使用的是74LS192或74LS193计数器芯片,而74LS246是一个8位三态缓冲器,与倒计时电路设计关系不大。
下面给出使用74LS192或74LS193实现99秒倒计时的电路设计流程简述:
1. 确定时钟源
在倒计时电路中,需要一个时钟源来驱动计数器进行计数。
可以使用555定时器或水晶振荡器作为时钟源。
2. 设计计数器
使用74LS192或74LS193计数器芯片设计倒计时电路,需要考虑电路的初始状态以及计数器输出的电平状态。
3. 确定触发计数的条件
可以使用按键或外部信号触发计数开始。
在计数进行的过程中,需要在常开触点上接入继电器,当倒计时完成时,继电器断开触点,使接入的负载失去电源。
4. 设计显示器件
倒计时电路需要一个显示设备,可以使用LED或七段数码管等显示设备。
在使用七段数码管时,需要使用译码器将计数器的当前值转化为七段数码管的驱动信号,以实现数字显示。
以上是倒计时电路设计流程的简述,具体实现过程涉及到电路原理图的绘制、元器件的选型和焊接调试等环节,在设计过程中需要注意选用合适功耗和电性能指标的元器件,并加以保护,以确保电路的安全性和稳定性。
在实现过程中,应遵循相关的安全要求和规范,特别是对于高电压和高温度的电路部分,需要注意安全操作和防危控制。
单片机99S倒计时课程设计

课程设计课程名称:__单片机课程设计题目名称:__倒计时器设计学生学院:_物理与光电工程学院专业班级:_光信息科学与技术10(1)班学号:_XXXXXXX_2012年12月3日摘要 (2)一、本设计任务、实现方法及完成的功能 (3)1、功能要求 (3)2、实现方法 (3)二、设计的实现过程 (3)1、矩阵电路 (4)2、数码显示和驱动电路 (4)3、复位电路 (5)4、晶振电路 (6)三、系统的软件设计 (4)1、按键扫描函数ankey() (4)2、动态数码管显示函数 (5)3、初始化函数设计 (6)4、中断函数设计 (6)四、总体程序 (7)五、结束语 (12)倒计时课程设计一:课程设计的要求1、功能要求:实现最长99S的倒计时功能;利用数码管或液晶屏显示数字;利用按键可以设置倒计时时间;设置倒计时开始启动键;时间到,声(光)报警,示意倒计时时间到。
2、实现方法:单片机采用51系列,分析功能要求,设计方案,编写程序(keil c51 软件),利用Proteus 进行仿真。
二:设计的实现过程1.proteus仿真下总原理框架图如下接线:(1)、XTAL1、XTAL2为晶振接入(2)、RST为清零电路接入(3)、P1口为键盘电路接入(4)、P2口为数码管的段选(5)、P3..7为LED的选通(6)、P0.6、P0.7分别为数码管的十位、个位的选通原件清单:AT89C51单片机1个、1k电阻3个、12MHz晶振1个、33pF电容1个、1uF电容1个、10uf 的电容一个、独立按键1个、4行3列矩阵按键1个、LED指示灯1个、两位动态共阴数码管1个、带9个引脚的上拉电阻1个、电源3个、地若2个2.模块组成设计(1)、矩阵键盘电路矩阵键盘电路原理:以上矩阵采用了4*3的结构,通过ankey()子函数不断逐行逐行地扫描矩阵键盘电路,一旦判断有按键按下立即反馈给倒计时时钟循环函数。
扫描电路子程序:void ankey() // 键盘扫描{uchar temp,key;P1=0xef;//第1行temp=P1;temp=temp&0x0f;//temp高4位清0;if(temp!=0x0f) //判断是否有键按下{delayms(10); //延时,消除抖动if(temp!=0xf0)//判断是否有键按下{temp=P1; //重新读取P1口switch(temp)//判断哪个键按下{case 0xeb:key=1;break;case 0xed:key=2;break;case 0xee:key=3;break;}text(key);while(temp!=0x0f)//判断按键是否释放{temp=P1;temp=temp&0x0f;}}}(2)、数码管显示和驱动电路数码管显示电路原理:通关P0.6和P0.7的位选通信号控制数码管十位个位的选通,然后通过P2口的段选信号控制数码管的显示数字。
单片机99S倒计时课程设计

if(temp!=0x0f) //判断是否有键按下
{
delayms(10); //延时,消除抖动
if(temp!=0xf0)//判断是否有键按下
{
temp=P1; //重新读取P1口
switch(temp)//判断哪个键按下
{
case 0xeb:
(4)中断子函数:
void T0_time() interrupt 1//定时器0中断函数
{
TH0=(65536-50000)/256;//重装初值
TL0=(65536-50000)%256;
numt0++;//50ms中断一次
}
(5)初始函数:
void init() //初始化函数
{
TMOD=0x01;//设置定时器0为工作方式1(0000 0001)
#define uint unsigned int
sbit sw=P0^6;//十位位选
sbit gw=P0^7;//个位位选
sbit led=P3^7;//LED灯
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};//编码定义
二、设计的实现过程······································3
1、矩阵电路····················································4
2、数码显示和驱动电路·······································4
51单片机99秒马表设计程序

实验一99秒马表设计1.实验任务开始时,显示“00”,第1次按下按键后就开始计时。
第2次按键后,计时停止。
第3次按键后,计时归零。
2.实验要求用proteus软件画出电路图在keil软件中编写、调试程序要求秒表的误差每秒钟不高于0.01S撰写好实验报告,要求至少包含以下几项:实验目的实验任务与要求实验电路程序流程图实验程序电路仿真结果分析与误差分析实验总结#include"reg52.h"#define uchar unsigned char#define uint unsigned intsbit key=P3^2;uchar code table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uint num,num1;void delayms(uint n){uint i,j;for(i=n;i>0;i--)for(j=110;j>0;j--);}void display(uint num){uchar shi,ge;shi=num/10;ge=num%10;P2=0x00;P0=table[shi];delayms(5);P2=0x01;P0=table[ge];delayms(5);}void init(){TMOD=0x01;IE=0x83;TH0=(65536-45892)/256; TL0=(65536-45892)%256; IT0=0;}void main(){init();while(1){display(num);}}void I0_wai() interrupt 0 {uint num2;delayms(10);if(key==0){EX0=0;TR0=1;num2++;while(!key);}if(num2==1){TR0=1;}if(num2==2){TR0=0;}if(num2==3){TR0=1;num=0;num2=1;}EX0=1;}void T0_time() interrupt 1 {TH0=(65536-45892)/256; TL0=(65536-45892)%256; num1++;if(num1==20){num1=0;num++;if(num==100){num=0;}}}。
99秒倒计时 说明

(一)99秒倒计时计数器一、设计思路:上电显示99,当发出计时信号开始倒计时,直到0结束计时。
二、设计目的:1.了解单片机最小系统的设计和工作原理2.掌握数码管显示原理3.掌握基本的单片机控制思想及C语言单片机的编程思想三、工作原理说明:因为是99秒倒计时,运用单片机的定时器0来精确地定时,并通过单片机的控制在数码管上循环显示,并附加功能为上电为99,当按下按钮开关为发送的开始计时信号,即按下开关开始倒计时,直到0为止。
四、硬件:单片机、两位一体数码管、排阻、锁存器等五、程序设计:#include <reg51.h>#define uint unsigned int#define uchar unsigned charuchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar shi,ge,aa,temp;uchar code table1[]={0x04,0x02};sbit D=P3^0;sbit D1=P1^1;sbit D2=P1^2;sbit D3=P0^0;sbit D4=P0^1;void inital(){ temp=99;D1=1;D2=1;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void delay(uint c){ int a,b;for(a=c;a>0;a--)for(b=110;b>0;b--);}void time0() interrupt 1{ TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;}void display(uchar shi,uchar ge){ P1=table1[1];P2=table[ge];delay(1);P1=table1[0];P2=table[shi];delay(1);}void main(){ inital();if(D==1){ D1=0;D2=0;display(9,9);}while(D==0){ if(D3==1){ shi=temp/10;ge=temp%10;display(shi,ge);}else{ shi=temp/10;ge=temp%10;display(shi,ge);if(aa==20){ aa=0;shi=temp/10;ge=temp%10;display(shi,ge);temp--;if(temp==0){TR0=0;}}}}六、软件仿真电路图不能实现在中间数字的停止,即该实验可扩展。
单片机0-99计数器 秒表报告

姓名班级指导老师时间信息工程学院图1 硬件电路连接图(二)显示电路两位数码管循环显示00~99电路数码管只要就是用于数字得显示.数码管有共阴与共阳得区分,单片机都可以进行驱动,但就是驱动得方法却不同。
两位数码管循环电路就是由电阻、二极管与数码管组成,电源+5V通过560得电阻直接给数码管得7个段位供电,P0、0—P0、7对应了两个接数码管得A,B,C,D,E,F,G与小数点位,P2、6接显示个位数得数码管得3、8引角,P2、7则接十位数得。
P2、6与P2、7端口分别控制数码管得十位与个位得供电,当相应得端口变成低电平时,驱动相应得三极管会导通,+5V通过二极管与驱动三极管给数码管相应得位供电,这时只要P0口送出数字得显示代码,数码管就能正常显示需要得数字。
图2 十位显示动态数码管(共阳数码管)图3 个位显示静态数码管(共阴数码管)(三)时钟电路时钟电路得晶振频率越高,系统得时钟频率越高,单片机得运行速度也越快。
晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中得电容应选择为30pF左右。
图4 时钟电路(四)复位电路MCS—51单片机得复位就是靠外部电路实现得。
MCS—51单片机工作之后,只要在她得RST引线上加载10ms以上得高点平,单片机就能有效地复位。
MCS-51单片机通常采用上电自动复位与按键复位两种方式。
最简单得复位电路如图5:图5 复位电路上电瞬间,RC电路充电,RST引线出现正脉冲,只要RST保持10ms以上得高电平,就能使单if(i++==100)//如果i=0{i=0;count++;P0=CODE[count/10];P2=~CODE[count%10];if(count==99)count=0; //如果到了99,则重新从0开始计数}}结果与分析(可以加页):(一)调试结果1.初始状态图7:初始状态结果图2.开始计时后按下按键暂停图8:中间状态图示(二)问题分析及解决措施1、一开始时没有分清楚数码管就是共阴数码管还就是共阳数码管,C语言程序中默认数码管就是共阴,所以两个P接口得值都就是按照共阴去写得,导致数码管选段及位显有问题,后来经过老师得指点,将共阳数码管P2得接口改成了共阴。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1设计背景单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
计时器广泛应用于实际生活当中,有倒计时器和计时器,我们本次设计为计时器。
计时器广泛应用于各种比赛当中用来计时,往往都精确到百分秒的精度,其次也应用于计时闹钟等。
生活中计时器比较常见,而设计计时器是很具有实际意义的。
2 硬件设计:2.1 99秒计时器的总体设计方案利用单片机的定时器设计一个秒计时器,其中设有一个按键,当第一次按下按键时,开始计时,第二次按下按键时,停止计时,送入P0和P2端口显示,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。
第三次按下按键时使定时器清零,等待下一次按键。
本设计中需要一个时钟电路,一个复位电路和一个控制电路来实现整个电路的运行,实现00到99的循环计时。
2.2 99秒计时器的组成及其原理图秒计时器由以下几个部件组成:单片机AT89C51、两个静态数码显示、一个按钮等其它组件。
该电路的工作原理:AT89C51从稳压电路中获得稳定的+5V电压,接到VCC 端,提供稳定的电压;P2、P0口通过电阻接到显示电路的七段数码管的 a b c d e f g 端口上,利用数码管显示数字;RST接复位电路,实现电路的复位;XTAL1、XTAL2接晶振电路;整个电路实现循环动态显示数字00~99.2.3 AT89C51简单介绍及引脚说明AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
AT89C51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时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编程和校验时接收高八位地址信号和控制信号。
本设计中采用P2口显示计时器的个位数字。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示: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:来自反向振荡器的输出。
振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.4复位电路、时钟电路及控制电路复位电路单片机的复位电路有上电自动复位和按键手动复位两种。
上电自动复位通过电容的放电实现。
在时钟电路工作后,在RST端给出两个周期的搞点评就可完成复位操作;上电加按键手动复位的工作方式,当复位键按下时,复位端通过小电阻与电源接通,电容迅速放电使RST引脚为高电平,当复位键弹起后,电源通过电阻重新给电容充电,使RST端出现复位正脉冲,实现复位,本电路采用上电自动复位时钟电路单片机的时钟方式有内部时钟方式和外部时钟方式,本电路采用内部时钟方式。
内部时钟电路利用芯片内部的振荡器,在XTAL1和XTAL2两端跨接晶振,构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路。
外界晶振时C1、C2都在30pF左右;C1、C2对频率都有微调作用,晶振的频率范围一般是1.2—12 MHz。
为了减小寄生电容,更好的保证振荡器稳定、可靠地工作,振荡器和电容应尽可能的与XTAL1和XTAL2靠近。
本设计时钟由12MHZ的晶振来组成振荡电路,来控制单片机对数码管的动态扫描。
按键电路图上图为本电路的按键(控制)电路,第一次按下按键,电平由高电平变为低电平,计时器从此刻开始计数;第二次按下按键时,电平由高电平变为低电平,计时器计时暂停,数码管显示暂停时的数字;第三次按下按键时,电平由高电平变为低电平,计时器复位,计时器数字变为00,当按键再次按下时重新开始计时。
2.5 数码管的显示方法与工作方式显示方法发光二极管显示器一般由若干个发光数码管组成,数码管的每一位数码段是一支发光二极管。
当发光二极管导通时,相应的一个点或一个笔划发光,控制发光二极管发光组合,可以显示出所需字符。
若一个数码管的若干只发光二极管的阳极连接在一起,通过阴极控制其显示,则构成共阳极结构;若将发光二极管阴极连接在一起,通过阳极控制其显示,则构成共阴极结构。
无论是共阴极数码还是共阳极数码,其显示字形中碼段的定义是一致的。
微机进行显示控制时,一般通过I/O口送出七段码。
显然即使送出的七段码相同,若I/O口线与数码管引脚连线不同,显示的字形也不相同。
在本设计中我们组采用了共阴极的显示方法。
工作方式根据控制原理不同,显示方式分为静态显示方式和动态显示方式。
若数码管显示为某一个字符时相应的发光二极管恒定的导通或截止,则该显示方式为静态显示方式。
静态显示方式时所有数码管同时点亮,字符显示期间加在数码管上的七段码不变,即每一个数码管对应一个8位I/O接口,所以占用的硬件资源较多。
动态显示则是轮流点亮各数码光即对显示器进行扫描。
任何时刻只给一个数码管通电,通电一定时间后再给下一个数码管通电。
只要刷新率足够高,动态显示方式同样可以实现稳定显示。
动态显示的最大优点是节约I/O口。
静态显示方式简单不容易出错,如果电路设计合适,也能够用较少的线完成多个数码管的显示。
但与动态显示相比,动态显示电路连接更简单,节省单片机I/O口,从而节省单片机的资源,如今已经有很多这样成熟的基于动态扫描的芯片,并且采用动态显示方式极大的节省单片机的资源,特别是在单片机的I/O 数量比较紧张的情况下,更能体现采用动态显示的优越性。
因此,在现在的多数电子系统中,数码管多数采用动态扫描技术来显示,本设计中我们采用的事动态显示方法。
2.6仿真电路图及电路连接数码管显示图系统硬件连接(1.把“单片机系统”区域中的P0.0/AD0-P0.6/AD6端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-e端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.6/AD6对应着e。
(2.把“单片机系统”区域中的P2.0/A8-P2.6/A14端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-e端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.6/A14对应着e。
(3.把“单片机系统“区域中的P3.7/RD用导线连接到”独立式键盘“区域中的SP1端口上;(4. 把三极管提供电压的蜂鸣器连接到按键电路上,当按键按下时,蜂鸣器响起,提示开始计时、暂停计时或者复位;(5 将8排阻按照顺序连接到数码显示管的电路中通过控制电阻的大小来控制a b c d f e g管的灭或者亮从而控制数码管显示的数字;(6 连接复位电路和时钟电路。
2.7利用PROTUES进行仿真电路图的连接利用工具栏中的PICK 利用关键字寻找所需要的仿真元器件。