数码管显示的简易秒表

合集下载

制作一个LED数码管显示的秒表

制作一个LED数码管显示的秒表

计算机科学与工程系实验报告实验题目:制作一个LED数码管显示的秒表班级:姓名:学号:日期:一、实验目的掌握单片机使用定时计数器控制LED数码管的设计与软件编程二、实验要求1、用2位数码管显示计时时间,最小计时单位为“百毫秒”,计时范围0.1~9.9s;2、当第1次按下并松开计时功能键时,秒表开始计时并显示时间;3、第2次按下并松开计时功能键时,停止计时,计算两次按下计时功能键的时间,并在数码管上显示;4、第3次按下计时功能键,秒表清0,再按1次计时功能键,重新开始计时。

5、如果计时到9.9s时,将停止计时,按下计时功能键,秒表清零,再按下重新开始计时。

三、实验要求提交的实验报告中应包括:电路原理图、实验设计思路、C51源程序(含注释语句)、运行效果(含运行截图与说明)、实验小结三、硬件电路原理图的设计四、编程思路及C51源程序编程思路:使用外中断服务处理程序处理按键,内部设计一个计数器,记录按键按下的次数,根据按键次数完成相应的功能。

用数码管显示计时时间,根据按键的次数以及其功能来显示数字。

#include<reg51.h> //包含8051单片机寄存器定义的头文件unsigned char code discode1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef} unsigned char code discode2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char timer=0; //记录中断次数unsigned char second; //存储秒数unsigned char key=0; //记录按键次数main() //主函数{TMOD=0x01; //定时器T0方式1定时ET0=1; // 允许定时器T0中断EA=1; // 总中断允许second=0; //设初始值P0=discode1[second/10]; //显示秒位P2=discode2[second%10]; //显示0.1S位while(1) //循环{if((P3&0x80)==0x00) //当按键被按下时{key++; //按键次数加一switch(key) //根据按键次数分三种情况{case 1: //第一次按下为启动秒表表示TH0=0xee; //TL0=0x00; //TR0=1; //break; //case 2: //按下两次暂停秒表TR0=0; //break; //case 3: //按下三次秒表清零key=0; //second=0; //P0=discode1[second/10]; //P2=discode2[second%10]; //break;}while((P3&0x80)==0x00); //如果按键时间过长在此循环}}}}void int_t0() interrupt 1 using 0 //定时器T0中断子程序{TR0=0; //停止计时,执行以下操作(计时出现误差)TH0=0xee; //向TH0写入初值的高8位TL0=0x00; //向TL0写入初值的低8位,定时5mstimer++; //记录中断次数if (timer==20) //中断20次,20*5ms=100ms=0.1s{timer=0; //中断次数清0second++; //加0.1sP0=discode1[second/10]; //根据计时时间,即时显示秒位P2=discode2[second%10]; //根据计时时间,即时显示0.1s位}if(second==99) //当计时到9.9s时{TR0=0; //停止计时second=0; //秒数清0key=2; //按键数置2,当再次按下按键时,key++,即key=3,秒表清0复原}else //计时不到9.9s时{TR0=1; //继续计时}}五、仿真运行效果展示1、第一次按键,秒表开始计时,并计时到9.92、2次按键,停止计时,将计时的时间值送到数码管显示3、第3次按下计时功能键,秒表清零六、实验小结在实验的过程中,出现过几次错误,自己对理论知识了解的还不够透彻,所幸,通过自己思考解决了。

秒表-八位数码管显示

秒表-八位数码管显示

