0~99秒表汇编程序
单片机课程设计-99S秒表
单片机课程设计说明书学院:专业:班级:指导老师:姓名:学号:2012年6月【摘要】:随着电子技术的发展,电子技术在各个领域的运用也越来越广泛,人对它的认识也逐步加深。
秒表计时器秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。
其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。
本设计就是利用所学到的电子元器件将脉冲源用数码管显示出来,以制做简易的秒表。
[关键词]机械计时器启/停开关数码管显示简易目录1.设计任务 (4)2.设计题目 (4)3. 功能分析 (4)4. 总体设计 (4)4.1硬件设计4.1.189C51单片机 (4)4.1.2晶体振荡电路 (5)4.1.3按键电路 (6)4.1.4显示电路 (6)4.2引脚控制 (6)5. 电路原理图 (8)6. 程序设计 (9)7. 程序仿真 (11)8. 实物制作 (11)8.1所需元件 (11)8.2所需工具 (11)8.3焊接 (11)8.4烧录程序并运行 (12)9.心得体会 (12)10.参考文献 (12)单片机原理及应用课程设计说明书1、设计任务以单片机为核心,设计一个0-99S秒表,按键时具有计时功能。
2、设计题目定时器控制8段2位数码LED显示秒表3、功能分析采用2个LED数码管显示时间,计时范围设置为0~99.秒,即精确到1秒,用按键控制秒表的“开始”、“暂停”。
按开关按键,开始计时;再按开关按键,系统暂停计时;4、总体设计本实验利用单片机的定时器/计数器定时和计数的原理,通过采用Proteus仿真软件来模拟实现。
模拟AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计时的开启、暂停、继续。
其中有两个数码管来显示数据,两个数码管显示秒(两位)。
4.1硬件设计4.1.1 89C51单片机MCS-51系列单片机是8位单片机产品,89C51是其中的典型代表,基本模块包括以下几个部分:(1)CPU:89C51的CPU是8位的,另外89C51内部有1个位处理器(2)R0M:4KB的片内程序存储器,存放开发调试完成的应用程序(3)RAM:256B的片内数据存储器,容量小,但作用大(4)I/O口:P0-P3,共4个口32条双向且可位寻址的I/O口线(5)中断系统:共5个中断源,3个内部中断,2个外部中断(6)定时器/计数器:2个16位的可编程定时器/计数器(7)通用串行口:全双工通用异步接收器/发送器(8)振荡器:89C51的外接晶振与内部时钟振荡器为CPU提供时钟信号(9)总线控制:89C51对外提供若干控制总线,便于系统扩展89C51的引脚如下图:89C51单片机引脚图4.1.2晶体振荡电路89C51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相振荡器的输出,该反相放大器可以配置为片内振荡器。
基于单片机的00秒-99秒的秒表设计
工程技术学院课程设计题目:用单片机AT89C51设计一个2位的LED数码显示作为“秒表”专业:电气工程及其自动化年级: 2009级学号: 20091447 20091414 20091444 姓名:付忠林梁宗林李座指导教师: 杨彦鑫日期: 2012年12月12日云南农业大学工程技术学院目录一、设计题目和要求:................................................................................... 错误!未定义书签。
二、设计目的:ﻩ错误!未定义书签。
三、设计内容:ﻩ错误!未定义书签。
四、课程设计心得体会ﻩ错误!未定义书签。
五、参考文献ﻩ错误!未定义书签。
六、课程设计指导教师评审标准及成绩评定............................................... 错误!未定义书签。
附件1:秒表原理图(实际接线图)............................................................ 错误!未定义书签。
附件2:仿真图1ﻩ错误!未定义书签。
附件3:仿真图2ﻩ错误!未定义书签。
一、设计题目和要求:题目三:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
任务安排:李座负责绘制电路原理图;梁宗林负责收集资料及电子版整理;付忠林负责程序和仿真。
二、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理及使用方法。
0-99S的秒表计时器程序与调试
设计要求:1.设计一个秒表/计时器系统,显示时间为00.00~99.99秒,个位每秒自动加一。
2.设计一个按键,一上电数码管显示四个0,按一下按键秒表开始计时,按第二下秒表停止计时,保持数码管显示的值,按第三下秒表归零。
一.程序代码#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit SB0=P3^0;sbit SB1=P3^1;sbit SB2=P3^2;uchar codesmgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x80};uchar Xian[]={10,10,10,10,10,10,10,10,};uint Time=0;bit ST=0;void delayms(uint x){ uchar i;while(x--)for(i=0;i<125;i++);}void main(){TMOD=0x11;TH0=(65536-2000)>>8;TL0=(65536-2000)&0xff;TH1=(65536-10000)>>8;TL1=(65536-10000)&0xff;TR1=1;ET1=1;TR0=1;ET0=1;EA=1;while(1){if(SB0==0){ST=1;}if(SB1==0){ST=0;}if(SB2==0){ ST=0;Time=0;}}}void ET_1() interrupt 1 {static uchar j=0;static uchar i=7;TH0=(65536-2000)>>8;TL0=(65536-2000)&0xff;P0=0x00;P2=j<<2|0x03;P0=smgduan[Xian[i]];j++;i--;if(j==8){j=0;i=7;}}void ET_3() interrupt 3{TH1=(65536-10000)>>8;TL1=(65536-10000)&0xff;if(ST){Time++;if(Time==9999){ST=0;}}Xian[0]=Time/1000;Xian[1]=Time/100%10;Xian[2]=11;Xian[3]=Time/10%10;Xian[4]=Time%10;}二.仿真调试图1.原理图2.调试图。
单片机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口送出数字
单片机之秒表汇编程序
单片机之秒表汇编程序此程序上电后开始显示并不正常,过一会才正常,按键似乎并没有用,希望能明白怎么回事频率12mhz ,从零开始计到99 秒,原理为先通过十六进制和十进制的转换后使用变址寻址把数据显示出来,十位和各位共延时4 毫秒,如果有按键按下计数从零开始DIZHI EQU 21H ;用于中间的数据传送COUNT EQU 22H ;用于计数器的自加ORG 0000HJMP STARTORG 0030HTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳极代码START: CLR COUNTWORK1: CALL DISPY ;十六进制的转换,输出代码显示INC COUNTJNB P2.0 , FUYUAN ;s4 按下从零开始计数MOV A ,COUNTCJNE A ,#100 ,WORK2CLR COUNTCALL STARTWORK2: LJMP WORK1DISPY: MOV A ,COUNTMOV B ,#10DIV ABMOV R1 ,#250 ;寄存器计数250 次,一次4 毫秒MOV DIZHI ,ADISP: MOV A ,DIZHI ;数据的中间交换MOV DPTR ,#TABMOVC A ,@ A+DPTR;变址寻址MOV P0 ,A ;P0 为段选CLR P2.5 ;P2 位选,显示十位CALL DELSETB P2.5MOV A ,BMOVC A , @A+DPTRMOV P0 ,A ;显示个位CLR P2.4CALL DELSETB P2.4DJNZ R1 ,DISPRETFUYUAN:CALL DELMOV P0 ,#11111111BMOV P2 ,#11111111BLJMP START ;从零开始DEL: MOV R6 ,#4F1: MOV R7, #250 ;延时两个毫秒F2: DJNZ R7 ,F2DJNZ R6 ,F1RETENDtips:感谢大家的阅读,本文由我司收集整编。
数字钟流程图(汇编语言)
Mov hour,#0
Mov min,#0
Mov sec,#0
Mov xsstate,#0
Clr addflag
Clr decflag
Mov seccs,#0
Mov tmod,#01h
Mov th0,#03ch
Mov tl0,#0b0h
Setb tr0
Clr sectime
秒表流程图及相应的程序
(汇编语言版)
定义(资源分配):
显示的数据:
秒的高位、秒的低位、毫秒的高位、毫秒的低位。秒数据、毫秒数据定义。
数码管的段输入、位控制定义。
按键的定义、显示状态定义。
时间状态定义:
hour_h data 30h
hour_l data 31h
min_h data 32h
min_l data 33h
key1bit p3.2
key2 bit p3.3
key3 bit p3.4
addflag bit 20h
decfalg bit 21h
xsstate data 39h
secflagdata 3ah;定义50ms的次数
sectime bit 22h;定义1s到
主程
Org 0000h
Ajmp main
Cjnz a,60,shujuchuliend
Mov sec,#0
Inc min
Jnb decflag,anjianchuliend
Dec min
Clr decflag
Mov a,min
Cjnz a,255,anjianchuliend
Mov min,#59
Acall anjianchuliend
单片机控制秒表显示时间为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
创新实践实训报告
学院
信息电子技术学院
专业
电子信息工程
51单片机秒表程序-00-99秒
#include <reg52.h>#define uchar unsigned char //宏定义用uchar代替unsigned char#define uint unsigned intsbit START=P1^0; //开始、停止键低电平有效sbit RST=P1^1; //复位键sbit SMGGW=P1^2; //用三极管或驱动芯片驱动数码管高电平有效还是低电平有效由电路决定sbit SMGSW=P1^3;uchar tt;uint time; //此变量为时间uchar code table[]={ //此为数码管字模,对应0--90x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};void Delay(uint ms) //延时子函数{uint i,j;for(i=ms;i>0;i--)for(j=500;j>0;j--);}void Display() //显示子函数{uchar ge,shi;shi=time/10;ge=time%10;P0=table[ge];SMGGW=0;//用三极管或驱动芯片驱动数码管高电平有效还是低电平有效由电路决定本程序为低电平数码管亮SMGSW=1;Delay(2);P0=table[shi];SMGGW=1;SMGSW=0;Delay(2);}void main(){P1=0xff;EA=1;ET0=1;TMOD=0x01;TH0=0x4c; //晶振11.0592Mhz 若用12Mhz晶振则改为TH0=0x3c;Tl0=0xb0;TL0=0x00;while(1){if(START==0) //开始、停止{Delay(8);if(START==0){TR0=!TR0;while(!START) Display();}}if(RST==0) //复位{Delay(8);if(RST==0){time=0;while(!RST)Display();}}if(tt==20)tt=0;time++;if(time==99){time=0;}}Display();}}void timer0() interrupt 1{TH0=0x4c; //晶振11.0592Mhz 若用12Mhz晶振则改为TH0=0x3c;Tl0=0xb0;TL0=0x00;tt++;}Welcome To Download !!!欢迎您的下载,资料仅供参考!。
(完整word版)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;}。
51单片机秒表程序 00-99秒
{
uint i,j;
for(i=ms;i>0;i--)
for(j=500;j>0;j--);
}
void Display() //显示子函数
{
uchar ge,shi;
shi=time/10;
ge=time%10;
P0=table[ge];
SMGGW=0;//用三极管或驱动芯片驱动数码管高电平有效还是低电平有效由电路决定本程序为低电平数码管亮
sbit SMGSW=P1^3;
uchar tt;
uint time;//此变量为时间
uchar code table[]={//此为数码管字模,对应0--9
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x40};
void Delay(uint ms)//延时子函数
#include <reg52.h>
#define uchar unsigned char //宏定义用uchar代替unsigned char
#define uint unsigned int
sbit START=P1^0; //开始、停止键低电平有效
sbit RST=P1^1; //复位键
sbit SMGGW=P1^2;//用三极管或驱动芯片驱动数码管高电平有效还是低电平有效由电路决定
TL0=0x00;
TR0=0;
while(1)
{
if(START==0)//开始、停止
{
Delay(8);
if(START==0)
{
TR0=!TR0;
while(!START) Display();
用汇编语言编写的秒表计时器-参考模板
实验报告十课程名称:微机原理与接口技术指导老师:李素敏学生姓名:向春霞学号:1243013 专业:通信工程日期:6月地点:理工603实验九矩阵键盘检测一、实验目的和要求1.掌握利用单片机定时器实现定时。
2.熟悉单片机与数码管的接口技术及数码管动态显示的控制过程。
3.熟悉单片机与键盘的接口技术及按键识别过程。
4.学会如何编制含数码管显示,定时器中断及按键控制等多种功能的综合程序,体会大型程序的编制和调试技巧。
二、主要仪器设备电脑,Keil软件三、实验内容1、实验要求:要求其实现的功能如下(其中定时要求采取中断方式):(1)、用6位数码管显示秒表时间,最左边2位显示分,中间2位显示秒,最右边2位显示秒的小数位(0.00~0.99秒),秒与小数位之间要显示小数点。
(2)、两个按键:①计时/停止按键:首次按下从0开始计时,再次按下暂停计时,之后每次按下按键实现‘继续计时、暂停计时,继续计时、暂停计时……’。
(继续计时即从上次暂停时的时间开始继续计时)②复位按键:按下后全部清0,等待下次按下‘计时/停止按键’时重新开始计时。
2.设计思路:(1)、采用内部脉冲定时,实现计时,最低显示位为10ms记一次数显示一次,即0.00—0.99秒。
100个10ms是1秒,所以当低位计满100次,(当50H为10时,把50H单元清零,向51H进1)即得到秒计时,然后把51H单元清零,给52H 单元加1.当52H为10时,清零,给53H加1,当53H为6时秒计时达到60次,则向分计时,即给54H加1,再给53H清零,当54H计满10时,清零,给55H 加1,直到55H为6时给55H清零。
50H,51H放最低位计数52-53H放秒位次数54-55H放分位计数(2)、S2(p3.4)键,用扫描S2:当P3.4为低电平时,让TR0为0,即暂停计数。
当P3.4再次为低电平时继续计数,让TR0=1.(3)、S 3(p3.5)键,T1计数模式实现中断响应,复位按键S3:当F0为0时,给50-55H单元清零;然后按S2开始计数3.源程序:ORG 0000HAJMP MAINORG 000BHLJMP TIME ;定时ORG 001BHLJMP S3 ;暂停ORG 0030HMAIN:CLR AMOV 50H,A ;最低位次数MOV 51H,AMOV 52H,A ; 秒位次数MOV 53H,AMOV 54H,A ;分位计数MOV 55H,ADS1:MOV TMOD,#61H ;定时0模式1,计数1模式2MOV TH0,#0D8H ;初值定时10msMOV TL0,#0F0HMOV TH1,#0FFH ;初值,溢出中断MOV TL1,#0FFHSETB EASETB ET1SETB ET0SETB TR0SETB TR1XS: MOV R1,#50HMOV R2,#0DFHMOV R3,#2MOV R4,#4JNB P3.4,STOPAJMP NEXTSTOP:CPL TR0WAIT:JB P3.4,NEXTSJMP WAITNEXT:MOV A,@R1INC R1MOV DPTR,#DUANMOVC A,@A+DPTRSETB P2.6MOV P0,ACLR P2.6SETB P2.7MOV A,R2MOV P0,ACLR P2.7 ;位选置位MOV A,R2RR AMOV R2,ALCALL DELDJNZ R3,NEXT XSD: MOV DPTR,#XDUAN MOV A,@R1MOVC A,@A+DPTRSETB P2.6MOV P0,ACLR P2.6SETB P2.7MOV A,R2MOV P0,ACLR P2.7 ;位选置位MOV A,R2RR ALCALL DELAGA:MOV A,@R1INC R1MOV DPTR,#DUANMOVC A,@A+DPTRSETB P2.6MOV P0,ACLR P2.6SETB P2.7MOV A,R2MOV P0,ACLR P2.7 ;位选置位MOV A,R2RR AMOV R2,ALCALL DELDJNZ R4,AGALJMP XSTIME:MOV TH0,#0D8H ;定时中断MOV TL0,#0F0HINC 50HMOV A,50HCJNE A,#10,RETUNT ;50H满10给51H单元+1MOV 50H,#00HINC 51HMOV A,51HCJNE A,#10,RETUNT ;51H满10给52H单元+1MOV 51H,#00HINC 52HMOV A,52HCJNE A,#10,RETUNT ;52H满10给53H单元+1MOV 52H,#00HINC 53HMOV A,53HCJNE A,#6,RETUNT ;53H满10给54H单元+1MOV 53H,#00HINC 54HMOV A,54HCJNE A,#10,RETUNT ;54H满10给55H单元+1MOV 54H,#00HINC 55HMOV A,55HCJNE A,#6,RETUNTMOV 55H,#00HRETUNT:RETIS3: CLR TR0CLR AMOV 50H,A ;最低位次数MOV 51H,AMOV 52H,A ; 秒位次数MOV 53H,AMOV 54H,A ;分位计数MOV 55H,ARETIDEL:MOV R6,#2 ;延时1msDEL1:MOV R7,#248NOPDEL2:DJNZ R7,DEL2DJNZ R6,DEL1RETDUAN:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段选地址表XDUAN:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;带小数点的段码END---精心整理,希望对您有所帮助。
00~99单片机秒表课程设计 汇编语言
附件1:荆楚理工学院课程设计实施计划表学院:电子信息工程学院教研室主任:指导教师:年月日附件2:荆楚理工学院课程设计任务书设计题目:电子秒表系统教研室主任:指导教师:2014年 6 月 6 日附件3:荆楚理工学院课程设计成果学院: 电子信息工程学院班级: 2012级应用电子技术1班学生姓名: 宋选安学号:2012301050127设计地点(单位)D1302设计题目: 电子秒表系统完成日期:2014 年 6 月 6 日指导教师评语: _________________________________成绩(五级记分制):教师签名:目录1 摘要 (1)2 系统简介 (1)2.1 总体设计方案说明 (1)2.2 单片机系统组成方框图 (2)3 系统设计 (3)3.1 系统总体设计 (3)3.2 硬件电路设计 (4)3.3 软件设计 (5)4 实验结果与讨论 (7)5 结论 (8)6 参考文献 (8)7附录 (9)1.摘要本设计是设计一个单片机控制的秒表系统。
随着单片机的应用越来越广,在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅我所学的单片机方面的知识是不够的,还要根据具体的硬件结构,以及针对具体的应用对象的软件结合,加以完善。
秒表的出现,解决了传统的由于人为因素造成的误差和不平性。
将软,硬件有机结合起来,使得系统能实现两位LED,显示时间为00~99秒,每秒自动加1,可以开始,暂停,复位等功能;其中软件系统采用汇编语言编写程序,包括显示程序,加计数程序,中断,延时程序,按键消抖程序等,并在keil中调试运行,硬件系统利用Proteus强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
2.系统简介2.1 总体设计方案说明单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
单片机计时秒表程序设计
pic单片机计时秒表程序设计(时钟显示范围00.00~99.99秒,分辨度为0.01秒)作者:来源:本站原创点击数:1676 更新时间:2008年07月12日//此程序实现计时秒表功能,时钟显示范围00.00~99.99秒,分辨度:0.01秒#include "p18f458.h"unsigned char s[4]; //定义0.01 秒、0.1 秒、1秒、10秒计时器unsigned char k,data,sreg;unsigned int i;const table[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90};//不带小数点的显示段码表const table0[10]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};//带小数点的显示段码表void clkint(void);//TMR0初始化子程序void tmint(){T0CON=0XCF; //设定TMR0L工作于8位定时器方式//内部时钟,TMR0不用分频INTCON=0X20; //总中断禁止,TMR0中断允许,清除TMR0的中断标志INTCON2bits.TMR0IP=1; //TMR0中断高优先级RCONbits.IPEN=1; //使能中断优先级}//系统其它部分初始化子程序void initial(){TRISA=0x00; //A口设置为输出TRISB=0XF0; //RB1输出,RB4输入TRISC=0x00; //SDO引脚为输出,SCK引脚为输出TRISE=0x00; //E口设置为输出SSPCON1=0x30; //SSPEN=1;CKP=1,FOSC/4 SSPSTAT=0xC0; //时钟下降沿发送数据PIR1=0; //清除SSPIF标志data=0X00; //待显示的寄存器赋初值PORTBbits.RB1=0;PORTAbits.RA3=0;PORTE=0; //将K1,K2,K3,K4四条列线置0}//SPI传输数据子程序void SPILED(char data){SSPBUF=data; //启动发送do{;}while(PIR1bits.SSPIF==0);PIR1bits.SSPIF=0;}//显示子程序,显示4位数void dispaly(){PORTAbits.RA5=0; //准备锁存for(k=0;k<4;k++){data=s[k];if(k==2) data=table0[data]; //个位需要显示小数点else data=table[data];SPILED(data); //发送显示段码}for(k=0;k<4;k++){data=0xFF;SPILED(data); //连续发送4个DARK,使显示好看一些}PORTAbits.RA5=1; //最后给锁存信号,代表显示任务完成}//软件延时子程序void DELAY(){for(i = 3553; --i ;)continue;}//键扫描子程序void KEYSCAN(){while(1){dispaly(); //调用一次显示子程序while(PORTBbits.RB4==0){DELAY(); //若有键按下,则软件延时break;}if (PORTBbits.RB4==0) break; //若还有键按下,则终止循环扫描,返回}}//等键松开子程序void keyrelax(){while(1){dispaly(); //调用一次显示子程序if (PORTBbits.RB4==1) break; //为防止按键过于灵敏,每次等键松开才返回}}/*高优先级中断向量*/#pragma code InterruptVectorHigh=0x08void InterruptVectorHigh (void){_asmgoto clkint //跳到中断程序_endasm}//中断服务程序#pragma code#pragma interrupt clkintvoid clkint(){TMR0=0X13; //对TMR0写入一个调整值。
汇编语言00~99秒表设计报告
00~99秒表设计报告一、设计题目和要求:题目三:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
二、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理及使用方法。
6.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
7.该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。
三、系统总体设计框图四、器件介绍1.AT89C51AT89C51单片机的主要工作特性:·内含4KB的FLASH存储器,擦写次数1000次;·内含28字节的RAM;·具有32根可编程I/O线;·具有2个16位可编程定时器;·具有6个中断源、5个中断矢量、2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有一个数据指针DPTR;·两种低功耗工作模式,即空闲模式和掉电模式;·具有可编程的3级程序锁定定位;2.共阳极7段数码管LED数码管根据LED的接法不同分为共阴和共阳两类,图1是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。