单片机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得接口改成了共阴。
单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位
标准文档9创新实践实训报告学院信息电子技术学院专业电子信息工程班级14学籍号姓名指导教师蒋野2017年06月29日单片机控制秒表电路一、电路工作原理1.工作原理用STC89C52设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“暂停”键S2和一个“继续”键S3。
为使本设计系统更加完善,可以引入一个“复位”键S1,以方便对系统的控制。
如图。
本系统采用STC89C51单片机为中心器件,利用其定时器/计数器定时计数的原理,结合硬件电路如电源电路,晶振电路,复位电路和显示电路,以及一些按键电路等来设计计数器,将软硬件有机结合起来,其中软件系统采用汇编语言编写程序,包括显示程序,计数程序,中断,硬件系统利用Protues强大的功能来实现,简单易于观察,在仿真中就可以观察到实际的工作状态。
2.元器件作用(1)STC89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
(2)时钟电路作用是为电路提供唯一的时钟信号。
(3)复位电路外接一个开关,控制电路复位,接通电源电路直接复位,如果没有开关亦可将复位电路引出导线接电源后断开。
(4)本设计要求使用共阳极的数码管,如下是共阳极的数码管的0-9编码:0xc0,0x92,0x82,0xf8,0x80,0x90,0xf9,0xa4,0xb0,0x99.(5)控制电路:S2按下电路停止计时,S3按下电路恢复计时。
二、程序流程图主程序流程图三、检测安装与调试1.元件检测共阳极数码管检测管脚序号利用万用表二极管档红表笔接一个抵住两个管脚,利用另一个接触其他,找出1,2两个管脚,继续分别找出A,D,C,D,E,F,G,Dp管脚。
单片机0-99计数器秒表报告
〔ude<reg51、h〉
#defin
e uc har
#defin
sbit
K1=P3A7;
uchar i,count,keyflag;
bit keystate;
//头文件
Coun t=co un t+1
e uintunsignedin
unsigAed数码管显示为00J
按键识别成定义按键
uchar CODE[]={0x3lf,0x06,0x5b,0x4f,0去66,0x6d,Ox7d,0x07,0x7f,0x
3•把“单片机系统"区域中得P3、7/RD端口用导线连接到“独立式键盘"区域中得SP1端口上。
图2十位显示动态数码管(共阳数码管)
图3个位显示静态数码管(共阴数码管)
图1硬件电路连接图
(二)显示电路
两位数码管循环显示00〜99电路
数码管只要就是用于数字得显示•数码管有共阴与共阳得区分,单片机都可以进行驱动,但就 是驱动得方法却不同。两位数码管循环电路就是由电阻、二极管与数码管组成,电源+5V通过
课程设计报告
课程名称 单片机原理及应用课程设计
学 号
姓 名
班 级
指导老师
时 间
信息工程学院
设计题目:秒表得设计 设计内容、目得与要求:
1、 用单片机得定时/计数器实现一个秒表得应用•当按键S1按下时,秒表开始计时,并在 数码管上显示当前得计数知道“99”,然后从“00”开始重新计时,然后按键按下则停止计时, 第三次按下键则清除上一次得计时结果。
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口送出数字
基于单片机的99秒表设计
毫秒缓冲清零 秒值加1
秒显缓冲清零 分显示加1
分显示清零 现场恢复
Y Y
图3 中断程序流程图 五、仿真结果与结论 1、数字式秒表准备状态仿真的显示如图4所示
图4 准备计时状态 2、数字式秒表运行状态的仿真如图5所示
图5 计时器状态 结论:我们可以发现数字式秒表计数一段时间的我们的标 准时间相比较出现了误差,所设计的数字式秒表比我们的标准
会显示出字形,取决于单片机对位选通COM端电路的控制,所 以我们只要将需要显示的数码管的选通控制打开,该位就显示 出字形,没有选通的数码管就不会亮。通过分时轮流控制各个 数码管的的COM端,就使各个数码管轮流受控显示,这就是动 态驱动。动态显示是利用人眼视觉暂留特性来实现显示的。事 实上,显示器上任何时刻只有一个数码管有显示。由于各数码 管轮流显示的时间间隔短、节奏快,人的眼睛反应不过来,因 此看到的是连续显示的现象。为防止闪烁延时的时间在1ms左 右,不能太长,也不能太短。本设计可采用P1口直接驱动八段 数码管显示。此方案成本低,而且单片机的I/O口占用较少, 可以节约单片机接口资源,而且功耗更低。 三、硬件设计电路
ORG 00H SJMP MAIN ORG 0BH AJMP T0INT0 ORG 30H
MAIN: MOV SP, #60H MOV R4,#20 MOV TMOD,#01H MOV T H0,#03CH MOV TL0,#0B7H SETB ET0 SETB EA
附录 程序清单
;12M晶振时定时初值取#3CB7H
T0INT0: MOV TH0,#03CH ;定时中断子程序。重装定时常数 MOV TL0,#0B7H DJNZ R4,T0INTR ;50msX20=1S,未满20次,跳出中断子程序
基于单片机的00秒_99秒的秒表设计说明
课程设计题目:用单片机AT89C51设计一个2位的LED数码显示作为“秒表”专业: 12自动化(2)班学号: 3姓名:华指导教师:蜀阳日期: 2015年6月17日目录一、设计题目和要求:1二、设计目的:1三、设计容:2四、课程设计心得体会18五、参考文献18一、前言21世纪是一个电子技术和电子元件有更大发展的世纪。
回顾百年来电子技术和电子工业发展的成就,举世瞩目。
作为一个电气专业的大学生,我们不但要有扎实的基础知识、课本知识,还应该有较强的动手能力。
现实也要求我们既精通电子技术理论,更要掌握电子电路设计、实验研究和调试技术。
课程设计就是一个理论联系实际的机会。
本次设计主要完成具备基本功能的电子秒表的理论设计,电子秒表是重要的记时工具,广泛运用于各行各业中。
作为一种测量工具,电子秒表相对其它一般的记时工具具有便捷、准确、可比性高等优点,不仅可以提高精确度,而且可以大大减轻操作人员的负担,降低错误率。
在设计中应用到数码管,数码管主要用于楼体墙面,广告招牌、高档的DISCO、酒吧、夜总会、会所的门头广告牌等。
特别适合应用于广告牌背景、立交桥、河、湖护栏、建筑物轮廓等大型动感光带之中,可产生彩虹般绚丽的效果。
用护栏管装饰建筑物的轮廓,可以起到突出美彩亮化建筑物的效果。
事实证明,它已经成为照明产品中的一只奇葩,绽放在动感都市。
二、设计题目和要求:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
三、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术与外围芯片的工作原理与控制方法;3.进一步掌握单片机程序编写与程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理与使用方法。
串行通讯接口实验九十九秒计时器
串行通讯接口实验(2)一、实验目的1、采用串行方式一,实现两个单片机采用点对点通讯的功能;2、0-99秒计时器设计;二、基本实验实现功能及参考电路◆两个单片机采用点对点通讯;通信方式选方式1:十位异步收发通信;◆单片机工作晶振频率为11.0592MHz,串行通信波特率为2400b/s 。
◆发送机发送数字0-9;接收机接收到数据后将数据回传给发送机;并将接收数据在本机P1口显示;◆发送机将接收到数据与已经发送数据比较,如果两个数据相等,则确认接收数据正确,并将发送数据通过P1口显示;如果比较后确认数据不等,则在P1口显示数字E。
图1 基本实验实现功能及参考电路图三、应用单片机定时器实现秒表计时功能◆设计定时器,每隔一秒的时间,计时器自动加一,计时器个位满十向十位进位,累计计时99秒即清0重新计数。
计时过程中,能够响应外部按键命令,实现计时器清零、暂停功能。
图2 99秒计时器设计电路四、实验过程(一)、基本实验实现功能1,实验原理部分:采用串行方式一,实现功能——两个单片机采用点对点通讯,采用十位异步收发的通信方式;单片机工作晶振频率为11.0592MHz,串行通信波特率为2400b/s 。
2,实验仿真效果图及实验电路分析:实验电路分析:发送机发送数字0-9;接收机接收到数据后将数据回传给发送机;并将接收数据在本机P1口显示;发送机将接收到数据与已经发送数据比较,如果两个数据相等,则确认接收数据正确,并将发送数据通过P1口显示;如果比较后确认数据不等,则在P1口显示数字E。
3,实验程序及关键语句注释:发送部分程序:#include<reg51.h>#define uchar unsigned char#define uint unsigned intmain(){uchar m=0;uchar dat[10]={1,2,3,4,5,6,7,8,9,0};uchar k=0;uint j=0;TMOD=0x20;%T1设为定时模式2TL1=0xF4; %定时初值TH1=0xF4; %重置的定时初值PCON=0x00; %设置波特率SCON=0x50; %设置为方式一发送数据TR1=1; %启动T1while(1){SBUF=dat[m]; %通过串行口发送显示码do{}while(! TI); %等待发送完成TI=0;do{}while(! RI); %等待回答RI=0;k=SBUF;if(k==dat[m]) %若返回值相同,则显示已发送{P1=dat[m];m++;if(m==10)m=0;}else P1=0x0e; %否则显示Efor(j=0;j<12500;j++);}}接收部分程序#include<reg51.h>#define uchar unsigned char#define uint unsigned intmain(){uchar m=0;uchar k=0;uint j=0;TMOD=0x20;%T1设为定时模式2TL1=0xF4; %定时初值TH1=0xF4; %重置的定时初值PCON=0x00; %设置波特率SCON=0x50; %设置为方式一接收数据TR1=1; %启动T1while(1){do{}while(! RI); %等待接收完成RI=0;k=SBUF;P1=k;SBUF=k; %返回结果do{}while(!TI); %等待发送完成TI=0;for(j=0;j<12500;j++); %延时}}4,实验调试分析:调试中遇到的问题及解决方法。
单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位
(4)复查电路:重新检测电路,利用万用表电流档,检测电路电流,发现电路无电流,检查40引脚VCC,发现单片机40引脚与插座短路,接触不良导致,陆续检查其他引脚。发现还有部分引脚短路。
(5)继续检查电路,直至数码管显示数字为止。
结果显示,秒表运行正常。按照预期实现了99s计时、暂停以及继续的功能。
附件
1.利用单片机完成一定的任务,你的创意(创新)是什么?
我的创意就是电路的布局,实验操作起来与仿真不同,需要注意很多细节,例如原件检测。我的电路布局既节省空间,又不影响电路结构。
2.程序
#include<reg52.h>
sbit W=P1^4;
sbit H=P1^6;
unsigned char msec,sec;
void delay(unsigned char i)
{
unsigned int j,k;
for(k=0;k<i;k++)
for(j=0;j<255;j++);
}
void To_INT(void) interrupt 1
2.元器件作用
(1)STC89C52单片机在电子行业中有着广泛的应用。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
9
创新实践实训报告
学院
信息电子技术学院
专业
电子信息工程
99倒计时课程设计
实用文档目录1引言 (1)2 整体设计方案 (2)3各单元的介绍 (3)3.1 最小应用系统 (3)3.1.1 AT89C51的介绍 (3)3.1.2时钟电路的介绍 (5)3.1.3复位电路 (7)3.2 锁存器74LS273的介绍 (8)3.3 数码管显示介绍 (9)4 99倒计时主电路图 (10)5 程序流程图 (12)6 99倒计时软件程序设计 (13)7 总结 (15)8 谢辞 (16)9 参考文献 (17)1引言目前单片机的应用越来越广泛,实际上,单片机得几乎在人类生活的各个领域都表现出强大的什么生命力,使计算机的应用范围达到了前所未有的广度和深度。
单片机的出现尤其对电路工作者产生了观念上的冲击。
在过去经常采用模拟电路、数字电路诗实现的电路系统,现在相当大一部分可以用单片机予以实现,传统的电路设计方法已演变成软件和硬件相结合的设计方,而且许多电路设计问题将转化为纯粹的程序设计问题。
INTEL公司从其生产单片机开始发展到现在,大体上可分为3大系列:MCS-48系列、MCS-51系列和MCS-96系列。
MCS-51系列是8为高档单片机系列,也是我国目前应用最为广泛的一种单片机系列。
单片机是把CPU、内存储器和某些I/O接口电路集成在一块大规模芯片上的微型计算机。
单片机的优点很多,具有体积小,成本低,抗干扰能力强,面向控制,可以实现分机各分布控制等。
在进行99倒计时的课程设计中就是利用单片机的上述优点,采用的是AT89C51型号的单片机。
99秒倒计时器主要是用在精确时间上。
它是通过一个按键来控制它的开和停,在控制过程中有一个暂停开关和一个复位按钮,它能及时有效的记录瞬间时间,它在我们的生活中的应用很广泛。
2 整体设计方案根据课程设计内容,基于MCS-51单片机,设计两位八段LED做99秒钟的倒计时。
秒表倒计时能够上电复位,复位后系统初始化,八段LED显示为00。
因此,硬件连接设计主要包括时钟电路,复位电路,89C51基本工作电路,接口电路,八段LED共阴极电路等等。
00-99秒倒计时器程序及仿真
题目一:秒计时器功能要求:1.系统上电,数码管显示“99”.2.每隔1秒,数码管显示减1,减小到“00”后,数码管显示“00”,同时继电器开启。
3.按键的定义如下:“暂停/开始”按键S13:当S13按下时,秒表计时停止,数码管显示当前数值,再次按下时恢复计时。
“设置”按键S14:当停止计时时,按下S14键,可以设置秒数。
按键S1-S10分别对应数字0-9,先输入数字为十位数,后输入数字为个位数,若输入数字大于99,数码管显示“99”。
设置结束后,按下S13键启动计时。
“重新开始”按键S15:当S15按下时,数码管显示为“99”,秒表从新开始计时。
#include<reg51.h>#include<intrins.h>unsigned char code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char code jp[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};unsigned char a[2]={0,0};unsigned char int_time;unsigned char second=99;unsigned char c;bit zt;bit sz;unsigned char count;unsigned char y;unsigned char x;unsigned char count2;//函数功能:数码管动态扫描延时void delay(unsigned char s){unsigned char i,j;for(i=0;i<s;i++)for(j=0;j<125;j++);}//数码管显示子程序void DisplaySecond(unsigned char k){P2=0xfe;P0=Tab[k/10];delay(1);P2=0xfd;P0=Tab[k%10];delay(1);}//扫描键盘的值void sm(void){ unsigned char k,j,n,a,m;m=0xfe;P1=0xf0;k=P1;k=k&0xf0;if(k!=0xf0){ delay(5);if(k!=0xf0){for(j=0;j<4;j++){ P1=m;n=P1;for(a=0;a<16;a++){if(jp[a]==n)c=a; //键值保存在C中while(P1==jp[a]);}m=_crol_(m,1);}}}}//按键void aj(void){if(P1!=0xf0){if(c==12) //按下暂停/开始键{count++;if(count==1){TR0=0;zt=1;}if(count==2){TR0=1;count=0;}}if(c==13){if(zt==1){second=00;sz=1;count2=0;}}if(c<10){if(sz==1){count2++;if(count2==1){a[0]=c;second=a[0]*10+a[1];}if(count2==2){a[1]=c;second=a[0]*10+a[1];}}}if(c==14){second=99;}}P1=0xf0;}//主函数void main(void){TMOD=0x01;TH0=(65536-46083)/256; TL0=(65536-46083)%256; EA=1;ET0=1;while(1){DisplaySecond(second);sm();aj();}}//函数功能:定时器0的中断服务子程序void interserve(void)interrupt 1 using 1 {int_time ++;if(int_time==20){int_time=0;second--;if(second==-1){second=00;P2=0x7f;delay(5);}}TH0=(65536-46083)/256;TL0=(65536-46083)%256;}。
- 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 利用关键字寻找所需要的仿真元器件。