秒表-八位数码管显示1;************************************************************************** 2; 标题: 秒表-八位数码管显示(汇编)3; 作者: wentao 4; 5; 日期: 2007.3.36; 软件: Keil A51 V8.007; 芯片: AT89X518; 说明: 实验板实测通过,数码管为8位共阳9; 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!10;************************************************************************** 1112dot_l equ 30h ;30单元存储百分之一秒值13dot_h equ 31h ;31单元存储十分之一秒值14sec_l equ 32h ;32单元存储秒个位值15sec_h equ 33h ;33单元存储秒十位值16min_l equ 34h ;34单元存储分个位值17min_h equ 35h ;35单元存储分十位值18hou_l equ 36h ;36单元存储时个位值19hou_h equ 37h ;37单元存储时十位值2021dot equ 38h ;38单元为百分之一秒计数器(0.00s-0.99s)22sec equ 39h ;39单元为秒计数器(00s-59s)23min equ 40h ;40单元为分计数器(00m-59m)24hou equ 41h ;41单元为时计数器(00h-00h)2526dis_b equ 42h ;dis_b(42单元)作为位码选通数码管27dis_r equ 43h ;dis_r(43单元)为取段码时的偏移量2829key_t equ 44h ;44单元为键按下的次数标记3031K bit p1.4 ;K键与P1.4相连3233 org 0000h34 ajmp start35 org 000bh ;定时器0的中断入口地址36 ajmp time0 ;跳到定时器0的中断服务程序处37 org 001bh ;定时器1的中断入口地址38 ajmp time1 ;跳到定时器1的中断服务程序处39 org 0030h40start:41 mov p2,#0xff ;关所有数码管42 mov p1,#0xff ;p1为准双向口,作输入时先写14344 mov dis_b,#0x7f ;初始选通P2.7口数码管45 mov dis_r,#0 ;初始化偏移量为046 mov dot,#0 ;百分之一秒计数器清零47 mov sec,#0 ;秒计数清零48 mov min,#0 ;分计数清零49 mov hou,#0 ;时计数清零50 mov key_t,#0 ;键按下次数清零5152 mov tmod,#00010001b ;定时/计数器0、1工作于方式153 mov th0,#0xd8 ;预置定时常数55536(d8f0),产生10ms时基信号54 mov tl0,#0xf055 mov th1,#0xfc ;预置定时常数64536(fc18),产生1ms间隔用于动态显示56 mov tl1,#0x185758 setb ea ;开总中断59 setb et0 ;定时/计数器0允许中断60 setb et1 ;定时/计数器1允许中断61 clr tr0 ;关定时/计数器062 setb tr1 ;开定时/计数器16364lop:65 jb K,lop ;键(P1.4)未按下则返回66 lcall d_10ms ;延时10ms消抖67 jb K,lop ;是抖动则返回重新扫描68 jnb K,$ ;等待键松开69 lcall key_to ;调用键处理部分70 ajmp lop ;循环显示7172key_to: ;键处理子程序73 inc key_t ;键按下次数加174 mov a,key_t ;按下次数送入a75 cjne a,#1,key_2 ;不是1次继续检测是否是第2次76 setb tr0 ;第1次按下启动定时器077 ret78key_2: cjne a,#2,key_3 ;也不是2次继续检测是否是第3次79 clr tr0 ;第2次按下关闭定时器080 ret81key_3: cjne a,#3,back ;也不为3则结束82 mov dot,#0 ;第3次按下将四个计数器清零83 mov sec,#084 mov min,#085 mov hou,#086 mov key_t,#0 ;按键次数清零87back: ret88;--------------------------------------------------------------------------------89time0: ;定时器0中断服务程序90 push psw ;保护现场91 push acc9293 inc dot ;百分之一秒计数器加194 mov a,dot ;计数器值送入a95 cjne a,#100,over ;未计到100则返回继续计数96 mov dot,#0 ;计到100后清零97 inc sec ;秒计数器加1(进位10ms*100=1s)98 mov a,sec ;秒计数值送入a99 cjne a,#60,over ;未计到60则返回继续计数100 mov sec,#0 ;计到60后秒计数器清零101 inc min ;分计数器加1(进位60s=1m)102 mov a,min ;分计数值送入a103 cjne a,#60,over ;未计到60则返回继续计数104 mov min,#0 ;计到60后分计数器清零,重新计时105 inc hou ;时计数器加1(进位60m=1h)106 mov a,hou ;时计数器送入a107 cjne a,#100,over ;未计到100则返回继续计数108 mov hou,#0 ;计到100后清零109110over: mov th0,#0xd8 ;重置定时常数111 mov tl0,#0xf0112 pop acc ;恢复现场113 pop psw114 reti ;中断返回115;--------------------------------------------------------------------------------116time1: ;定时器1中断服务程序117 push psw ;保护现场118 push acc119 push b120 ;以下是百分之一秒计数器值个位十位分开121 mov a,dot ;百分之一秒计数器值送入a(被除数)122 mov b,#10 ;除数10送入b123 div ab ;a除以b124 mov dot_l,b ;余数b(百分之一秒值)送入百分之一秒存储单元125 mov dot_h,a ;商a(十分之一秒值)送入十分之一秒存储单元126 ;以下是秒计数器值个位十位分开127 mov a,sec ;秒计数器值送入a(被除数)128 mov b,#10 ;除数10送入b129 div ab130 mov sec_l,b ;余数b(秒个位值)送入秒个位存储单元131 mov sec_h,a ;商a(秒十位值)送入秒十位存储单元132 ;以下是分计数器值个位十位分开133 mov a,min ;分计数器值送入a(被除数)134 mov b,#10 ;除数10送入b135 div ab136 mov min_l,b ;余数b(分个位值)送入分个位存储单元137 mov min_h,a ;商a(分十位值)送入分十位存储单元138 ;以下是时计数器值个位十位分开139 mov a,hou ;时计数器值送入a(被除数)140 mov b,#10 ;除数10送入b141 div ab142 mov hou_l,b ;余数b(小时个位值)送入时个位存储单元143 mov hou_h,a ;商a(小时十位值)送入时十位存储单元144145 mov dptr,#table ;数码管段码表首址送入dptr146147 mov a,#dot_l ;取百分之一秒值的地址148 add a,dis_r ;基址+偏移量149 mov r0,a ;R0为欲显示值的地址150 mov a,@r0 ;取欲显示值送入a151 ; dis_r : 0 1 2 3 4 5 6 7152 ;对应单元: dot_l dot_h sec_l sec_h min_l min_h hou_l hou_h153 movc a,@a+dptr ;取对应值的段码154 mov p2,dis_b ;位码送入P2口155156 mov r0,dis_b ;取位码判断是否为需加小数点的位[liuwentao]157 cjne r0,#0xdf,b3 ;不是P2.5再判断是否为P2.3158 ajmp add_dot ;是P2.5则段码加上小数点显示159b3: cjne r0,#0xf7,b1 ;也不是P2.3再判断是否为P2.1160 ajmp add_dot ;是P2.3则段码加上小数点显示161b1: cjne r0,#0xfd,com ;也不是P2.1则正常送段码162163add_dot: anl a,#0x7f ;是P2.5,P2.3,P2.1则段码和7f做与操作使对应位显示小数点164com: mov p0,a ;段码送入P0口165166 inc dis_r ;偏移量加1,下次中断时显示下个数167 anl dis_r,#0x07 ;dis_r增到8时自动清0(使之在0到7间循环)168169 mov a,dis_b ;位码循环右移,下次中断时选通下个数码管170 rr a171 mov dis_b,a172173 mov th1,#0xfc ;重置定时常数174 mov tl1,#0x18175176 pop b177 pop acc ;恢复现场178 pop psw179 reti180181d_10ms: mov r5,#20 ;1+(1+2*255)*20+2*20=10.261ms@12M182temp1: mov r6,#255 ;1+2*255183 djnz r6,$184 djnz r5,temp1185 ret186187table: db 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf ;段码表188 ; 0 1 2 3 4 5 6 7 8 9 - 对应内容189190end191/************************************************************************** 192* 标题: 八位数码管显示(C51)193* 作者: wentao 194 195* 日期: 2007.3.3196* 软件: Keil C51 V8.02197* 芯片: AT89X51198* 说明: 实验板实测通过,数码管为8位共阳199* 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!200**************************************************************************/ 201202#include <reg51.h>203#include <intrins.h>204#define uchar unsigned char205206void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255207void key_scan(); // 按键扫描208void key_to(); // 按键处理209210uchar code dis_code[11] = {0xc0,0xf9,0xa4,0xb0,0x99, //段码表211 // 0 1 2 3 4 对应内容212 0x92,0x82,0xf8,0x80,0x90,0xbf};213 // 5 6 7 8 9 -214215uchar data dis[8]; // dis[0]为百分之一秒值,dis[1]为十分之一秒值216 // dis[2]为秒个位值,dis[3]为秒十位值217 // dis[4]为分个位值,dis[5]为分十位值218 // dis[5]为时个位值,dis[6]为时十位值219220uchar data dot = 0; // 百分之一秒计数器(0.00s-0.99s)221uchar data sec = 0; // 秒计数器(00s-59s)222uchar data min = 0; // 分计数器(00m-59m)223uchar data hou = 0; // 时计数器(00h-99h)224225uchar data dis_b; // dis_b为位码选通数码管226uchar data dis_r; // dis_r为取段码时的偏移量227228uchar data key_t = 0; // 按键次数,初始为0229230sbit K = P1^4; // K键与P1.4相连231232void main()233{234 P2 = 0xff; // 关所有数码管235 P1 = 0xff; // p1为准双向口,作输入时先写1236 dis[2] = 10; // '-'在段码表中偏移量为10237 dis[5] = 10; // '-'在段码表中偏移量为10238 dis_b = 0x7f; // 初始选通P2.7口数码管239 dis_r = 0; // 初始化偏移量为0240241 TMOD = 0x11; // 定时/计数器0,1工作于方式1242 TH0 = 0xd8; // 预置定时常数55536(d8f0),产生10ms时基信号243 TL0 = 0xf0;244 TH1 = 0xfc; // 预置定时常数64536(fc18),产生1ms间隔用于动态显示245 TH1 = 0x18;246 EA = 1; // 开总中断247 ET0 = 1; // 定时/计数器0允许中断248 ET1 = 1; // 定时/计数器1允许中断249 TR0 = 0; // 关闭定时/计数器0250 TR1 = 1; // 启动定时/计数器1251 while(1)252 {253 if(K != 1) // 有键按下254 {255 delay_ms(10); // 延时10ms去抖256 if(K != 1) // 确定是有键按下257 {258 while(K != 1); // 等待键松开259 key_to(); // 按键处理260 }261 }262 }263}264void key_to() // 按键处理子程序265{266 key_t++; // 按键次数加1267 if(key_t == 1) // 第一次按下268 TR0 = 1; // 启动定时器0269 else270 {271 if(key_t == 2) // 第二次按下272 TR0 = 0; // 关闭定时器0273 else274 {275 if(key_t == 3) // 第三次按下276 {277 dot = 0; // 四个计数器清零278 sec = 0;279 min = 0;280 hou = 0;281 key_t = 0; // 按键次数清零282 }283 }284 }285286}287void tiem0(void) interrupt 1 // T/C0中断服务程序(产生10ms时基信号) 288{289 dot++; // 百分之一秒计数器加1290 if(dot == 100) // 计数值到100291 {292 dot = 0; // 清零293 sec++; // 秒计数器加1(进位10ms*100=1s)294 if(sec == 60) // 秒计数值到60295 {296 sec = 0; // 秒计数器清零297 min++; // 分计数器加1(进位60s=1m)298 if(min == 60) // 分计数到60299 {300 min = 0; // 分计数器清零301 hou++; // 时计数器加1(进位60m=1h)302 if(hou == 100) // 时计数器到100303 hou = 0; // 时计数器清零304 }305 }306 }307 TH0 = 0xd8; // 重置定时常数308 TL0 = 0xf0;309}310void time1(void) interrupt 3 // T/C1中断服务程序(延时1ms数码管动态显示) 311{312 uchar data t = 0; // 段码临时变量313314 dis[0] = dot % 10; // 百分之一秒计数器个位分离出来赋绐dis[0] 315 dis[1] = dot / 10; // 百分之一秒计数器十位分离出来赋绐dis[1] 316 dis[2] = sec % 10; // 秒计数器个位赋绐dis[2]317 dis[3] = sec / 10; // 秒计数器十位赋绐dis[3]318 dis[4] = min % 10; // 分计数器个位赋绐dis[4]319 dis[5] = min / 10; // 分计数器十位赋绐dis[5]320 dis[6] = hou % 10; // 时计数器个位赋绐dis[6]321 dis[7] = hou / 10; // 时计数器十位赋绐dis[7]322323 t = dis_code[dis[dis_r]]; // 取出段码放入临时变量t324325 // 判断位码如果为显示P2.5,P2.3,P2.1则对应段码应加上小数点显示326 // 和0x7f(01111111)做与操作使原段码加上小数点变为新段码327328 if(dis_b == 0xdf | dis_b == 0xf7 | dis_b == 0xfd)329 t &= 0x7f;330331 P2 = dis_b; // 位码送P2口332 P0 = t; // 段码送P0口333334 dis_r++; // 偏移量加1,下次中断时显示下个数335 dis_r &= 0x07; // dis_r增到8时自动清0(使之在0到7间循环) 336337 dis_b = _cror_(dis_b,1); // 位码循环右移,下次中断时选通下个数码管338339 TH1 = 0xfc; // 重置定时常数340 TL1 = 0x18;341342}343void delay_ms(uchar ms) // 延时毫秒@12M,ms最大值255344{345 uchar i;346 while(ms--)347 for(i = 0; i < 124; i++);348}广州珍珠岩,广州珍珠岩厂 Ce57uICIJeu8。

