17单片机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分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相振荡器的输出,该反相放大器可以配置为片内振荡器。
99秒跑马表课程设计
99秒跑马表课程设计一、课程目标知识目标:1. 学生能理解99秒跑马表的原理,掌握其制作方法。
2. 学生能够运用所学的数学知识,如时间计算、速度与距离关系,解决实际问题。
3. 学生能够理解并运用基本的物理知识,如加速度、力的作用等,分析跑马表中涉及到的运动现象。
技能目标:1. 学生能够独立完成99秒跑马表的制作,培养动手操作能力和解决问题的能力。
2. 学生能够运用所学的数学和物理知识,进行数据计算和分析,提高逻辑思维能力。
3. 学生能够通过团队合作,共同完成任务,提升沟通协作能力。
情感态度价值观目标:1. 学生在学习过程中,培养对科学知识的热爱和探究精神,增强学习兴趣。
2. 学生能够认识到团队合作的重要性,培养团结互助的品质。
3. 学生能够通过课程学习,体会到数学和物理知识与现实生活的紧密联系,提高实践应用意识。
课程性质:本课程为综合实践活动课程,结合数学和物理知识,培养学生的实践操作能力和综合运用知识解决问题的能力。
学生特点:五年级学生对新鲜事物充满好奇,具备一定的数学和物理知识基础,动手能力强,喜欢团队合作。
教学要求:教师应注重引导学生运用所学知识,激发学生的探究欲望,关注学生的实践操作过程,及时给予指导和评价。
同时,关注学生在团队合作中的表现,培养良好的沟通协作能力。
通过本课程的学习,使学生在知识、技能和情感态度价值观方面均取得具体、可衡量的学习成果。
二、教学内容本课程以“99秒跑马表”为主题,结合以下教学内容进行组织:1. 数学知识:- 时间计算:时、分、秒的换算关系,速度与距离的计算。
- 数据分析:通过实际操作,收集数据,运用图表进行数据分析。
2. 物理知识:- 力与运动:力的作用、运动状态、加速度的概念。
- 能量转换:能量的传递与转换,如重力势能与动能的转换。
3. 制作跑马表:- 制作原理:了解跑马表的制作原理,掌握其运行机制。
- 制作步骤:分解制作过程,明确各步骤的要求和注意事项。
单片机0-99计数器 秒表报告
.课程名称单片机原理及应用课程设计学号姓名班级指导老师时间信息工程学院. 设计过程、步骤(可加页):一、设计方案利用STC90C51单片机来制作一个手动计数器,在STC90C51单片机的P3.7 管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7 接一个共阳数码管,作为00-99 计数的个位数显示,用单片机的P0.0-P0.7 接一个共阴数码管,作为00-99 计数的十位数显示;二、工作原理采用STC90C51单片机为中心器件,利用其定时器/计时器定时和计数的原理,结合硬件电路如电源电路、晶振电路、复位电路、显示电路,以及一些按键电路等来设计计时器,软硬件有机的结合起来,其中软件系统采用c语言编写程序,包括显示程序,快加程序,暂停程序等,硬件系统利用Keil强大的功能来实现,简单且易观察。
(一)开发板上硬件连线(如图1)1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8 芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。
2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8 芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h 端口上;3.把“单片机系统”区域中的P3.7/RD 端口用导线连接到“独立式键盘”区域中的SP1端口上。
图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口送出数字的显示代码,数码管就能正常显示需要的数字。
基于单片机的99秒表设计
基于单片机的99秒表设计(一).方案论证及设计说明1.控制器的选择单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。
由于其功耗低、体积小、技术成熟和成本低等优点,各个领域应用广泛。
本实验采用AT89C51单片机。
2.数码管的选择(1)LED显示方式有共阴极和共阳极两种。
由于平时习惯于用共阴极数码管,在本实验中采用共阴极数码管。
1)字形码表的产生以共阴极为例,LED七段数码管的每一段接高电平时亮,不同的2)显示方式: 静态显示在静态显示方式下,每一位显示器的字段控制线是独立的。
当显示某一字时,该位的各字段线和字位线的电平不变,也就是各字段的亮灭状态不变。
静态显示方式下LED 显示器的电路连接方法是:每位LED 的字位控制线门共阴极点或共阳极点连在一起,接地或接 + 5V ;由于显示的是整数,所以小数点那位可以不接,所以其字段控制线 (a ~g )分别接到一个7位口。
动态显示1)利用人眼的视觉暂留效应,通过位选分时显示不同的数码管,这样可以看到正常的显示。
调用延时子程序循环显示各路水压值, 使能清楚的看到八路水压的大小。
2)本实验采用共阴极数码管,动态循环显示各路水压值,并在设置上下限时显示上下限的大小。
显示数码与共阴极断码的对应关系:0 1 2 3 4 5 6 7 8 9 3FH06H 5BH 4FH 66H6DH7DH07H 7FH 6FH静态显示占的的IO 资源多,动态显示可以节省IO 口,本实验中IO 口足够用,所以用静态显示。
3.设计说明99秒表的设计有2个控制键,开始键和复位键,按下开始键则开始计时,再按一下开始键则停止计时,显示计时的秒数,按一下复位键则复位,显示00。
按键通过外部中断来实现,用外部中断0和外部中断1来实现。
按下开始键则进入外部中断0,为了区分是开始计时还是计时停止,给寄存器R1赋初值为0,判断R1为零,给R1赋值1,则启动定时器,进入定时器中断,执行计时,每隔一秒数码管显示的值自动加一,当再次按下开始键时,再次进入中断0,R1的值为1,通过比较指令判断为停止计时指令,则跳转到指令使定时器停止计时,则显示定时的时间,同时把R1的值再设为0。
99秒秒表课程设计
目录摘要 (2)1 99秒秒表设计背景及目的要求 (2)1.1 99秒秒表设计背景 (2)1.2设计目的 (2)1.3硬件选择 (2)1.4设计内容 (2)2 设计方案及基本原理 (2)2.1 预备知识 (2)2.2 LED显示原理 (3)2.3 元器件选择 (3)2.4 系统设计 (3)2.5硬件工作原理 (4)2.6 硬件连接 (4)3 程序设计 (5)3.1设计步骤 (5)3.2程序代码........................................... 错误!未定义书签。
4 调试结果及分析 (7)4.1 调试结果 (7)4.2 结果分析 (7)5 结论与体会 (8)参考文献 (9)附录 (8)摘要:本设计是设计一个单片机控制的多功能秒表系统。
近年来随着科技的飞速发展,单片机的应用正在不断的走向深入,同时带动着传统控制检测日新月异更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面的知识是不够的,还要根据具体的硬件结构,以及针对具体的应用对象的软件结合,加以完善。
秒表的出现,解决了传统的由于人为因素造成的误差和不公平性。
将软、硬件有机地结合起来,使得系统能够实现两位LED显示,显示时间为00~99秒,每秒自动加1,能正确地进行加、减(倒)计时,快加,快减,可以同时记录4个相对独立的时间,通过上翻下翻来查看这4个不同的计时值,可谓功能强大。
其中软件系统采用汇编语言编写程序,包括显示程序,加减计数程序,快加快减程序,中断,延时程序,按键消抖程序等,并在WAVE中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
关键词:单片机 AT89C51 99秒【设计题目】99秒秒表设计1 99秒秒表设计背景及目的要求1.1 99秒秒表设计背景目前,单片机正朝着高性能和对品种方向发展,趋势是进一步向着CMO化,低功耗,小体积,大存量,高性能,低价格和外国电路内装化等几个方面发展。
99秒马表课程设计说明书
信息与电气工程学院课程设计说明书(2013/2014 学年第二学期)课程名称:单片机应用课程设计题目:99秒马表专业班级:电气工程及其自动化0000班目录一、课程设计目的 (2)1.1概述 (2)1.2设计要求 (2)二、课程设计正文 (2)2.1整体设计 (2)2.2器件清单 (3)2.3主要器件说明 (4)2.3.1 STC90C52AD的功能参数介绍 (4)2.3.2译码单元 (6)2.3.3共阴极数码管 (7)2.4单元电路设计 (8)2.4.1 时钟模块 (8)2.4.2 复位电路模块 (8)2.4.3控制模块 (8)2.4.4 显示模块 (9)2.5系统调试 (9)2.4系统分析 (10)2.5系统设计 (10)2.5.1程序流程图 (10)2.5.2 T0中断服务程序框图 (11)2.6系统实施 (11)三、总结: (12)四、参考文献 (13)附录一:C语言设计程序代码: (14)附录二:设计原理图及PCB图 (16)附录三、课程设计评语及成绩 (18)99秒马表单片机设计一、课程设计目的1.1.概述单片机原理及应用课程设计是学生综合运用所学知识,全面掌握单片微型计算机及其接口的工作原理、编程和使用方法的重要实践环节。
通过独立或协作提出并论证设计方案,进行软、硬件调试,最后获得正确的运行结果,可以加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机应用系统整体概念,初步掌握单片机软、硬件开发方法,为以后进行实际单片机软、硬件应用开发奠定良好的基础。
课程设计的主要内容:根据单片机原理及应用课程的要求,主要进行两个方面的设计,即单片机最小系统和接口技术应用设计。
其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4个并行接口和一个串行接口的实际应用,从而可构成最小应用系统,并编程进行简单使用。
接口技术应用设计主要要求学生能综合运用单片机、存储器、常用接口芯片构成单片机应用系统,有针对性地进行软、硬件设计与开发。
单片机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码表设计
//=====99秒马表设计程序========////1.开机显示00,按下按键后开始计时。
//2.第2次按按键后,计时停止。
//3.第3次按按键后,计时归零。
#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charuchar code leddu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar a,temp,t,num,shi,ge,flag_key,flag;sbit K1=P0^0; //声明按键K1void init();void delay(uint z);void display(uchar shi,uchar ge);void main(){init();while(1){if(flag==1){shi=num/10; //取出马表的十位ge=num%10; //取出马表的各位}display(shi,ge); //开机显示00if(K1==0){delay(10);if(K1==0) flag_key++; //设下按键标志位while(!K1) display(shi,ge); //按键松手显示}if(flag_key==1) TR0=1; //第一次按下时,开始计时if(flag_key==2) TR0=0; //第二次按下时,计时停止if(flag_key==3) num=0; //第三次按下时,计时归零if(flag_key==4) flag_key=0;}}void delay(uint z) //------延时子函数-------{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void init() //------初始化程序---------{TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=0;t=0;a=0;temp=0xfe;num=0;}void display(uchar shi,uchar ge) //------显示子程序------- {for(a=0;a<8;a++){switch(a){case 6:P3=leddu[shi];break;case 7:P3=leddu[ge];break;}P2=temp|0x3f; //屏蔽低6位temp=_crol_(temp,1);delay(3);}}void time() interrupt 1 //--定时器子程序--------{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;if(t==20){t=0;num++;flag=1; //每过1s,num加一次,设下标志位}}。
单片机应用技术99.9秒码表设计
图5.3 秒表显示模块与单片机的接口电路原理图
【项目实践】
【活动三】软件设计
1.算法设计
秒表设计需要采用比较精确的计时,可以利用MCS-51单片机内部的可 编程定时器/计数器来实现精确的计时。
① 程序实现方式 单片机的定时/计数可以采用查询方式或者中断方式来实现,本项目 采用中断方式。 ② 确定定时器工作方式 由于秒表的最小计数单位为0.1秒,而单片机的16位的定时器的最大 定时时间分别为(单片机系统的晶振为12MHz): 方式0:tmax=213*12/fosc=8192*12/(12*106)=8.192ms, 方式1:tmax=216*12/fosc=65536*12/(12*106)=65.536ms; 方式2:tmax=28*12/fosc=256*12/(12*106)=0.256ms; 可见,三种方式下的最大定时时间都不能达到秒表的最小计数单位 0.1秒,在这种状况下,为了减少中断或定时到的次数,避免响应误差或 中间重置误差,使定时更精确,选用定时时间最长的方式,即方式1。
器的33H单元; 数码管号数LEDSM定义为片内数据存储器的34H单元; DPTR为数码管字型码的基址寄存器。
《单片机应用技术》
99.9秒码表设计
《单片机应用技术》精品课程组 泸州职业技术学院机电工程系
本讲主要内容
1 教学目标 2 工作任务 3 项目实践 4 相关知识 5 能力拓展 6 项目考核
【教学目标】
1 制作一个利用单片机作为主控制器的电子秒表 2 理解定时/计数器的工作原理 3 掌握定时/计数器的工作方式及定时/计数初值的计算 4 熟悉定时/计数器的编程结构 5 掌握定时/计数器程序设计方法 6 了解定时/计数器的应用领域
【项目实践】
99s秒表单片机课程设计
目录第1章概述 (1)1.1单片机的发展历史与趋势 (1)1.2AT89C51单片机及其引脚说明 (2)第2章系统结构及主要元器件 (6)2.1设计要求 (6)2.2系统总体结构及主要元器件 (6)第3章硬件设计 (7)3.1各部分的硬件电路 (7)3.2整体电路系统及实现 (10)第4章软件设计 (11)4.1主程序流程图 (11)4.2中断程序流程图 (12)4.3程序代码 (12)第5章系统仿真及调试 (15)结论与体会 (17)参考文献 (18)第1章概述1.1 单片机的发展历史与趋势1.1.1单片机的发展历史目前我们使用最普遍的单片机就是AT89C51,它是8位单片机。
如果将8位单片机的推出作为起点(1976年),那么,单片机的发展历史大致可分为4个阶段。
1.单片机的探索阶段主要是探索如何把计算机的主要部件集成在单芯片上。
Intel公司推出的MCS—48就是在工控领域探索的代表,参与这一探索的还有Motorola,Zilog等公司,也都取得了满意的效果。
这就是单片机微型计算机的诞生时代,单片机一词即由此而来。
即在一块半导体硅片上集成了微处理器(CPU),存储器(RAM,ROM,EPROM)和各种输入、输出接口(定时器/计数器,并行I/O口,串行口,A/D转换器以及脉宽调制器PWM等),这样一块集成电路芯片具有一台计算机的属性。
2.单片机完善阶段Intel公司在MCS—48基础上推出了完善的、典型的MCS—51单片机系列。
他在以下几个方面奠定了典型的通用总线型单片机体系结构。
(1)设置了经典、完善的8位单片机的并行总线结构。
(2)外围功能单元由CPU集中管理的模式。
(3)体现控制特性的位地址空间、位操作方式。
(4)指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。
3.向微控制器发展的阶段这个阶段推出的单片机普遍带有串行I/O口,多级中断系统,16位定时器/计数器,片内ROM、RAM容量加大,且寻址范围可达64KB,有的片内还带有A/D转换器。
单片机控制秒表显示时间为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 电阻1K 780 22%2 电阻10K 10.78 0.07%3 电容33pF 32 3%4 电容10uF 9 10%5 晶振12M 12M 0共阳极数码管检测管脚序号利用万用表二极管档红表笔接一个抵住两个管脚,利用另一个接触其他,找出1,2两个管脚,继续分别找出A,D,C,D,E,F,G,Dp管脚。
单片机控制秒表显示时间为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
创新实践实训报告
学院
信息电子技术学院
专业
电子信息工程
017、99秒马表设计
017、99秒马表设计17. 99秒马表设计1.实验任务(1.开始时,显示“00”,第1次按下SP1后就开始计时。
(2.第2次按SP1后,计时停止。
(3.第3次按SP1后,计时归零。
2.电路原理图图4.17.13.系统板上硬件连线(1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。
(2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。
(3.把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上;4.程序框图主程序框图T0中断服务程序框图MOVC A,@A+DPTRMOV P2,AMOV TMOD,#02HSETB ET0SETB EAWT: JB SP1,WTLCALL DELY10MSJB SP1,WTINC KEYCNTMOV A,KEYCNTCJNE A,#01H,KN1 SETB TR0MOV TH0,#06HMOV TL0,#06HMOV TCNTA,#00HMOV TCNTB,#00HLJMP DKNKN1: CJNE A,#02H,KN2 CLR TR0LJMP DKNKN2: CJNE A,#03H,DKN MOV SEC,#00HMOV A,SECMOV B,#10DIV ABMOV DPTR,#TABLE MOVC A,@A+DPTRMOV P0,AMOV A,BMOV DPTR,#TABLE MOVC A,@A+DPTRMOV P2,AMOV KEYCNT,#00H DKN: JNB SP1,$LJMP WTDELY10MS:MOV R6,#20D1: MOV R7,#248 DJNZ R7,$DJNZ R6,D1RETINT_T0:INC TCNTAMOV A,TCNTACJNE A,#100,NEXTMOV TCNTA,#00HINC TCNTBMOV A,TCNTBCJNE A,#4,NEXTMOV TCNTB,#00HINC SECMOV A,SECCJNE A,#100,DONEMOV SEC,#00HDONE: MOV A,SECMOV B,#10DIV ABMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,BMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P2,ANEXT: RETITABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END6. C语言源程序#include <AT89X51.H>unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};unsigned char second;unsigned char keycnt;unsigned int tcnt;void main(void){unsigned char i,j;TMOD=0x02;ET0=1;EA=1;second=0;P0=dispcode[second/10];P2=dispcode[second%10];while(1){if(P3_5==0){for(i=20;i>0;i--)for(j=248;j>0;j--);if(P3_5==0){keycnt++;switch(keycnt){case 1:TH0=0x06;TL0=0x06;TR0=1;break;case 2:TR0=0;break;case 3:keycnt=0;second=0;P0=dispcode[second/10];P2=dispcode[second%10];break;}while(P3_5==0);}}}}void t0(void) interrupt 1 using 0 {tcnt++;if(tcnt==400){tcnt=0;second++;if(second==100){second=0;}P0=dispcode[second/10];P2=dispcode[second%10]; }}。
设计5 99秒马表设计任务书
5、99秒马表设计任务书
一、设计任务
基于单片机技术和Proteus仿真平台,设计单片机技术应用系统,要求采用80C51单片机设计实现一个99秒跑马表,计数范围为:00-99,并数码显示跑马的值。
具体功能要求为:
(1)开始时,显示“00”,第1次按下按键SP1后就开始计时。
(2)第2次按按键SP1后,计时停止。
(3)第3次按按键SP1后,计时归零。
鼓励在以上的基础上创新,例如,加上60秒声光提醒,码表计时范围扩展到“0-9999”,设计并制作出实物作品。
二、设计原理
该设计重点在于软件程序的编写,要利用定时器产生一秒的延时,对一秒的延时进行计数,设计的关键之处在于软件编程的“一键多任务识别”问题。
三、设计过程要求
(1)做方案论证画出电路原理图,要有完整的电路图。
(2)确定元器件参数,要有元件清单。
(3)设计软件流程,编写软件程序,要有程序附件。
(4)进行电路模拟仿真,要有设计仿真效果图。
(5)进行实验箱仿真,画出焊接布线图。
(6)完成DXP版的SCH原理图文件输出,打印专业版的CAD图纸。
(7)完成实物制作与调试,要有实物电路板作品。
要求系统能够脱离PC机单独运行,具有数码显示或液晶显示的功能,人机交互方式合理,鼓励创新。
四、编写设计报告
写出设计的全过程,附上有关资料、设计图纸、软件流程和软件程序,有心得体会。
五、结题答辩
在规定10分钟时间内,演示和介绍作品功能,阐述设计思想、功能特色,并回答问题。
99秒秒表课程设计
break;
case 0x0002://按键2则停止计数
F_Irq5_2HzOff();//关掉2Hz中断,即停止计数
break;
case 0x0004://按键3则计数器清零
iCounter=0;
break;
default:
break;
}
// 涉及的库:(a) C-Lib: (CMacro.lib);
// (b) : SacmV26.lib;
// 组成文件:
// main.c/ISR.c/numLED.c
// boot.asm/hardware.asm/key.asm
// hardware.h/hardware.inc
第5章 结论与体会
设计结论:
1.在设计中我遇到了对单片机汇编语言不熟悉程序编写困难以及显示小数点位显示等问题。原本希望能够实现0.1秒的精度,但是最终还是没有实现,后来总结是因为数据发生了溢出,所以只能求其次实现了0.5秒的精度。
2.此设计的优点是思路清晰、连接简单。
3.我建议在LED引脚应先标志出来,增加单片机软件程序智能的对进制进行转换,除去繁冗的进制计算。
61单片机开发板是一套完整的16位单片机开发系统,可直接把程序下载到61单片机开发板上进行调试和封装。集成度高、运算速度快、体积小、运算可靠、价格低廉,在过程控制、数据采集、机电一体化、智能仪器仪表、网络技术等方面得到广泛应用。
1.2 设计目的
随着单片机应用的日益广泛,在校学生加强对单片机的认识和动手能力,已经是非常重要的一项锻炼。课程设计就是为加强实践机会、培养学生动手能力的一个重要环节,将理论知识与实际联系起来的一个关键机会。本课程设计的基本要求是:
99秒计时器
99秒计时器实验报告学院:年级:专业:班级:姓名:一、实验要求1、用中断程序控制数码管倒计时。
2、用开关控制,使数码管开始和停止计时。
3、用开关阵列控制数码管显示二、流程框图(一)原理图(二)PCB(1)由12个按键组成一组3*4的矩阵式键盘,要注意上拉电阻,不能忘记。
用软件采取行扫描或是线反转法的方式,进行判断哪个按键是否按下,首先由软件设定好每个按键所对应的具体数字,当判断那个按键按下后,输出所对应的数字,己所设定的时间。
其中有两个按键是开始按键和停止按键,当开始按键按下的时候,开始倒计时,按下停止的按键,倒计时停止。
(2)A T89C51通过P1口连接数码管,P0口连接键盘,按下键盘,即把数据输入到单片机中,通过单片机内部的软件控制,显示所要显示的具体数据。
(3)由于51单片机的I/O端口的带载能力不够,所以,在I/O端口和数码管的连接上连接一个74HC373来增加带载能力。
(4)数码管的每一个段都连接在74HC373上,通过软件的控制而决定是哪一个字段亮,从而决定是显示怎么样的数字。
把数码管的COM端连接在反相器上,作为微控,连接在单片机上,反相器采用74LS04的反相器。
(5)显示倒计时采取判断的方式,当判断出按下哪个按键后,显示搜对应的数字,按下“开始”按键,通过软件的控制,是倒计时开始。
五、收获对于单片机的学习,理论与实践同等重要。
在实验中,可以弄清楚书本上的知识。
老师在实验中讲诉的一些经验更是重要,这个在书本上是没有,例如在复位电路上是要用乙醇擦拭干净的。
应用软件,拷片子,调试,这些过程锻炼了我们的实践能力,为我们就业奠定了基础。
亲手做过设计,调试过电路板,在这个过程中积累的知识相对看书本所学到的是不一样的。
在做双面板的时候,应尽可能确保双面对正,防止穿孔打偏。
在一些细节上,我们应该更加注意。
谢谢老师指导我们,并且把经验告诉我们。
单片机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)。
17.99秒马表设计
1.实验任务
(1.开始时,显示“00”,第1次按下SP1后就开始计时。
(2.第2次按SP1后,计时停止。
(3.第3次按SP1后,计时归零。
2.电路原理图
图4.17.1
3.系统板上硬件连线
(1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要
求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对
应着h。
(2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要
求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应
着h。
(3.把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上;
4.程序框
T0中断服务程序框
图4.17.2 5.汇编源程序
TCNTA EQU 30H
TCNTB EQU 31H
SEC EQU 32H
KEYCNT EQU 33H
SP1 BIT P3.5
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV KEYCNT,#00H
MOV SEC,#00H
MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOV P2,A
MOV TMOD,#02H
SETB ET0
SETB EA
WT: JB SP1,WT
LCALL DELY10MS JB SP1,WT
INC KEYCNT
MOV A,KEYCNT
CJNE A,#01H,KN1
SETB TR0
MOV TH0,#06H
MOV TL0,#06H
MOV TCNTA,#00H
MOV TCNTB,#00H
LJMP DKN
KN1: CJNE A,#02H,KN2 CLR TR0
LJMP DKN
KN2: CJNE A,#03H,DKN MOV SEC,#00H
MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
MOV KEYCNT,#00H DKN: JNB SP1,$
LJMP WT
DELY10MS:
MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
INT_T0:
INC TCNTA
MOV A,TCNTA
CJNE A,#100,NEXT
MOV TCNTA,#00H
INC TCNTB
MOV A,TCNTB
CJNE A,#4,NEXT
MOV TCNTB,#00H
INC SEC
MOV A,SEC
CJNE A,#100,DONE
MOV SEC,#00H DONE: MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
NEXT: RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
6.C语言源程序
#include <AT89X51.H>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00}; unsigned char second;
unsigned char keycnt;
unsigned int tcnt;
void main(void)
{
unsigned char i,j;
TMOD=0x02;
ET0=1;
EA=1;
second=0;
P0=dispcode[second/10];
P2=dispcode[second%10];
while(1)
{
if(P3_5==0)
{
for(i=20;i>0;i--)
for(j=248;j>0;j--);
if(P3_5==0)
{
keycnt++;
switch(keycnt)
{
case 1:
TH0=0x06;
TL0=0x06;
TR0=1;
break;
case 2:
TR0=0;
break;
case 3:
keycnt=0;
second=0;
P0=dispcode[second/10]; P2=dispcode[second%10];
break;
}
while(P3_5==0);
}
}
}
}
void t0(void) interrupt 1 using 0 {
tcnt++;
if(tcnt==400)
{
tcnt=0;
second++;
if(second==100)
{
second=0;
}
P0=dispcode[second/10];
P2=dispcode[second%10];
}
}。