51单片机课程设计秒表
51电子秒表课程设计
51电子秒表课程设计一、课程目标知识目标:1. 学生理解电子秒表的基本原理,掌握其计时功能的工作机制。
2. 学生掌握51单片机的编程基础,能够运用C语言进行简单的程序编写。
3. 学生了解电子秒表中涉及到的电子元器件,如晶振、电容、按键等,并理解它们在电路中的作用。
技能目标:1. 学生能够运用所学知识,独立完成51电子秒表的硬件电路搭建。
2. 学生能够编写程序,实现电子秒表的启动、停止、清零及计时功能。
3. 学生能够通过实际操作,解决电子秒表中遇到的问题,提高动手能力和故障排查能力。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发学习热情,养成积极探索和主动学习的良好习惯。
2. 学生通过合作完成项目,培养团队协作能力和沟通能力,增强集体荣誉感。
3. 学生在课程学习中,树立正确的价值观,认识到科技对生活的影响,增强社会责任感。
课程性质:本课程为实践性课程,结合理论知识与动手实践,旨在提高学生的实际操作能力和创新能力。
学生特点:学生具备一定的物理和数学基础,对电子技术有较高的兴趣,喜欢动手操作,但编程能力可能较弱。
教学要求:结合学生特点,注重理论与实践相结合,循序渐进,由浅入深地引导学生掌握电子秒表的设计与制作。
在教学过程中,关注学生的个体差异,鼓励学生积极参与,充分调动学生的主观能动性。
通过课程学习,使学生在知识、技能和情感态度价值观方面均取得具体、可衡量的学习成果。
二、教学内容本课程教学内容主要包括以下几部分:1. 电子秒表原理:介绍电子秒表的工作原理,分析计时功能的实现过程,探讨51单片机在电子秒表中的应用。
2. 硬件电路设计:学习51单片机的基本电路,掌握晶振、电容、按键等电子元器件的选择和使用方法,学会搭建电子秒表的硬件电路。
3. 软件编程:学习C语言编程基础,掌握51单片机的编程技巧,编写电子秒表的程序,实现启动、停止、清零及计时功能。
4. 实践操作:学生分组进行硬件电路搭建,编程调试,实际操作电子秒表,解决过程中遇到的问题。
C51单片机秒表计时(C语言)
南开大学滨海学院C51嵌入式软件设计(C语言)题目:计时秒表●功能描述:本设计实现在99秒内的秒表计时,一个按键实现开始、暂停、复位。
●原理概述:P1接四位七段数码管,P3。
2接一按键产生外部中断0,P3。
4-P3。
7控制扫描显示。
计时使用定时器0产生10ms中断累计。
按键不同次序决定了对应的控制功能,因为第一次按键必定为开始计时,所以第二次按键判断为暂停,依次第三次为置零.主程序调用显示程序,显示程序实时显示计时时间.●效果显示●图一(电路总图)●图二(效果显示)注:第四位显示为单位:S●程序清单#include<reg51。
h>#include〈stdio.h>unsigned char Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };sbit P37=P3^7;sbit P36=P3^6;sbit P35=P3^5;sbit P34=P3^4;unsigned int a=0,cout=0,mm=0;x,y,p,q;/*********延时*********************/void delay(){int g;for(g=70;g>0;g—-);}/*********显示程序*****************/void display(){x=cout/10;//秒十位P34=0;P1=Tab[x];delay();P34=1;y=cout—x*10; //秒各位P35=0;P1=Tab[y]; delay();P1=0x80;delay();P35=1;p=mm/10; //ms的高位P36=0;P1=Tab[p];delay();P36=1;P37=0; //显示单位:SP1=Tab[5]; delay();P37=1;}/*********主程序********************/ void main(){IT0=1;EX0=1;ET0=1;TMOD=0x01;TH0=0xD8;//装初值,10msTL0=0xF0;EA=1;while(1){display(); };}/*********外部按键中断子程序*********/ void int0 ()interrupt 0{if(a==0)//开始计时{ TR0=1;mm=0;a++;}else if(a==1)//暂停计时{TR0=0;a++;}else//置零{ a=0;mm=0;cout=0;}}/*********定时器子程序****************/ void time0()interrupt 1{TH0=0xD8;TL0=0xF0;mm++;if(mm==80)//考虑其它损耗,调整后约为1S {cout++;mm=0;}}。
c51数字秒表课程设计
c51数字秒表课程设计一、课程目标知识目标:1. 学生能理解C51单片机的基本原理,掌握数字秒表的硬件设计及编程方法。
2. 学生能够运用C语言编写程序,实现秒表的启动、停止、计时的功能。
3. 学生了解数字秒表在实际应用中的重要性,如时间测量、实验数据记录等。
技能目标:1. 学生能够运用所学的C51知识,设计并实现一个具有基本功能的数字秒表。
2. 学生通过实际操作,提高动手实践能力,培养解决实际问题的能力。
3. 学生能够运用所学知识,对数字秒表进行调试和优化,提高程序运行效率。
情感态度价值观目标:1. 学生培养对单片机编程的兴趣,提高学习主动性和积极性。
2. 学生通过合作完成任务,培养团队协作能力和沟通能力。
3. 学生在解决问题的过程中,培养坚持不懈、勇于探索的精神。
本课程针对高年级学生,结合C51单片机课程内容,注重理论与实践相结合。
课程设计旨在帮助学生巩固所学知识,提高动手实践能力,培养解决实际问题的能力。
通过数字秒表的设计与实现,让学生充分体会单片机编程的乐趣,激发学生的学习兴趣,为后续课程学习打下坚实基础。
同时,课程强调团队协作和情感态度的培养,使学生在学习过程中形成积极向上的人生态度。
本章节教学内容主要包括以下几部分:1. C51单片机原理回顾:复习C51单片机的硬件结构、工作原理及编程基础,重点掌握I/O口编程、定时器/计数器等知识点。
2. 数字秒表的硬件设计:介绍数字秒表的硬件组成,包括单片机、时钟电路、显示电路等,分析各部分功能及相互关系。
3. 数字秒表的编程实现:学习如何使用C语言编写程序,实现数字秒表的功能。
内容包括:- 定时器/计数器的配置与使用;- 按键扫描程序编写;- 数码管显示程序编写;- 秒表功能模块设计(启动、停止、计时)。
4. 教学案例分析与实践:结合教材案例,分析数字秒表的设计过程,引导学生动手实践,完成一个具有基本功能的数字秒表设计。
5. 调试与优化:介绍程序调试方法,指导学生运用调试工具,对数字秒表程序进行调试和优化,提高程序运行效率。
51单片机实验 秒表设计
实验报告一、实验名称10秒计时的秒表设计二、实验内容精确到0.1秒的秒表三、相关模块led数码管、usb、独立键盘四、实验代码#include "reg52.h"typedef unsigned int u16; //对数据类型进行声明定义typedef unsigned char u8;sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;sbit k1=P3^1;sbit k2=P3^0;sbit k3=P3^2;sbit k4=P3^3;u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};u16 s,sec;unsigned int i;unsigned int j;unsigned int a,b,c,d;u8 mb[2];void Timer0Init(){TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
TH0=0XFC; //给定时器赋初值,定时1msTL0=0X18;TR0=0;//打开定时器}void delay(u16 n){while(n--);}void DigDisplay1(u16 i){switch(i){case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;}if (i==1){P0=smgduan[mb[i]]+0x80;//发送段码}else{P0=smgduan[mb[i]];}delay(1); //间隔一段时间扫描P0=0x00;//消隐}void DigDisplay2(u16 i){i=i+3;switch(i){case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;}if (i==4){P0=smgduan[a]+0x80;}else{P0=smgduan[b];}delay(1);P0=0x00;}void DigDisplay3(u16 i){i=i+6;switch(i){case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;}if (i==7){P0=smgduan[c]+0x80;}else{P0=smgduan[d];}delay(1);P0=0x00;}void key1(){delay(10);if(k1==0){TR0=!TR0;while(!k1);}}void key2(){delay(10);if(k2==0){s=0;sec=0;while(!k2);}}void key3(){delay(10);if(k3==0){if (j==0) j=1;else j=0;if (j==1){a=mb[1];b=mb[0];}if (j==0){c=mb[1];d=mb[0];}while(!k3);}}void key4(){delay(10);if(k4==0){s=0;sec=0;a=0;b=0;c=0;d=0;while(!k2);}}void main(){Timer0Init();i=0;j=0;while(1){delay(10);key1();if(TF0==1){TF0=0;TH0=0XFC; //给定时器赋初值,定时1msTL0=0X18;s++;}if(s==60){s=0;sec++;if(sec==100)sec=100;}key2();mb[0]=sec%10;mb[1]=(sec/10)%10;key3();DigDisplay1(i);DigDisplay2(i);DigDisplay3(i);i++;i=i%2;key4();}}五、实验效果K1作用:启动、开始或暂停计时K2作用:计数位清零K3作用:记录当前时间并显示K4作用:清零所有的数码管六、实验遇到的问题经过前几次的实验,0到10秒的计数已经不成问题,本次实验的难点主要在几个按键的功能实现上。
基于51单片机的数字秒表课程设计
电气与自动化工程学院卓越工程师培养计划暑期实训报告题目秒表系统的设计年级11级专业自动化班级卓越班学号*********姓名俞雷地点大学生创新实验室日期2012年8月12日~2012年8月20日目录一、单片机简介............................................................................- 2 -二、设计目标................................................................................- 3 -1、设计目的: (3)2、具体操作: (3)三、硬件设计................................................................................- 4 -原理图:. (4)四、系统的软件设计....................................................................- 5 -1、软件整体设计思路: (5)2、软件流程图: (5)3、程序: (6)(1)数码管秒表显示程序: ...................................................- 6 -(2)1602液晶秒表显示程序:............................................ - 13 -五、系统的调试及设计结果..................................................... - 18 -1602液晶——秒表显示效果图:. (18)LED数码管——秒表显示效果图: (18)六、创新实验室课程设计小结................................................. - 19 -一、单片机简介单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。
51单片机秒表课程设计
51单片机秒表课程设计一、课程目标知识目标:1. 理解51单片机的基本原理,掌握其编程方法;2. 学习并掌握定时器/计数器在51单片机中的应用,理解其工作原理;3. 了解秒表的功能需求,掌握秒表的程序设计方法。
技能目标:1. 能够独立完成51单片机的程序编写,具备基本的编程能力;2. 能够运用定时器/计数器进行计时,完成秒表的实时显示功能;3. 能够分析和解决程序运行过程中出现的问题,具备一定的调试能力。
情感态度价值观目标:1. 培养学生的团队协作精神,提高沟通与交流能力;2. 增强学生对电子制作的兴趣,激发创新意识;3. 培养学生严谨、细心的学习态度,养成良好的编程习惯。
分析课程性质、学生特点和教学要求,将课程目标分解为以下具体学习成果:1. 学生能够掌握51单片机的基本原理和编程方法;2. 学生能够运用定时器/计数器实现秒表的计时功能;3. 学生能够通过团队协作,共同完成秒表的程序设计和调试;4. 学生能够对编程过程中遇到的问题进行分析和解决,提高自身调试能力;5. 学生能够体验电子制作的乐趣,培养创新意识和严谨、细心的学习态度。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 51单片机基础知识:- 单片机概述与51单片机的结构原理;- 51单片机的寄存器、I/O口及其编程方法;- 定时器/计数器的工作原理与应用。
2. 秒表功能需求分析:- 秒表的功能定义与需求分析;- 电路设计与硬件连接;- 软件设计框架及流程图。
3. 定时器/计数器的应用:- 定时器/计数器的工作模式;- 定时器/计数器的编程实现;- 秒表计时功能的具体实现。
4. 程序编写与调试:- 51单片机程序结构;- 程序编写技巧与调试方法;- 秒表程序编写与功能测试。
5. 教学案例与实战:- 案例分析:经典秒表程序剖析;- 实战练习:学生分组进行秒表的程序编写与调试;- 成果展示与评价。
教学内容安排和进度:第一课时:51单片机基础知识学习;第二课时:秒表功能需求分析与电路设计;第三课时:定时器/计数器的应用;第四课时:程序编写与调试;第五课时:教学案例与实战。
(完整版)基于51单片机的秒表设计1
实训报告题目秒表系统的设计年级专业班级学号姓名地点日期目录一,目⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 3 二,系硬件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4 三,系件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7 四,系与果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12 五,片机小⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13设计目标最近几年来跟着科学技术的发展,单片机的应用范围愈来愈广,也成为好多专业的必修课。
本文简单论述了鉴于单片机的秒表设计。
本设计的主要特色是计时精度达到 0.01 秒,能够用来为各样体育比赛计时等。
本设计的数字秒表采纳AT89才 51 单片机为主要器件,利用其准时器的原理,结LED数码管以及外面中止电路来设计计时器。
将软硬件联合起来,使得系统能实现 0~99.99 秒的计时,计时精度位 0.01 秒。
当按下一个键 1 时,开始显示数字,即计时开始,再按下键 2 时,暂停计时并显示方才的结果,这个时候假如再按键 1,则持续计时,也就是显示的数字包含方才的数据。
按下键 3 时,数据清零。
系统硬件设计1 、1整体方案的设计数字秒表拥有显示直观、读取方便、精度高等长处,在计时中宽泛应用。
本设计顶用单片机和数码管构成数字秒,力争构造简单。
设计中包含硬件电路的设计和系统程序的设计。
硬件电路主要有主控制器、控制按钮与显示电路构成。
主控制器采纳单片机AT89才 51,显示电路采纳四位共阴极数码管显示计不时间。
本设计利用 AT89才 51 单片机的准时器,使其能精准计时。
利用键盘上的独立按键实现开始计时和暂停以及清零。
P0口输出段码数据, P2.0~P2.2 连上译码器作为位选。
设计的基本要求是正确性。
计时器采纳 T0 中止实现,准时溢出中止周期为1ms,当溢出中止后向CPU 发出溢出中止恳求,每发出10 次中止恳求就对 10ms位(即最后一位)加一,达到 100 次就对 100ms位加一,以此类推,直到99.99s 为止。
c51电子秒表课程设计
c51电子秒表课程设计一、课程目标知识目标:1. 学生能够理解C51单片机的基础知识,掌握其编程方法。
2. 学生能够掌握电子秒表的基本原理,包括计时、暂停、清零等功能。
3. 学生能够了解并掌握电子秒表中的中断处理、定时器/计数器等硬件资源的使用。
技能目标:1. 学生能够运用C语言编写C51单片机程序,实现电子秒表的计时功能。
2. 学生能够通过实验操作,学会使用开发板、编译器等工具进行程序编写和调试。
3. 学生能够培养实际动手能力,独立完成电子秒表的搭建和调试。
情感态度价值观目标:1. 学生能够培养对电子制作的兴趣和热情,提高学习积极性。
2. 学生能够培养团队协作意识,学会与他人共同解决问题。
3. 学生能够认识到科技发展对社会进步的重要性,增强科技创新意识。
课程性质:本课程为实践性课程,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的C语言基础,对单片机有一定了解,但实践经验不足。
教学要求:教师需引导学生通过实际操作,掌握C51单片机编程和电子秒表制作技能,同时注重培养学生的情感态度价值观。
将课程目标分解为具体学习成果,以便在教学设计和评估中逐一实现。
二、教学内容1. 理论部分:- C51单片机基础知识:介绍C51单片机的结构、工作原理和编程环境。
- 中断处理和定时器/计数器:讲解中断的概念、中断处理过程,以及定时器/计数器的使用方法。
- 电子秒表原理:阐述电子秒表的计时原理、功能模块及其相互关系。
2. 实践部分:- C51编程实践:指导学生使用C语言编写电子秒表程序,掌握程序结构、函数调用等。
- 硬件搭建与调试:学生动手搭建电子秒表电路,学习电路连接、元件识别等,并进行程序下载和调试。
- 综合应用:结合所学知识,学生独立完成一个具有计时、暂停、清零等功能的电子秒表项目。
3. 教学大纲安排:- 第一课时:C51单片机基础知识学习,介绍教材相关章节内容。
- 第二课时:中断处理和定时器/计数器原理学习,结合教材实例进行讲解。
51单片机,实现秒表功能
严*****************************************************************************实现秒表功能说明:用5键控制.启动•停止・暂停.继续•清零采用中断控制方式.******************************************************************************/ #mclude<reg52.h>#inc lude<iiitrms.h> ^define uchar unsigned char ^define umt unsigned mt char cent=O;char second=0;char ininite=O;bit s2=0;bit s3=0;bit s4=0;bit s5=0;bit s6=0;严共阳数码管字型码引 严 0,1,2,3,4,5,6,7、&9,p ・,灭*/chai code dis_code[]={Oxc0,Oxf9,Oxa4>OxbO,0x99,0x92,0x82,0xf&0x80,0x90,0x0c,Ox 览Oxbf}; /*P 点显示代码序号可chai data fiiid_code[]={0,0.12.0,0,12,0.0};严*******************************************************/〃函 数名: void Delaylms(uint count)〃功能: 延时时间为Inis〃输入参数:countjms 计数 〃说明:总共延时时间为1 ms 乘以countxrystal= 12Mhz 严*******************************************************//*延迟函数*/void Delaylms(umt count) {uiiit j;wliile(count~!=0)foi(j=0;j<80:j++); }按S 2启动 按S3停止 按S4暂停按S 5继续按S6清零只有在清零或没有开始的情况下才有效 只有在启动的情况下才有效 只有在启动的情况下才有效 只有在暂停的情况下才有效 只有在停止的情况下才有效严***********************************************************************//*显示函数*/严***********************************************************************/ void dispQchar ij=Oxfe; chai- k; fbr(i=0;i<8;i-H-){P2=J ; k=find_code[i]; PO=dis_code[k]; Delaylms(l); j=_crol_(j4); }PO=Oxff;}*函数原型:keychuliQ; * 功 能:处理与键盘相连的Pl 丨1的内容,作为键值。
51单片机秒表程序设计
51单片机秒表程序设计1. 简介秒表是一种用于测量时间间隔的计时器,常见于体育比赛、实验室实验等场合。
本文将介绍如何使用51单片机设计一个简单的秒表程序。
2. 硬件准备•51单片机开发板•LCD液晶显示屏•按键开关•连接线3. 程序流程3.1 初始化设置1.设置LCD液晶显示屏为8位数据总线模式。
2.初始化LCD液晶显示屏。
3.设置按键开关为输入模式。
3.2 主程序循环1.显示初始界面,包括“00:00:00”表示计时器初始值。
2.等待用户按下开始/暂停按钮。
3.如果用户按下开始按钮,则开始计时,进入计时状态。
4.如果用户按下暂停按钮,则暂停计时,进入暂停状态。
5.在计时状态下,每隔1毫秒更新计时器的数值,并在LCD液晶显示屏上显示出来。
6.在暂停状态下,不更新计时器的数值,并保持显示当前数值。
3.3 计时器控制1.定义一个变量time用于存储当前的计时器数值,单位为毫秒。
2.定义一个变量running用于标记计时器的状态,0表示暂停,1表示运行。
3.定义一个变量start_time用于存储计时器开始的时间点。
4.定义一个变量pause_time用于存储计时器暂停的时间点。
5.在计时状态下,每隔1毫秒更新time的值为当前时间与start_time的差值,并将其转换为小时、分钟、秒的表示形式。
6.在暂停状态下,保持time的值不变。
3.4 按键检测1.检测按键开关是否被按下。
2.如果按键被按下,判断是开始/暂停按钮还是复位按钮。
3.如果是开始/暂停按钮,并且当前处于计时状态,则将计时状态设置为暂停状态,并记录暂停时间点为pause_time;如果当前处于暂停状态,则将计时状态设置为运行状态,并记录开始时间点为当前时间减去暂停时间的差值。
4.如果是复位按钮,则将计时器数值重置为0,并将计时状态设置为暂停。
4. 程序代码示例#include <reg51.h>// 定义LCD控制端口和数据端口sbit LCD_RS = P1^0;sbit LCD_RW = P1^1;sbit LCD_EN = P1^2;sbit LCD_D4 = P1^3;sbit LCD_D5 = P1^4;sbit LCD_D6 = P1^5;sbit LCD_D7 = P1^6;// 定义按键开关端口sbit START_PAUSE_BTN = P2^0;sbit RESET_BTN = P2^1;// 定义全局变量unsigned int time = 0; // 计时器数值,单位为毫秒bit running = 0; // 计时器状态,0表示暂停,1表示运行unsigned long start_time = 0; // 开始时间点unsigned long pause_time = 0; // 暂停时间点// 函数声明void delay(unsigned int ms);void lcd_init();void lcd_command(unsigned char cmd);void lcd_data(unsigned char dat);void lcd_string(unsigned char *str);void lcd_clear();void lcd_gotoxy(unsigned char x, unsigned char y);// 主函数void main() {// 初始化设置lcd_init();while (1) {// 显示初始界面lcd_clear();lcd_gotoxy(0, 0);lcd_string("00:00:00");// 等待用户按下开始/暂停按钮while (!START_PAUSE_BTN && !RESET_BTN);// 判断按钮类型并处理计时器状态if (START_PAUSE_BTN) {if (running) { // 当前处于计时状态,按下按钮将进入暂停状态 running = 0;pause_time = time;} else { // 当前处于暂停状态,按下按钮将进入计时状态running = 1;start_time = get_current_time() - pause_time;}} else if (RESET_BTN) { // 复位按钮按下,重置计时器time = 0;running = 0;}}}// 毫秒级延时函数void delay(unsigned int ms) {unsigned int i, j;for (i = ms; i > 0; i--) {for (j = 110; j > 0; j--);}}// LCD初始化函数void lcd_init() {lcd_command(0x38); // 设置8位数据总线模式lcd_command(0x0C); // 显示开,光标关闭lcd_command(0x06); // 光标右移,不移动显示器lcd_command(0x01); // 清屏}// 向LCD发送指令函数void lcd_command(unsigned char cmd) {LCD_RS = 0;LCD_RW = 0;LCD_EN = 1;LCD_D4 = cmd >> 4 & 1;LCD_D5 = cmd >> 5 & 1;LCD_D6 = cmd >> 6 & 1;LCD_D7 = cmd >> 7 & 1;delay(1);LCD_EN = 0;LCD_D4 = cmd >> 0 & 1;LCD_D5 = cmd >> 1 & 1;LCD_D6 = cmd >> 2 & 1;LCD_D7 = cmd >> 3 & 1;delay(1);LCD_EN = 0;}// 向LCD发送数据函数void lcd_data(unsigned char dat) { LCD_RS = 1;LCD_RW = 0;LCD_EN = 1;LCD_D4 = dat >> 4 & 1;LCD_D5 = dat >> 5 & 1;LCD_D6 = dat >> 6 & 1;LCD_D7 = dat >> 7 & 1;delay(1);LCD_EN = 0;LCD_D4 = dat >> 0 & 1;LCD_D5 = dat >> 1 & 1;LCD_D6 = dat >> 2 & 1;LCD_D7 = dat >> 3 & 1;delay(1);LCD_EN = 0;}// 向LCD发送字符串函数void lcd_string(unsigned char *str) {while (*str) {lcd_data(*str++);delay(5);}}// 清屏函数void lcd_clear() {lcd_command(0x01);}// 设置光标位置函数void lcd_gotoxy(unsigned char x, unsigned char y) {unsigned char addr;if (y == 0)addr = x | (0x80 + y);else if (y == 1)addr = x | (0xC0 + y);lcd_command(addr);}5. 总结本文介绍了使用51单片机设计一个简单的秒表程序。
单片机秒表系统课程设计
单片机秒表系统课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握单片机在秒表系统中的应用。
2. 学生能掌握计时器的原理,学会编写简单的计时器程序。
3. 学生了解并掌握秒表系统的硬件连接,能解释各个部分的作用及其相互关系。
技能目标:1. 学生能够运用所学知识,设计并搭建一个简单的单片机秒表系统。
2. 学生能够编写程序,实现对秒表的启动、停止、计时的基本功能。
3. 学生通过动手实践,提高解决问题的能力和团队合作能力。
情感态度价值观目标:1. 学生通过本课程的学习,培养对单片机及电子制作的兴趣,激发创新意识。
2. 学生在学习过程中,培养严谨的科学态度,养成良好的实验操作习惯。
3. 学生通过小组合作,学会分享、交流,培养团队协作精神。
本课程针对高中电子技术课程,结合学生年龄特点和认知水平,注重理论与实践相结合,旨在提高学生的动手实践能力和创新能力。
课程目标具体、可衡量,既关注学生对单片机知识的掌握,又注重技能的培养和情感态度价值观的引导,为后续教学设计和评估提供明确方向。
二、教学内容本课程教学内容主要包括以下几部分:1. 单片机基础知识:介绍单片机的原理、结构和功能,重点讲解51单片机的内部资源及其在秒表系统中的应用。
2. 硬件设计:讲解秒表系统所需硬件,包括单片机、时钟电路、按键、显示器等,分析各部分硬件的功能及相互关系。
3. 软件编程:学习单片机编程语言(C语言),掌握计时器编程方法,编写秒表的启动、停止、计时的程序。
4. 系统调试与优化:学习如何对秒表系统进行调试和优化,提高系统稳定性。
教学内容安排如下:1. 第一周:单片机基础知识学习,了解51单片机的内部资源。
2. 第二周:硬件设计,分析秒表系统各部分硬件功能及连接方法。
3. 第三周:软件编程,编写秒表程序,实现基本功能。
4. 第四周:系统调试与优化,提高系统性能。
本教学内容参考教材相关章节,结合课程目标,确保教学内容具有科学性、系统性和实践性。
51单片机数字秒表设计
标准文档单片机系统单片机系统课程设计目录第 1 章数字式秒表的设计介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯51.1 设计任务及功能要求说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯51.2 工作原理及其方法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5 第 2 章数字式秒表硬件系统的设计⋯⋯⋯⋯⋯⋯⋯72.1 数字式秒表硬件系统各模块功能简要介绍⋯⋯⋯72.1.1 AT89S52 简介⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.72.1.2 时钟电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.82.1.3 键盘电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯82.1.4 复位电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..92.1.5 驱动及显示电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯92.1.6 单片机下载口电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯102.2 数字式秒表的硬件系统设计图⋯⋯⋯⋯⋯⋯⋯11.2.2.1 电路原理图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.11.2.2.2 PCB 图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯11. 第 3 章数字式秒表软件系统的设计⋯⋯⋯⋯⋯⋯⋯.11.3.1 数字式秒表使用单片机资源情况⋯⋯⋯⋯⋯⋯113.2 主程序流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12.3.3 中断服务程序流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯123.4 显示程序流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯143.5 软件系统程序清单⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..14 第 4 章设计总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯154.1 数字式秒表的设计结论及使用说明⋯⋯⋯⋯⋯154.2 程序仿真与结果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.154.3 误差分析及解决方法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯16.. 总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯16 参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯17 附录⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯17第 1 章数字式秒表的设计介绍1.1 设计任务及功能要求说明由单片机接收小键盘控制递增计时,由LED 显示模块计时时间,显示格式为XX (分):XX(秒).XX ,精确到0.01s 的整数倍。
单片机秒表课程设计
能是矩阵键盘。
心得体会
处,在实际动手操作能力的不足,在进行程序编程时,自己需要,认真审题,
看懂题目的要求!对于软件编程不益太简单或者太难。
做到既能把课题完成又能锻炼自己的能力!根据课题要求,复习相关的知识,查询相关的资料。
根据课程条件,找到适合的方案,找到需要的元器件及工具,准备课程。
的基础上,根据芯片的功能写出相应的程序和增加额外的功能程序。
然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。
还要根据课程的实际情况,添加些额外程序来使系统更加的稳定,如开关的去抖(采用延迟)。
程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更
计的过程,更系统的锻炼了自己。
参考文献。
51单片机时钟秒表课程设计
51单片机时钟秒表课程设计
这个是我写的作业的方案,单片机课程结课作业,以下是我写的设计方案,写的不咋滴欢迎拍砖。
一、详细功能设计
1、基于51 单片机倒计时秒表,最大值为9999 秒,计时单位为0.1 秒;
2、计时的初始值为组员学号后4 位,键盘启动/停止计时;
3、设计多个按键,使用键盘选择不同成员的学号作为初始值。
二、8031 最小系统设计
1、最小系统设计原理图如图1.0 所示:
2、8031 最小系统概述;
8031 最小系统包含晶振电路与复位电路。
晶振选择12MHZ 晶振,晶振电容使用30pf 电容瓷片电容。
复位电路选择上电复位。
三、硬件设计
1、数码管电路
在本设计中,使用7 段共阴极数码管,选择数码管的型号为7SEG-MPX6- CC;
2、数码管片选电路;
由于本设计需要显示五位数字,同时为了驱动数码管,使用了74HC154 芯片。
与此同时,使用74HC154 芯片还可以扩展数码管显示数字的个数。
三、软件设计
1、程序流程图如图3.0 所示:
图3.0 程序流程图
2、程序流程说明
数码管显示和扫描键盘子函数放在0.1 秒的定时器中断里,而主函数的while(1)函数向数码管显示数据变量送数据。
数码管显示函数接受键盘状态,根。
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 !!!欢迎您的下载,资料仅供参考!。
51单片机秒表课程设计
51单片机秒表课程设计一、课程目标知识目标:1. 学生能理解51单片机的基本原理,掌握其编程方法。
2. 学生能掌握秒表功能的基本组成部分,如计时、暂停、复位等。
3. 学生能理解并应用中断、定时器等51单片机的相关知识。
技能目标:1. 学生能运用C语言编写51单片机程序,实现秒表功能。
2. 学生能通过实验操作,调试并优化程序,解决实际问题。
3. 学生能熟练使用相关开发工具和调试设备,如编译器、仿真器等。
情感态度价值观目标:1. 学生培养对单片机编程的兴趣,激发创新意识和实践欲望。
2. 学生培养良好的团队合作意识,学会互相交流、协作解决问题。
3. 学生培养严谨的科学态度,注重实验数据的真实性,勇于面对和克服困难。
课程性质:本课程为实践性课程,以项目为导向,结合理论知识与实际操作,培养学生的动手能力和编程思维。
学生特点:学生具备一定的电子基础和编程基础,对51单片机有一定了解,但对中断、定时器等高级功能尚不熟悉。
教学要求:教师需引导学生运用已学知识,通过实际操作,逐步掌握51单片机的编程和应用。
在教学过程中,注重培养学生的实际操作能力、问题解决能力和团队协作能力。
课程目标的设定旨在使学生在完成本项目后,能够独立设计并实现简单的单片机应用系统。
二、教学内容1. 理论知识:- 51单片机结构及工作原理- C语言编程基础:数据类型、运算符、控制语句等- 中断和定时器的原理与应用- 键盘输入与数码管显示原理2. 实践操作:- 使用Keil软件编写和编译程序- 使用STC89C52RC单片机进行程序下载和调试- 设计并实现秒表功能,包括计时、暂停、复位等3. 教学大纲:- 第一周:回顾51单片机基本原理,学习C语言编程基础- 第二周:学习中断和定时器知识,分析秒表功能需求- 第三周:设计程序框架,编写中断处理程序和定时器程序- 第四周:编写键盘输入和数码管显示程序,实现秒表功能- 第五周:项目调试、优化和展示4. 教材章节及内容:- 第一章:51单片机概述,了解单片机的发展及其应用- 第二章:C语言编程基础,掌握基本语法和数据类型- 第三章:中断和定时器,学习中断处理和定时器编程方法- 第四章:输入输出接口,学习键盘输入和数码管显示技术教学内容的选择和组织旨在保证学生能够系统地掌握51单片机编程及应用,注重理论与实践相结合,培养学生的实际操作能力。
51单片机秒表系统的设计
51单片机秒表系统的设计这个设计的原题要求如下:1.设计一个精度为0.1s的秒表系统。
2.设计启动按钮、暂停按钮及清零按钮。
3*.设计每到一秒钟有声音提醒功能,可通过按钮打开及关闭该提醒音。
运行图如下:程序代码如下:/****************************************************************************** ********************模块名称:51单片机简易秒表模块功能:实现精确到毫秒的简易秒表编写人员:mengkun编写日期:2016/12/18******************************************************************************* *******************/#include <reg51.h>#define false 0#define true 1#define uchar unsigned char //0——255#define uint unsigned int //0——65535#define ulong unsigned long //0——4294967295sbit start_key = P3^0; //启动按钮sbit pause_key = P3^1; //暂停按钮sbit reset_key = P3^2; //重置按钮sbit beep_key = P3^3; //声音按钮sbit start_led = P3^4; //启动指示灯sbit pause_led = P3^5; //暂停指示灯sbit beep_led = P3^6; //喇叭指示灯sbit beep = P3^7; //喇叭uchar disCode[10] = {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //数码管段码0~9 uchar locCode[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位码void displayTime(void); //刷新时间显示void disPlay(uchar num, uchar loc); //数码管、led显示函数void Delay1ms(unsigned int n); //延时1msuchar state; //状态:0-停止,1-启动,2-暂停ulong ms = 0; //存储毫秒值uchar fen = 0; //分钟数uchar miao; //秒数uchar ms2; //毫秒数的10位bit isBeep = false; //是否开启蜂鸣器/****************************************************************************** ** 函数名: T0_INT* 函数功能: T0定时器中断函数10ms* 输入: 无* 输出: 无******************************************************************************* /void T0_INT(void) interrupt 1{//这里不是减去10000是因为在C51单片机中,每执行一条语句需要花费1ms 时间。
51秒表课程设计
51秒表课程设计一、课程目标知识目标:1. 学生能理解秒表的基本概念,掌握其作为计时工具的使用方法和相关术语。
2. 学生能够运用秒表进行简单的时间测量,并准确读取时间数据。
3. 学生理解时间的单位换算,如秒、分、小时,并能在秒表上实现相应的操作。
技能目标:1. 学生能够熟练操作秒表,包括开始、停止、重置等功能。
2. 学生通过实践,培养准确计时的技能,提高实验操作的精确性。
3. 学生能够运用秒表进行日常生活中的时间管理,如学习时间分配、运动计时等。
情感态度价值观目标:1. 学生通过使用秒表,培养对时间的尊重和珍惜,形成良好的时间观念。
2. 学生在合作实验中,培养团队协作能力和公平竞争意识。
3. 学生通过时间测量活动,激发对科学探索的兴趣和热情。
分析课程性质、学生特点和教学要求,本课程目标注重实践操作与理论知识的结合,旨在帮助学生掌握秒表的使用,提高时间管理能力,并在活动中培养科学精神和团队协作。
课程目标的设定遵循具体、可衡量原则,以确保学生和教师能够明确课程预期成果,为后续教学设计和评估奠定基础。
二、教学内容本节教学内容围绕秒表的使用和应用,结合课本第三章“时间与测量”展开。
1. 秒表的基础知识:- 时间的基本单位及换算关系;- 秒表的构造、功能及使用方法;- 秒表示数读取与记录。
2. 秒表的实践应用:- 实验室内的计时操作;- 日常生活中的时间管理;- 运动比赛中的计时方法。
3. 教学内容的安排和进度:- 第一课时:秒表基础知识学习,包括时间单位、秒表结构及功能;- 第二课时:实践操作,学习秒表示数读取与记录,并进行计时练习;- 第三课时:结合实际情境,运用秒表进行时间管理,讨论时间管理的重要性;- 第四课时:探讨秒表在运动比赛中的应用,并进行实际操作。
教学内容的选择和组织确保了科学性和系统性,旨在帮助学生从理论知识到实践操作的过渡,使学生在掌握秒表知识的基础上,能够灵活应用于日常生活和实验中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微控制器技术课程设计报告设计题目:秒表专业:供用电技术班级:供电141学号:*********姓名:***指导教师:**设计时间:2016.6.21微控制器技术课程设计任务书设计题目:秒表设计时间:2016.6.20设计任务:在单片机开发板或软件仿真,编制程序,实现以下功能1、利用定时器实现秒表功能,精确到0.1S;2、数码管显示当前计时时间;3、设定三个键,计时开始,停止计时和复位清零。
背景资料:1、单片机原理与应用2、检测技术3、计算机原理与接口技术进度安排:1、第1天,领取题目,熟悉设计内容,分解设计步骤和任务;2、第3天,规划设计软硬件,编制程序流程、绘制硬件电路。
3、第5天,动手制作硬件电路,或编写软件,并调试。
4、第7天,中期检查。
5、第9天,完善设计内容,书写设计报告。
6、第13天,提交设计报告,整理设计实物,等待答辩。
7、第14天,设计答辩。
目录一、设计任务和要求 (3)(1)设计任务 (3)(2)设计要求 (3)二、设计方案与论证 (3)三、单元电路设计与参数计算 (4)(1)时钟电路 (4)(2)按钮电路 (4)(3)显示电路 (5)(4)单片机 (5)四、原理图及器件清单 (6)( 1 )总原理图 (6)(2)PCB图 (7)(3)Proteus仿真图 (7)(4)元器件清单 (8)五、安装与调试 (8)(1)安装 (8)(2)调试 (8)六、性能测试和分析 (9)七、结论和心得 (9)八、参考文献 (9)题目:秒表二、方案设计与论证本设计分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。
其模块电路如图2-1所示。
时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式比较简单。
按钮电路中的“复位”按钮是按键手动复位,它有电平和脉冲两种方式,比较电路的复杂程度,本设计选择了按钮电平复位电路,其他几个按钮则是通过单片机判断高低电平的不同来控制按钮。
显示电路所用的数码管有共阴和共阳之分,不管使用何种数码管,P0口作为I/O使用时都是需要上拉电阻才能驱动数码管。
另外,因为单片机的4个并行I/O口的输出电流一般是1mA,短路电流为4mA左右,而数码管的最少驱动电流也需要10mA,因而不管在使用共阴数码管时,单片机输出口也必须使用上拉电阻提高输出电流,才能驱动数码管。
为了使电路简单化,本设计选用共阳数码管。
但根据显示方式的不同选择,我们可以有几种方案:方案一:使用静态显示方式。
静态显示方式下的数码管的显示字符一经确定,相应锁存器锁存的断码输出將维持不变,直到送入另一个字符的断码为止。
因而此设计中使用的显示位数使用了三个8位并行I/0口。
如果另外想扩展单片机功能,则能使用的输出管脚很是有限。
方案二:使用动态显示方式。
这个显示方式是将所有显示位的段码线的相应段并联在一起,由一个8位I/O口控制,而各位的共阴或共阴极分别由相应的I/O线控制,形成各位的分时选通。
这种显示方式,简化了硬件电路,特别在多位数码管显示时尤为突出。
本小组尝试了各种方案,在此报告中以静态显示方式为例说明。
(动态显示方式省略)三、单元电路设计与参数计算注://单元电路设计中的网络标号的数字即为单片机的管脚//(1)时钟电路图3-1时钟电路如图3-1所示,时钟电路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也就越快。
晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中的电容C1、C2选择为30pF左右。
该电容的的大少会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。
(2)按钮电路图3-2a 图3-2bA、复位按钮根据计算容抗的公式1Xjwc以及并联电阻变小的性质,可以知道,当S13断开时,C3的容抗大,管脚9处的电位U9为电阻R3上的压降,因而U9为低电平,复位键无效。
当S13按下时,R2与C3的并联阻抗变小,R3上的压降增大,U9为高电平,复位键有效,实现复位功能。
本设计中C3取值22uF,电阻R2取值100欧姆,R3取值1K欧姆。
具体电路如图3-2a所示。
B、开始,停止、翻页按钮电路如图3-2b所示(3)显示电路P1口控制显示的是十位,p0口控制显示的是个位,P2口控制显示的是十分位。
不同的数码管显示方式,对应的最适合的共阴或者共阳级的数码管也不同。
静态显示的适宜选共阳的数码管,动态显示的适宜选共阴的数码管。
如果动态显示方式下选择共阳的数码管,位选端直接用单片机驱动则数码管的亮度不够,因而应该在位选端使用上拉电阻以提高数码管的驱动电流,但因为显示那个的数据段选的数目不同,故而需要用电阻对各段进行限流,以保证显示的每个数据亮度相同。
相同情况下,静态显示的数码管的亮度要比动态的亮。
(4)单片机单片机的程序可用汇编语言也可用C语言,为了提高使用汇编语言的能力,本设计特用了汇编语言了编写程序主程序流程图如下所示,具体程序见电子档。
主程序流程图:四、总原理图及元器件清单 (1)总原理图程序开始程序初始化P1.7=?0开各中断P3.3=?0计五次?翻页调用显示子程序关定时器复位(2)PCB图(3)Proteus仿真图(4)元器件清单1) AT89C51的引脚图和数码管5101BS的引脚图图4-3a AT89C51引脚图图4-3b 5101引脚图2)元器件总清单五、安装与调试(1)安装制板的顺序依次是:画原理图、做封装、在原理图中添加元器件对应的封装、布PCB 板、改焊盘大少、打印PCB图、用快速制板机将PCB图烤制到铜板上、腐蚀铜板、钻孔、放置元器件、烙铁焊好器件。
一块电路板就安装完毕了。
(2)调试将外部电源接至电路板上,检验电路板是否完全实现设计要求。
本设计中,发现按钮功能完全符合设计要求,但是数码管的显示中有些段码不亮,从而显示的数据乱码,用万用表检测对应的管脚是否有电压,发现焊盘有虚焊,引脚与引脚之间有短路,排查后电路板实现设计要求。
六、性能测试与分析所制电路板虽然能实现设计中要求的功能,但是在实际使用中还是存在着许多缺陷。
这块电路板不能随意查看记录的数据,而是必须在计完五次数据后才能依次的翻页查看,复位后所计数据便会丢失,不能翻看历史,所计数据组数不能满足现实需要。
七、结论与心得单片机是我所学专业的主要课程之一,不仅培养了我综合运用所学知识,发现,提出,分析和解决实际问题的能力,而且提高了我实际动手操作能力.现实生活中,单片机在应用可以说得是无处不在。
因此在大学中说掌握单片机的开发技术是十分重要的,也是十分必要的。
我在刚刚拿到课程设计题目时有点迷惘,毕竟在前八周的理论学习中没有扎实的掌握单片机的理论知识,面对一块块的芯片和五颜六色的导线,不知道如何下手,好在通过上网和图书馆查阅相关资料,自己认真钻研以及虚心询问同学,终于咸鱼大翻身,游逆而上,解决了一个又一个的困难和障碍,成功完成了任务。
通过本次的单片机课程设计,不仅丰富了我的理论知识,而且在实践过程中更令我学会了坚持、耐心和努力。
此次单片机课程设计需要运用到许多之前所学过的知识,令我认识到自己以前学习的一些不足之处,例如对以前所学知识的理解不够深刻,掌握得不够牢固,运用不够灵活。
这让我懂得了认真学习的重要性,以及要孜孜不倦地钻研所学过的知识,做得融会贯通,不能一览而过,不求甚解。
在边学习边动手的过程中,我对89C51单片机的构造以及原理有了进一步的了解,同时也加深和巩固了我对单片机汇编语言的认识。
除此之外,由于是第一次做单片机,因此在此次课程设计的过程中,无论是电路绘制还是汇编语言编写都难免遇到了不少困难和障碍,例如汇编语言编写出错、电路元件无从入手等。
在面对困难和障碍时,我庆幸自己没有选择退缩和逃避,而是通过各种方法,迎难而上,以坚持、耐心和努力勇敢无畏地面对困难,克服困难,解决困难。
让我发现问题、分析问题、解决问题以及动手实践的能力都有了很大的提高,并了解到理论知识与实践相结合的重要意义。
从这次的课程设计中,我才真正明白理论结合实际的道理,在以后的学习中,更要把理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机即是如此,出色的程序最终用实际操作来实现才是完美。
十分庆幸拥有这次课程设计,让我受益匪浅。
八、参考文献(1)单片机原理及接口技术张毅刚彭喜元著人民邮电出版社(2)单片机课程设计实例指导李光飞等编著北京航空航天大学出版社(3)51系列单片机原理、开发与应用实例孙进平等编著(4)单片机程序设计实例先锋工作室编著清华大学出版社(5)电子工程师之家、豆丁网、百度、搜狗、电子工程专辑等等附程序如下:D EQU 60HE EQU 61HF EQU 62HG EQU 63HH EQU 64HI EQU 65HORG 0000HLJMP MAINORG 000BH ;定时器T0的入口地址LJMP DINGSHIORG 0013H ;外部中断1的入口地址LJMP STOP1ORG 0030H ;主程序入口地址MAIN: MOV P0,#0C0H ;置初值MOV P2,#0C0HMOV P1,#0C0HMOV DPTR,#TABLE ;数据指针指向表头地址SETB EA ;开中断SETB EX0SETB EX1SETB ET0SETB PX0 ;设中断优先级SETB PX1MOV TMOD,#01H ;工作方式为方式1 START: MOV R0,#40HMOV R1,#50HMOV R2,#00HCLR P1.0MOV TH0,#0D8H ;置计数初始值MOV TL0,#0F0HMOV R3,#00HMOV R4,#00HMOV R7,#00HMOV B,#10MOV SP,#30HMOV D,#60HMOV E,#61HMOV F,#62HMOV G,#63HMOV I,#65HMOV R5,#05XUNHUAN: JB P1.7,START1 ;p1.7=0是开始 LCALL DELAY10 ;按键消抖JB P1.7,XUNHUANJNB P1.7,$LJMP GN1LJMP XUNHUANSTART1: JB P3.0,XUNHUANLCALL DELAY10JB P3.0,XUNHUANJNB P3.0,$LCALL FANYELJMP XUNHUANFANYE: MOV A,@R0MOV R3,AMOV A,@R1MOV R4,ADEC R5CJNE R5,#04,LOP1MOV A,DMOV R7,ALJMP L1LOP1: CJNE R5,#03,LOP2MOV A,EMOV R7,ALJMP L1LOP2: CJNE R5,#02,LOP3MOV A,FMOV R7,ALJMP L1LOP3: CJNE R5,#01,LOP4MOV A,GMOV R7,ALJMP L1LOP4: CJNE R5,#00,FANYEMOV A,IMOV R7,ALJMP L1L1: INC R0INC R1INC R2CJNE R2,#5,LOOP2MOV R0,#40HMOV R1,#50HMOV R2,#00HLOOP2:LCALL XIANSHIRETGN1: SETB TR0 LOOP: CJNE R2,#05H,LOOPMOV R0,#40HMOV R1,#50HMOV R2,#00HCLR EAAJMP XUNHUAN DELAY1: MOV R6,#2DL1: MOV H,#248DJNZ H,$DJNZ R6,DL1RETDELAY10: MOV R6,#20DL2: MOV H,#248DJNZ H,$DJNZ R6,DL2RETSTOP1 : PUSH ACCPUSH PSWLCALL DELAY10 ;延时10毫秒消抖 JB P3.3, FAN1JNB P3.3,$MOV A, R3MOV @R0 , AMOV A, R4MOV @R1, ADEC R5CJNE R5, #04, LOP5MOV A, R7MOV D, ALJMP L4LOP5: CJNE R5, #03, LOP6MOV A, R7MOV E, ALJMP L4LOP6: CJNE R5, #02, LOP7MOV A, R7MOV F, ALJMP L4LOP7: CJNE R5, #01, LOP8MOV A, R7MOV G, ALJMP L4LOP8: CJNE R5, #00, STOP1MOV A, R7MOV I,ALJMP L4L4: INC R0INC R1INC R2FAN1: POP PSWPOP ACCRETIXIANSHI:MOV A ,R3 ;扫描十分位上的数字 MOV DPTR ,#TABLEMOVC A ,@A+DPTRMOV P2 ,AMOV A ,R4 ;扫描个位上的数字MOV DPTR ,#TABLEMOVC A ,@A+DPTRMOV P0 ,AMOV A ,R7 ;扫描十位上的数字MOV DPTR ,#TABLEMOVC A ,@A+DPTRMOV P1 ,ARETDINGSHI:PUSH ACCPUSH PSWDJNZ B,DH1MOV B,#10AJMP COUNTCOUNT: INC R3CJNE R3,#0AH,DH2MOV R3,#00HINC R4CJNE R4,#0AH,DH2MOV R4,#00HINC R7CJNE R7,#0AH,DH2MOV R7,#00HDH1: MOV TH0,#0D8HMOV TL0,#0F0HSETB TR0DH2: POP PSWPOP ACCLCALL XIANSHIRETITABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END。