用LED数码管显示的秒表设计

用LED数码管显示的秒表设计

单片机课程设计说明书用LED 数码管显示的秒表设计专业 电气工程及其自动化学生姓名 刘宁班级 B 电气081学号 **********指导教师 张兰红完成日期2011年 6月 26 日目录1、概述 (2)2、课题方案设计 (2)2.1系统总体设计要求 (2)2.2系统模块结构论证 (2)3、系统硬件设计 (3)3.1总体设计 (3)3.2单片机运行的最小系统 (4)3.2.1 52单片机最小系统电路介绍 (4)3.2.2单片机的振荡电路与复位电路 (7)3.3数码管介绍 (8)3.4驱动电路 (9)4、软硬件联调及调试结果 (10)4.1软硬件调试中出现的问题及解决措施 (10)4.2实物图 (11)4.3调试结果 (13)5、结束语 (13)参考文献 (14)附录 (14)附录1:基于单片机的秒表设计原理图 (14)附录2:基于单片机的秒表设计PCB图 (15)附录3:PROTEUS仿真图 (16)附录4:基于单片机的秒表设计C语言程序清单 (17)附录5:基于单片机的秒表设计元器件目录表 (19)1、概述21世纪是一个电子技术和电子元件有更大发展的世纪。

回顾百年来电子技术和电子工业发展的成就,举世瞩目。

作为一个电气专业的大学生,我们不但要有扎实的基础知识、课本知识,还应该有较强的动手能力。

现实也要求我们既精通电子技术理论,更要掌握电子电路设计、实验研究和调试技术。

课程设计就是一个理论联系实际的机会。

本次设计主要完成具备基本功能的电子秒表的理论设计,电子秒表是重要的记时工具,广泛运用于各行各业中。

作为一种测量工具,电子秒表相对其它一般的记时工具具有便捷、准确、可比性高等优点,不仅可以提高精确度,而且可以大大减轻操作人员的负担,降低错误率。

在设计中应用到数码管,数码管主要用于楼体墙面,广告招牌、高档的DISCO、酒吧、夜总会、会所的门头广告牌等。

特别适合应用于广告牌背景、立交桥、河、湖护栏、建筑物轮廓等大型动感光带之中,可产生彩虹般绚丽的效果。

原创数码管动态显示时间(0-999秒倒计时)

原创数码管动态显示时间(0-999秒倒计时)

数码管动态显示时间(0-999秒倒计时)原理图:
控制部分
数码管时间显示,微动按键时间调整,工作手具转换,启动和复位程序。

1.待机:时间显示010秒.D6灯亮,此时ZHH,GZ无输出。

2.转换键:待机D5和D6状态可相互转换,开机常态体腔指示灯亮ZHH,GZ无输出。

按一下转换到D5状态,D5
指示灯亮ZHH输出,再按一下转换到D6状态,体腔指示灯亮ZHH无输出。

3.“加”“减”键:可调时间000-999秒,可快加和快减时间,每秒10个数变化。

慢加和慢减时间,每按一下变化1
个数。

4.复位键:工作和报警中可用,复位到设定状态。

5.手柄启动键:设定到D6状态时,按下启动键时间以设定时间倒计时工作,此时ZHH无输出GZ输出,治疗指
示灯D4亮时间减到000后,GZ断开报警5秒治疗指示灯闪烁,返回到设定状态。

设定到D5状态时,按下启动键时间以设定时间倒计时工作,此时ZHH,GZ输出,治疗指示灯亮时间减到000后,GZ断开报警5秒治疗指示灯闪烁。

工作中除复位键外其他键不能动作。

报警中可重复启动(设定状态)。

4位简易秒表的设计与制作

4位简易秒表的设计与制作

4位秒表的设计与制作一、任务要求该任务要求设计并制作一个4位秒表,秒表有启动、停止和清零功能,显示时间为0到9999秒。

该任务是综合应用数码管动态显示、单片机定时计数器和中断系统设计一个具有启动、停止、清零和校时功能的,能显示0到9999秒的4位秒表。

二、设计方案提示4位秒表的设计与1位秒表设计基本相似,所不同的是4位秒表要显示4位数据,而且要有校时功能,所以它只是综合了键盘、定时器、中断系统和动态显示的应用。

多位数显示器是用数码管显示4位十进制数,如果采用数码管静态显示方法,4个数码管要占用4个I/O端口,将占用单片机的所有I/O口而无法实现其他功能,因此不能用静态显示方法实现多位数据的显示。

如何用单片机控制数码管实现多位数据的现实,而又不占用太多的I/O口呢?这就要用到--------数码管的动态显示。

4位秒表设计与1位秒表的设计在原理上是一样的,不同的是:4位秒表要显示4位数,利用前面的数码管显示方法需要4个并行I/0口,而启动停止和清零要占用2个I/O线,89C52单片机只有4个并行I/O口,因此这种显示方法不能满足4位秒表的功能。

那么,如何实现4位秒表的设计呢?这就是该任务的关键------数码管动态显示技术三、系统硬件设计参考:4位秒表电路原理图如图3-21所示,有启动停止、清零和校时电路;数码管的位选端分别接P2口的P2.0~P2.3,段选端接P0口,74LS245是驱动电路。

图3-21 4位秒表电路原理图硬件电路设计图3-17 4位数据显示器的硬件原理图图3-17是4位数据显示器的硬件原理图,数码管是共阳连接,P2口输出显示段码,74LS245驱动数码管显示,CE是片选端,低电平有效;4位数码管的公共端分别由P3.0、P3.1、P3.2、P3.3控制。

四、系统软件设计参考程序//功能:4位数码管动态显示“1234”//函数名:delay50ms//函数功能:采用定时器1、工作方式1实现50ms延时,晶振频率12MHz//形式参数:无//返回值:无void delay50ms(){ TH1=0x3c; // 置定时器初值TL1=0xb0;TR1=1; // 启动定时器1while(!TF1); // 查询计数是否溢出,即定时到,TF1=1TF1=0; // 50ms定时时间到,将定时器溢出标志位TF1清零}void main() //主函数{unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92}; //设置数字0~5字型码unsigned char i,w;TMOD=0x10; //设置定时器1工作方式1while(1) {w=0x01; //位选码初值为01Hfor(i=0;i<4;i++){P2=~w; //位选码取反后送位控制口P2口w<<=1; //位选码左移一位,选中下一位LEDP1=led[i]; //显示字型码送P1口delay50ms(); //延时50ms}}}4位秒表流程图如图3-22所示:包括主函数流程、定时器中断函数和显示函数流程图。

单片机简易秒表正计时时间可设置

单片机简易秒表正计时时间可设置

单片机简易秒表正计时时间可设置秒表是一种用来测量时间流逝的仪器,广泛应用于体育比赛、科学实验和日常生活中。

在现代科技的推动下,秒表的功能和精准度都得到了极大提升。

本文将介绍一种单片机实现的简易秒表,能够进行正计时,并可设置计时时间。

用于实现秒表功能的单片机芯片有很多种,通常选择计时和定时功能强大的单片机,如STC89C52、AT89C51等。

这些单片机具有丰富的外设和强大的计时能力,非常适合实现秒表功能。

在开始设计之前,我们需要明确几个关键的功能要求。

首先是正计时功能,我们需要编写程序来实现从0开始的计时。

其次是计时时间可设置,即用户可以设置计时的起始时间和结束时间。

最后是计时的精确度,单片机通常使用定时中断来实现计时,我们需要考虑到时钟频率和定时器的精度,确保计时的准确性。

首先,我们需要连接单片机与显示器和按键开关。

单片机的引脚可以通过通用I/O口或专用的定时器引脚与显示器和按键开关相连接。

这里我们选择7段LED数码管作为显示器,用来显示计时结果。

按键开关用于设置计时时间。

接下来,我们需要编写程序来实现秒表的功能。

首先,初始化单片机的定时器和中断。

我们需要设置定时器的工作模式、时钟频率和计时的时间间隔。

然后,我们需要编写中断服务函数,该函数在定时器达到设定的时间时被调用。

在中断服务函数中,我们将对计时进行加法操作,并将结果显示在LED数码管上。

同时,我们还需要判断计时是否达到设置的结束时间,如果达到,则停止计时。

为了使用户可以设置计时时间,我们可以通过按键开关来实现。

当用户按下设定时间的键时,我们将进入设定模式,用户可以通过按键来设定起始时间和结束时间。

通过LED数码管来显示用户设置的时间。

最后,我们需要对秒表进行测试和调试,确保其功能的正常运行。

我们可以逐步测试每个功能点,如正计时功能、计时时间设置功能和计时精确度等。

通过串口输出调试信息,我们可以对程序进行调优和改进,提高秒表的性能和稳定性。

单片机简易秒表正计时时间可设置

单片机简易秒表正计时时间可设置

单片机简易秒表正计时时间可设置单片机简易秒表的正计时时间可设置为2000字,可以按照以下步骤进行实现:1. 硬件设计:选择一款适合需求的单片机,比如常见的8051、AVR、STM32等。

并根据需求连接必要的外设,如按键开关、数码管等。

2. 软件设计:a) 定义相关变量:- 秒变量:存储当前的秒数- 分变量:存储当前的分钟数- 时变量:存储当前的小时数- 控制变量:用于控制秒表的开始和暂停- 设置变量:用于设置需要计时的时间,初始值为2000(字)- 数码管显示变量:存储需要在数码管上显示的数据b) 初始化:- 设置定时器中断,每秒触发一次中断,用于更新秒、分、时的变量- 设置外部中断,用于处理开始/暂停的按键事件- 设置外部中断,用于处理设置事件,每按一次按键设置加1,最大为2000(字),显示设置数值。

c) 中断服务程序:- 更新秒、分、时的变量- 如果控制变量为1,将秒、分、时的变量更新到数码管显示变量中,实现数码管显示d) 控制程序:- 根据按键事件切换控制变量的状态,实现秒表的开始、暂停功能e) 设置程序:- 根据按键事件对设置变量进行更新,实现设置时间的功能。

同时将设置变量的值显示在数码管上3. 调试与优化:通过调试和优化程序,确保秒表的正计时时间可设置为2000字。

4. 扩展功能:在基本功能实现的基础上,可以添加更多的功能,如显示毫秒、添加报警功能等,以提升秒表的实用性。

5. 完善界面设计:为了方便用户操作和观察计时结果,可以设计一个简洁美观的界面。

可以利用数码管显示计时结果,同时增加LED指示灯来辅助显示状态(如运行、暂停)。

可以设计一个独立的按键用于开始/暂停功能,一个按键用于增加设置时间。

可以在界面上打印一些提示信息,如"Press Start to begin timing"等。

6. 用户交互优化:为了方便用户操作,可以添加一些交互优化功能。

例如,可以实现按住增加设置时间按键连续加速增加时间的功能,以快速设置需要计时的时间。

数字式秒表资料

数字式秒表资料

数字式秒表资料电⼦技术综合课程设计课程:电⼦技术综合课程设计题⽬:数字式秒表所属院(系) 物电学院专业班级电⼦101姓名XXX 学号:XXXXX指导⽼师XXXXX完成地点5XXX2012年 09 ⽉ 26⽇任务书数字式秒表⼀任务和要求:设计并制作⼀个数字式秒表,要求如下:1、⽤三位数码管及⼀个LED发光⼆极管显⽰秒表计时,格式如下:开机时数码管显⽰000,LED灯灭;当计时超过59秒时,LED灯亮;计到1分59秒时,过⼀秒,LED灯灭,同时数码管重新计时显⽰。

计时最⼩单位为0.1秒。

2、具有如下功能键:开始/清零键:按第⼀下时计时开始,同时显⽰;按第⼆下,停⽌计时,恢复到初始状态;固定显⽰键:按第⼀下时,显⽰固定,但计时仍继续;再按下时,显⽰从新时间开始。

3、要求⾃制0.1秒信号源。

4、设计并制作本电路所⽤直流电源。

⼀、提⽰和参考⽂献直流稳压电源见参考资料P23《数字电⼦技术实验任务书》实验六陕西理⼯学院⽬录前⾔ (1)⼀.⽅案论证 (2)1.1⽅案1 (2)1.2⽅案2 (2)⽅案1、2的⽐较: (3)⼆、单元电路设计原理 (4)2.1 五伏电压源设计 (4)2.2 0.1s信号源设计: (5)2.3 显⽰电路: (6)2.4 计数电路 (8)2.5控制电路 (9)三、仿真调试及问题分析 (10)3.1仿真软件简介 (10)3.3信号发⽣器的仿真与问题分析 (12)3.4 计数显⽰部分的仿真与问题分析 (12)3.5 控制电路、译码、显⽰全图的仿真与问题分析 (13)四装调步骤和故障问题与调试改进 (14)五.⼩结 (14)六.参考⽂献 (15)附录1.元器件功能与管脚 (16)附录2.元器件清单 (20)附录3.总体电路图 (21)前⾔电⼦技术综合课程设计是针对模拟电⼦技术、数字逻辑电路及电路分析课程的要求,对学⽣进⾏综合性实践训练的实践学习环节,它包括选择课程、电⼦电路设计、制作、调试和编写总结报告等实践内容。

秒表

秒表

秒表
系统原理图
清零这一块不好做,本人水平有限,只能两步清零先按归零1再按归零2,其中要在归零1状态下按归零2进行清零,不然会导致进位。

清零主要蛮烦在于进制不同。

假若全是十进制就很好清零,可以做到一步清零。

本系统的主要功能是,可以从0.01s记到99min59.99s,可以暂停,也可以归零。

精度为0.01s
精度可以改,计数精度可以修改,只要修改,ne555外围的电阻阻值,和电容的容值即可。

或者用系统自带的脉冲发生器,可以任意更改脉冲的频率(计数精度)。

周期计算公式T=0.69(R1+2R2)C1(本系统为例)
原件清单图
仿真1 计时状态中,2.06s
图1 仿真图1
仿真图2清零第一步,剩下显示十秒的数码管没被清零。

接下来按归零2就可以清零。

图2 仿真图2
仿真图3,清零第2步将归零2按下后复位,就可以成功清零,如下图所示。

图3 仿真图3
不好之处,不正确之处,请各位大侠指教!。

LED数码管秒表的制作

LED数码管秒表的制作

LED数码管秒表的制作
一、课程设计要求及原始资料:
制作一个LED数码管显示的秒表,用2位数码管显示计时时间,最小计时单位为“百毫秒”,计时范围0.1~9.9s。

当第一次按下并松开计时功能键时,秒表开始计时并显示时间;
当第二次按下并松开计时功能键时,停止计时,计算两次按下计时功能键的时间,并把时间值送入数码管显示;
当第三次按下计时功能键时,秒表清零,等待下一次按下计时功能键。

如果计时到9.9s时,将停止计时,按下计时功能键,秒表清零,再按下重新开始计时。

二、课程设计进度:
三、主要参考文献:
[1]张毅刚.单片机原理及应用[M].北京:高等教育出版社,2010
[2]张毅刚.单片机原理及接口技术[M].北京:人民邮电出版社,2008
[3]张毅刚.基于Proteus的单片机课程的基础实验与课程设计[M].北京:人民邮
电出版社,2013
专业班级学生课程设计工作起止时间
课程设计评语。

简易秒表的原理说明

简易秒表的原理说明

简易秒表的原理说明简易秒表的设计与制作该系统由时钟脉冲信号模块、计数模块和译码显示模块三部分组成。

时钟脉冲模块运用了NE555构成的多谐振荡器,NE555的8脚为电源端,1脚为接地端,4脚为清零端,由于4脚是高电平有效,因此4脚与8脚相接高电平。

3脚为输出端,5脚为电压控制端,为了防止干扰,在5脚接上0.01uf小电容接地。

当接通电源,Vcc经R1、R2给电容C2充电,使电容C2两端的的电压Uc逐渐升高,当Uc 计数模块运用了四块74ls192数字芯片,74ls192是同步可逆计数器,不仅能叠加计数,还能递减计数。

D0~D3是数据输入端,Q0~Q3是数据输出,都是高电平有效。

PL是预置端,低电平有效,当PL为低电平时,不管CP状态如何,可将预置数D0D1D2D3置入计数器(为异步置数),当PL为高电平时,芯片禁止预置数。

RM 是清零端,为高电平有效,所以在此端接上一个开关,当芯片要正常工作时按下开关接地,清零端无效。

UP是叠加脉冲输入端,DN是递减脉冲输入端,当UP接入时钟脉冲CP且DN为高电平时,在CP上升沿作用下该芯片进行叠加计数;当DN接入时钟脉冲CP且UP为高电平时,在CP上升沿作用下进行递减计数。

TCU为进位端,TCD为错位端,当进行叠加计数时,在UP第9个脉冲上升沿作用后,当其下降沿到来时,进位输出端TCU产生一个负的进位脉冲,第10个脉冲的上升沿作用后,计数器复位,重新开始计数,TCD的工作原理正好相反,因此可以利用此原理用4块74ls192制作显示XX:XX的简易可逆的秒表,U1的进位输出端和错位输出端分别接入U2的UP、DN,U2与U3,U3与U4之间的相连相同。

四块芯片的16个数据输入端分别用16个开关相接并接地,这样可以用于任意置数。

译码显示模块分别用4块CD4511 7段译码器和四个共阳极LED数码管组成。

CD4511的ABCD为数据输入端,QA~QG为译码输出端。

LT为试灯输入信号,低电平有效,此信号用来测试七段数码管发光段好坏,当该端为低电平时,不论其他输入端状态如何,则七段全亮,说明数码管工作正常。

第9章 用LED数码管显示的秒表设计

第9章 用LED数码管显示的秒表设计

图9-4 定时器中断程序
程序清单见课程设计指导书或配套仿真软件
5
9.4 仿真与实验结果
图9-5 按下Stop按键时的仿真结果
6
9.4 仿真与实验结果
图9-6 按下S 用LED数码管显示的秒表设计
9.1 项目任务 9.2 硬件设计 9.3 程序设计 9.4 仿真与实验结果
1
秒表是一个重要的计时工具,可用于比赛计时、实验研究以及生 活计时等。
2
9.1 项目任务
用STC89C52单片机与两位数码管设计并制作一个秒表,实现 电子秒表的基本功能,显示时间为00~59,每秒自动加1,至59 秒后再回到00,继续循环。运用“开始”、“暂停”、“复位” 按键实现对秒表计时控制。
3
9.2 硬件设计
图9-2 LED数码管显示的秒表设计电路原理图 4
9.3 程序设计
开始 定时器初始化 开中断、开始计时
1秒时间到? N
Y 1秒标志位清0,秒加1
秒=60? N
停止键按下? N
继续计时?
Y 秒计数器清零 Y
停止计时 结束
开始 定时器重新置初值 50ms中断次数加1
结束
显示秒
图9-3 主程序流程图

简易秒表程序

简易秒表程序

一、基本要求(1))让一只LED 灯自由闪烁(即间歇式亮灭)。

(2))让数码管的低两位显示一个两位数50 。

(3))使用一按键控制上述数字的加1,每按一下数字加1,当加到59时,再按一下,则从0开始,即在0到59 循环加。

(4))使用另一按键控制上述数字的减1,每按一下数字减1,当减到0时,再按一下,则从59开始,即在0到59循环减。

三、提高部分(1))做一顺时计时秒表,以一秒为单位计时,分和秒之间用一小数点作间隔(2))用一个按键控制该计时秒表的暂停与继续,另一个按键使秒表复位(即数码管归位到0)。

(3))能用按键设定某一时刻,当计时到达这一时刻时,LED 灯闪烁,且秒表停止变为0。

(4))其它自由发挥一.用定时器0 的方式 1 实现第一个发光管一200 μm间隙闪烁,用定时器 1 的方式 1 实现数码管前两位59s 循环计时#include<reg52.h>#define unsigned char#define uint unsigned intsbit dula=P2^6; // 申明U1 锁存器的所存端sbit wela=P2^7; // 申明U2 锁存器的所存端sbit led1=P1^0;uchar codetable[]={ 0x3f,0x06,0x5b,0x4 f, 0x66,0x6b,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delayms(uint);void display(uchar,uchar); uchar num,num1,num2,shi,ge; void main(){TMOD=0x11;TH0=(65536-45872)/256;TL0=(65536-45872)%256;TH1=(65536-45872)/256;TL1=(65536-45872)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;while(1){display(she,ge);}}void display(uchar shi,uchar ge) {dula=1;P0=table[shi];dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delayms(5);dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delayms(5);}void delayms(uint xms);{uint i,j;for(i=xms;i--)for(j=110;j>0;j--);}void T0_time()interrupt1 {TH0=(65536-45872)/256;TL0=(65536-45872)%256;num1++;if(num1==4){num1=0;led= ~l ed1;}void T1_time()interrupt3 {TH1=(65536-45872)/256;TL1=(65536-45872)%256;num2++;if(num2==20){num2=0;num++;if(num==60)Num=0;shi=num/10;ge=num%10;}}Welcome To Download !!!欢迎您的下载,资料仅供参考!。

LED数码管秒表的制作

LED数码管秒表的制作

LED数码管秒表的制作
一、课程设计要求及原始资料:
制作一个LED数码管显示的秒表,用2位数码管显示计时时间,最小计时单
位为“百毫秒”,计时范围0.1~9.9s。

当第一次按下并松开计时功能键时,秒表开始计时并显示时间;
当第二次按下并松开计时功能键时,停止计时,计算两次按下计时功能键的
时间,并把时间值送入数码管显示;
当第三次按下计时功能键时,秒表清零,等待下一次按下计时功能键。

如果计时到9.9s时,将停止计时,按下计时功能键,秒表清零,再按下重
新开始计时。

二、课程设计进度:
时间设计内容备注
一至三天分析设计题目及实现功能的方法内容综合性强
四至六天查阅相关资料和整合资料繁琐
七至十二天总体设计并模块化比较笼统,需条理十三至十七天模块设计及编程调试与仿真软件应用生疏十八至二十天排版课程设计报告并查缺补漏文职性任务
三、主要参考文献:
[1]张毅刚.单片机原理及应用[M].北京:高等教育出版社,2010
[2]张毅刚.单片机原理及接口技术[M].北京:人民邮电出版社,2008
[3]张毅刚.基于Proteus的单片机课程的基础实验与课程设计[M].北京:
人民邮
电出版社,2013
专业班级学生课程设计工作起止时间
课程设计评语。

3位数码管秒表,精确到1%

3位数码管秒表,精确到1%

话说经过大概2天的奋战,终于把带停表,开始计时功能的秒表完成了!误差在可以接受的范围内,运行90多秒,大概会有0。

2秒的误差,一般用途还是够了吧。

上一篇《用数码管显示1到9》已经为本文打下不少基础,对于怎样显示数字,我就不多做说明了。

秒表有3位,第一位是10位,第二位是个位,还有一位是小数点第一位,个位后面带个小数点,只要在那个位的字符上加上0×80即可。

但是P0,8个引脚,一个位锁存器,一个段锁存器,那些LED显示数字的引脚都是并联的,如果3位同时亮了,那么显示的数字3个都是一样的。

怎让让3个显示不同的内容,我想了挺久,也参照了一下51HEI给的程序,后来发现有个东西叫动态扫描。

动态扫描:轮流向各位数码管送入数据,并且将数据输入速度控制在人肉眼所分辨不出来的范围内,利用发光二极管的余晖让人的视觉能够识别的过程。

知道上面的做法之后就可以在一个循环频率很高的循环里分别设置3个位要显示的数据,比如设置完第一位的数据后设置第二位的数据,再设置第三位的数据,这3个操作的间隔也是很短的,也就几十个机器周期。

几十个机器周期也是很短的几十微秒级别的时间,速度太快了!人眼是不可能分辨出来滴。

于是我先把00.0在数码管上点亮,不过在这里也遇到了一个问题,本该在二位上的小数点却同时出现第三位上,而且第二位和第三位的0的亮度比小数点的亮度大,这个问题也困扰了我不久。

后来看了一下代码,找到了答案,按照我代码的模式,U1开,传送字符,U1关,U2开,选位,U2关。

单个位的显示几是这样的,这样做有个问题,在选完位之后,下一次U1开的时候传进去的字符会显示在当前的位上,直到下一次U2再打选位的时候才显示在下一个位上。

为了解决这个问题,我在每次传送字符,选位之后,再传送一次字符,传进去的字符呢,就是让数码管灭了,这样互相就不会有干扰了。

知道了怎样三个位分别显示不同的数字之后,接下来就是让数码管的数字随时间更新啦,比较精确的计时呢就是用单片机内部的计时器,关于计时器的使用,请在上一篇《用数码管显示1到9》中查找,这里关于定时器,只多加计时器中断的内容,中断的概念就不用我多讲,只讲怎么用,中断要用的特殊功能寄存器(SFR) IE,其结构如下图:最高位,EA是中断总开关,ET0代表计时器0中断开关,当EA和ET0,TR0,都打开的并且TF0为1的时候,程序会跳入到中断1中,而1刚好是ET0在IE中的第二位。

用LED数码管显示的秒表设计

用LED数码管显示的秒表设计

课程设计说明书用LED数码管显示的秒表设计专业新能源科学与工程学生姓名班级学号指导教师完成日期用LED数码管显示的秒表设计摘要:对采用LED数码管显示的秒表进行了设计。

所设计的秒表,可通过两位数码管显示00-59。

每秒自动加一。

在对系统功能分析的基础上,采用AT89C52单片机。

相对而言比较简单,贴近书本,比较熟悉。

对所要实现的功能也能很好地满足,焊接也比较简单。

设计主要采用硬件和软件两部分。

硬件包含数码管按钮模块、单片机控制模块、数码管显示模块、驱动电流放大模块。

按钮模块采用独立式按键,控制模块选用AT89C52单片机,显示模块采用两位数码管,放大模块选用NPN三极管。

软件采用模块化的程序,分为主程序和定时器计时服务子程序。

在多孔板上制作了LED数码管显示的秒表,使用protus完成了系统仿真,对硬件和软件部分分别进行了调试,进行了软硬件联调,最后调试成功样机实物,完成了毕业设计任务书的要求。

关键词:单片机;数码管;秒表A stopwatch design with LED digital tube displayAbstract: For the LED digital tube display of a stopwatch is used for design. The stopwatch, designed by two digital tube display 00 ~ 59. Automatically add a per second.On the basis of the analysis of system function, using the AT89C52 single chip microcomputer. Relatively simple, close to the book, familiar with. To in order to realize the function also can well satisfy, welding is more simple. The design mainly adopts two parts of hardware and software. Hardware consists of digital tube button module, single-chip microcomputer control module, digital tube display module, the drive current amplifier module. Button module USES the independent type key, choose AT89C52 single chip microcomputer control module, using two digital tube display module, amplifier module selects the NPN transistor. Software adopts the modular program, main program and timer timing service subroutine.On the perforated plate made of LED digital tube display a stopwatch, use protus completed system simulation, the hardware and the software part, has carried on the debugging, the software and hardware alignment, the final debugging success physical prototype, completed the graduation design specification requirements.Key Words:Single chip microcomputer; Digital tube; A stopwatch.用LED数码管显示的秒表设计目录1. 概述 (1)1.1 课题研究背景与意义 (1)1.2 课题设计内容 (1)2. 系统设计 (1)2.1 设计方案论证 (1)2.2 系统硬件设计 (2)2.2.1 主控模块 (2)2.2.2 秒表按钮模块 (4)2.2.3 LED数码管显示模块 (5)2.2.4 放大模块 (6)2.3.1 主程序模块 (6)2.3.2 定时器中断程序 (6)3. 系统调试 (8)3.1 硬件调试 (8)3.1.1 静态检查 (8)3.1.2 通电检查 (8)3.2 软件调试及软硬件联调 (8)3.2.1仿真调试 (8)3.2.2 实物调试 (9)3.2.3 实验结果 (9)4. 结束语 (11)附录1:用LED数码管显示的秒表设计原理图图纸 (15)附录2:用LED数码管显示的秒表设计的元器件目录表 (16)附录3:用LED数码管显示的秒表设计程序清单 (17)盐城工学院课程设计说明书( 2015)用LED数码管显示的秒表设计1.概述1.1 课题研究背景与意义随着电子技术的发展,电子技术在各个领域的运用也越来越广泛。

单片机数码管秒表程序

单片机数码管秒表程序

单片机数码管秒表程序
数码管秒表是一种常见的计时工具,它利用单片机控制数码管的显示来实现计时功能。

下面我将为大家介绍一种基于单片机的数码管秒表程序。

程序的实现思路如下:首先,我们需要使用单片机的定时器来实现时间的计数。

通过设置定时器的计数周期和中断处理函数,我们可以在每个固定的时间间隔内进行一次计数。

然后,我们需要将计数的结果通过数码管进行显示。

为了方便显示,我们可以将计数结果分为小时、分钟和秒三个部分,分别显示在数码管的不同位上。

程序的具体实现步骤如下:
1. 初始化单片机的定时器,并设置计数周期为1秒。

2. 设置一个全局变量来保存计数的结果,初始值为0。

3. 在定时器的中断处理函数中,每次中断时将计数结果加1。

4. 在主函数中,设置一个循环来不断检测计数结果的变化,并将其转换为时、分、秒的形式。

5. 将转换后的时、分、秒分别显示在数码管的不同位上,通过控制数码管的引脚来实现。

通过以上步骤,我们就可以实现一个简单的数码管秒表程序。

当程序运行时,数码管会不断地显示计时结果,从0开始递增,以秒为单位。

当需要停止计时时,可以通过外部按键等方式来暂停或重置计数结果。

这种数码管秒表程序可以广泛应用于各种计时场景,比如运动比赛、实验计时等。

它的实现简单、成本低廉,并且可以精确地显示时间,非常实用。

希望通过以上介绍,大家对基于单片机的数码管秒表程序有了更深入的了解。

希望这个简单的程序能够帮助大家更好地实现计时功能,提高工作和学习的效率。

谢谢大家!。

用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计

用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计

目录一、设计题目和要求: (2)二、设计目的: (2)三、设计内容: (3)四、课程设计心得体会 (25)五、参考文献 (26)六、课程设计指导教师评审标准及成绩评定 (27)附件1:秒表原理图(实际接线图) (28)附件2:仿真图1 (30)附件3:仿真图2 (31)一、设计题目和要求:题目三:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。

设计一个“复位”键,按下“复位”键后,秒表从0开始计时。

任务安排:李座负责绘制电路原理图;梁宗林负责收集资料及电子版整理;付忠林负责程序和仿真。

二、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理及使用方法。

6.掌握定时器、外部中断的设置和编程原理。

7.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

8.该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。

三、设计内容:了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到1秒。

AT89C51单片机的主要工作特性:·内含4KB的FLASH存储器,擦写次数1000次;·内含28字节的RAM;·具有32根可编程I/O线;·具有2个16位可编程定时器;·具有6个中断源、5个中断矢量、2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有一个数据指针DPTR;·两种低功耗工作模式,即空闲模式和掉电模式;·具有可编程的3级程序锁定定位;AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz.AT89C51各部分的组成及功能:振荡器和时钟电路数据存储器128字节程序存储器14KBCPU 两个16位定时器计数器中断控制总线扩展控制器并行可编程I/O口可编程串行口内部总线外部中断扩展控制P0 P1 P2 P3 RXD TXD1.单片机的中央处理器(CPU )是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

❖ while(1) {
❖ for(i=0;i<10;i++)
❖{

P1=led[i]; //字型显示码送段控制口P1

delay1s(); //延时1秒
❖}

}
❖}
16
可编辑版
动动手
程序编写 ❖ 创建工程 保存工程 ❖ 建立源文件 保存源文件 ❖ 源文件加入工程 ❖ 编译 链接 调试
17
可编辑版
3
可编辑版
工作任务
❖ 正确连接实验箱电路 ❖ 输入简易秒表程序并完成调试 ❖ 根据要求修改程序并观察运行结果 ❖ 完成实训报告
4
可编辑版
任务分析
❖ 用单片机实现一位数简易秒表控制,计时范围为0~9s, 并将计时时间在一位数码管上显示出来。
❖ 数码管如何显示0-9数字?
5
可编辑版
实训电路
6
可编辑版
//启动T1
❖ while(!TF1); //查询计数是否溢出,即定时50ms时间到,TF1=1
❖ TF1=0;
//50ms定时时间到,将T1溢出标志位TF1清零
❖}
❖}
15
可编辑版
❖ void main()
//主函数
❖{
❖ unsigned char i;
❖ TMOD=0x10;
//设置定时器1工作于方式1
10
可编辑版
单片机与LED数码管接口
LED静态显示
静态显示是指数码管显示某一字符时,相应的发光二极管恒定导 通或恒定截止。
这种显示方式的各位数码管的公共端恒定接地(共阴极)或+5V (共阳极)。
每个数码管的八个段控制引脚分别与一个八位I/O端口相连。只 要I/O端口有显示字型码输出,数码管就显示给定字符,并保持不 变,直到I/O口输出
LED数码管结构及原理
7
可编辑版
单片机与LED数码管接口
LED数码管结构及原理
8
可编辑版
新知识点:数码管如何显示?
LED数码管工作原理
a b c ad e f g
a bcdef g
f
b
g
共阴极COM( )
a
e
R
I
d
c
U U′
COM 9
COM(+)
共阳极
R U-U I
下一时段按顺序选通另外一位数码管,并送出相应的字型显示编 码,依此规律循环下去,即可使各位数码管分别间断地显示出相应 的字符。
这一过程称为动态扫描显示。
14
可编辑版
参考程序
❖ //程序:ex5_1.c
❖ //功能:0~9简易秒表
❖ #include <reg51.h>
❖ unsigned char led[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
可编辑版
单片机与LED数码管接口
LED数码管字型编码
若将数值0送至单片机的P1口,数码管上不会显示数字“0”。显 然,要使数码管显示出数字或字符,直接将相应的数字或字符送至 数码管的段控制端是不行的,必须使段控制端输出相应的字形编码。 将单片机P1口的P1.0、P1.1 …P1.7八个引脚依次与数码管的a、 b…f、dp八个段控制引脚相连接。如果使用的是共阳极数码管, COM端接+5V,要显示数字“0”,则数码管的a、b、c、d、e、f六 个段应点亮,其它段熄灭,需向P1口传送数据11000000B(C0H), 该数据就是与字符“0”相对应的共阳极字型编码。若共阴极的数码 管COM端接地,要显示数字“1”,则数码管的b、c两段点亮,其他 段熄灭,需向P1口传送数据00000110(06H),这就是字符“1”的 共阴极字型码了。
11
可编辑版
单片机与LED数码管接口
LED静态显示
12
可编辑版
单片机与LED数码管接口
LED动态显示
13
可编辑版
单片机与LED数码管接口
LED动态显示
动态显示是一种按位轮流点亮各位数码管的显示方式,即在某一 时段,只让其中一位数码管“位选端”有效,并送出相应的字型显 示编码。此时,其它位的数码管因“位选端”无效而都处于熄灭状 态;
任务十一
数码管显示的简易秒表
1
机电工程学院 机电一体化教研室
引出任务
❖ 生活中经常会用到秒表,大家知道它 的工作原理吗?
❖ 我们今天这次课上学习如何利用数码 管制作一个简易的秒表!
❖ 大家加油!
2
可编辑版
学习目标
❖ 通过对一位数码管显示0~9简易秒表的制作,熟悉单片机 与LED数码管的接口技术,了解LED数码管的结构、工作 原理、显示方法和控制方法。
❖ //定义数组led存放数字0~9的字型码
❖ void delay1s()
//采用定时器1实现1秒延时
❖{
❖ unsigned char i;
❖ for(i=0;i<0x14;i++)
//设置20次循环次数
❖{
❖ TH1=0x3c;
//设置定时器初值为3CB0H
❖ TL1=0xb0;
❖ TR1=1;
动动手
硬件连接 ❖使用电子连线连接实验箱单片机输出端口与
相应的数码管端口 ❖使用USB数据线连接电脑USB端口与单片机实
验箱数据端口 ❖全速运行,观察秒表使用效果
18
可编辑版
拓展思考
❖ 如何使六位数码管动态显示“012345”?
19
可编辑版
20
机电工程学院 机电一体化教研室
相关文档
最新文档