51单片机定时器秒表设计程序

合集下载

51单片机流水灯、数码管、定时器、秒表、计算器程序

51单片机流水灯、数码管、定时器、秒表、计算器程序

51单片机流水灯、数码管、定时器、秒表、计算器程序流水灯 #include<reg52.h>char data_group[]={0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e};unsigned int a;void delay(unsigned int time) {int i,j;for(i=time;i>0;i--){for(j=100;j>0;j--);}}void move_mid_side(void) {int m;for(m=0;m<7;m++){P1=data_group[m];delay(500);}}void move_right_only(void) {int a,temp;delay(500);temp=0x80;for(a=7;a>=0;a--){temp=~temp;P1=temp;delay(500);temp=~temp;temp>>=1;}temp=0x80;delay(1000);}void move_left_only(void) { int a,temp;delay(500);temp=0x01;for(a=7;a>=0;a--){temp=~temp;P1=temp;delay(500);temp=~temp;temp<<=1;}temp=0x01;delay(1000);}void move_right_hlod(void) { int a,temp;temp=0x7f;for(a=8;a>=0;a--){P1=temp;delay(500);temp=temp>>1;}temp=~temp;delay(1000);}void move_left_hold(void) { int a,temp;temp=0xfe;for(a=8;a>=0;a--){P1=temp;delay(500);temp<<=1;}temp=~temp;delay(1000);}void main(){while(1){move_left_hold();move_mid_side();move_right_hlod();move_mid_side();move_left_only();move_right_only();}}数码管 #include <reg52.h>chardata_duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9 char data_wei[]={0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00}; //0xff全关,之后为第一个数码管到第八个数码管//char data_wei_add[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};void delay(unsigned int time) {int i,j;for(i=time;i>0;i--){for(j=0;j<100;j++);}}void show_number_only(void){int i;P2=data_wei[1]; //P2为位选for(i=0;i<10;i++){P0=data_duan[i]; //P0为段选delay(500);}}/*******************数码管动态显示子程序***************/ void move_show1(void){int i;for(i=1;i<2;i++){P2=data_wei[i];P0=data_duan[i];delay(1);}}void move_show2(void){int i;for(i=1;i<3;i++){P2=data_wei[i];P0=data_duan[i];delay(1);}}void move_show3(void) {int i;for(i=1;i<4;i++){P2=data_wei[i];P0=data_duan[i]; delay(1);}}void move_show4(void) {int i;for(i=0;i<5;i++){P2=data_wei[i];P0=data_duan[i]; delay(1);}}void move_show5(void) {int i;for(i=0;i<6;i++){P2=data_wei[i];P0=data_duan[i]; delay(1);}}void move_show6(void) {int i;for(i=0;i<7;i++){P2=data_wei[i];P0=data_duan[i]; delay(1);}}void move_show7(void) {int i;for(i=0;i<8;i++){P2=data_wei[i];P0=data_duan[i]; delay(1);}}void move_show8(void) {int i;for(i=0;i<9;i++){P2=data_wei[i];P0=data_duan[i];delay(1);}}/********数码管动态显示,实现数码管由1~8在八个数码管上一次显示************/void move_show_hold(void){int temp,i;temp=1000;for(i=temp;i>0;i--)move_show1();temp=600;for(i=temp;i>0;i--)move_show2();temp=400;for(i=temp;i>0;i--)move_show3();temp=200;for(i=temp;i>0;i--)move_show4();temp=200;for(i=temp;i>0;i--)move_show5();temp=200;for(i=temp;i>0;i--)move_show6();temp=100;for(i=temp;i>0;i--)move_show7();temp=100;for(i=temp;i>0;i--)move_show8();}void show_all(void) //将所有的位选端口打开,变化段选,显示整体变化1~9{int i;P2=data_wei[9];for(i=0;i<10;i++){P0=data_duan[i];delay(500);}}int main(void) {while(1){// show_number_only();move_show8();//move_show_hold(); // show_all(); }}独立按键#include <reg52.h>sbit key1=P3^0; sbit d2=P1^0;int temp,number=0;void delay(unsigned int time) {int i,j;for(i=time;i>0;i--){for(j=100;j>0;j--) ;}}int main(void) {temp=0xfe;while(1){d2=1;key1=1;P1=temp;if(key1==0){delay(100);if(key1==0){number++;if(number<=7){temp=~temp;temp=temp<<1;temp=~temp;P1=temp;}else{temp=0xfe;number=0;}}}}}矩阵按键 #include<reg52.h>chardata_duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80 ,0xc6,0xc0,0x86,0x8e,};//0~9 chardata_wei[]={0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00};int number=0;void delay(unsigned int time) {int i,j;for(i=time;i>0;i--){for(j=0;j<100;j++);}}//void move_show1(void)//{// int i;// for(i=1;i<2;i++){ // P2=data_wei[i]; // P0=data_duan[i]; // delay(1);// }//}//void move_show2(void)//{// int i;// for(i=1;i<3;i++){ // P2=data_wei[i];// P0=data_duan[i]; // delay(1);// }//}void scan_key(void){int temp;P1=0xfe;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(1);temp=P1;temp=temp&0xf0;while(temp!=0xf0){switch(temp){case 0xe0:number=12;break; case 0xd0:number=13;break; case 0xb0:number=14;break; case 0x70:number=15;break; }while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfd;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(1);temp=P1;temp=temp&0xf0;while(temp!=0xf0){switch(temp){case 0xe0:number=8;break; case 0xd0:number=9;break; case 0xb0:number=10;break; case 0x70:number=11;break; }while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfb;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(1);temp=P1;temp=temp&0xf0;while(temp!=0xf0){switch(temp){case 0xe0:number=4;break; case 0xd0:number=5;break; case 0xb0:number=6;break; case 0x70:number=7;break; }while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xf7;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(1);temp=P1;temp=temp&0xf0;while(temp!=0xf0){switch(temp){case 0xe0:number=0;break; case 0xd0:number=1;break; case 0xb0:number=2;break; case 0x70:number=3;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}// return number;}int main(void){// int num=0;while(1){// num=scan_key(num);scan_key();P2=data_wei[1];P0=data_duan[number];}}定时器中断 #include <reg52.h>chardata_duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9 char data_wei[]={0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00}; //0xff全关,之后为第一个数码管到第八个数码管int number=0,time=0;int main(void){// TMOD=0x01;//设置工作方式定时器0// TH0=(65536-50000)/256; //给计数器装初值 // TL0=(65535-50000)%256;// EA=1; //开总中断 // ET0=1; //定时器T0中断允许 // TR0=1; //启动定时器0TMOD=0x10;//设置工作方式定时器1TH1=(65536-50000)/256; //给计数器装初值TL1=(65535-50000)%256;EA=1; //开总中断ET1=1; //定时器T1中断允许TR1=1; //启动定时器1while(1){if(number==20){P2=data_wei[2];P0=data_duan[4];}if(time==40){P2=data_wei[0];number=0;time=0;}}}void exter3() interrupt 3{TH1=(65536-50000)/256; //给计数器装初值TL1=(65535-50000)%256;time++;number++;}//void exter1() interrupt 1//{// TH0=(65536-50000)/256; //给计数器装初值 // TL0=(65535-50000)%256;// time++;// number++;//}时钟 #include <reg52.h>chardata_duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9 char data_wei[]={0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00};unsigned long int second=0,minute=0,hour=0,point=0,tip=0;unsigned long int time=0,sign=0,number=0,key=0,variable=0; unsigned long int S1=0,S2=0,M1=0,M2=0,H1=0;H2=0;void delay(unsigned int time) {int i,j;for(i=time;i>0;i--){for(j=0;j<100;j++);}}void key_scan(void){int temp; //应用按键检测P1=0xf7;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(1);temp=P1;temp=temp&0xf0;while(temp!=0xf0){switch(temp){case 0xe0:number=1;break; case 0xd0:number=2;break; case 0xb0:number=3;break; case 0x70:number=4;break; }while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}// P1=0xfb;// temp=P1;// temp=temp&0xf0; // while(temp!=0xf0){ // delay(1);// temp=P1;// temp=temp&0xf0; // while(temp!=0xf0){ // switch(temp){ // case 0xe0:number=5;break; // case 0xd0:number=6;break; // case0xb0:number=7;break; // case 0x70:number=8;break; // } // while(temp!=0xf0){ // temp=P1;// temp=temp&0xf0; // }// }////// }}void adjust_alarm(void) {if(number==1){ //控制时钟的启动与停止key=!key;if(key==1){EA=0;variable=time;}if(key==0){EA=1;}number=0;}if(number==2){ //调节时间选择标志位tip=tip+1;tip=tip%6;if(tip==0){tip=6;}number=0;}if((number==3)&&(EA==0)){if(tip==1)time=time-1;if(tip==2)time=time-10;if(tip==3)time=time-60;if(tip==4)time=time-600;if(tip==5)time=time-3600;if(tip==6)time=time-36000;number=0;}if((number==4)&(EA==0)){if(tip==1)time=time+1;if(tip==2)time=time+10;if(tip==3)time=time+60;if(tip==4)time=time+600;if(tip==5)time=time+3600;if(tip==6)time=time+36000;number=0;}// if((number==5)&&(EA==0)){ // if(tip==1) // variable=variable-1; // if(tip==2)// variable=variable-10; // if(tip==3)// variable=variable-60; // if(tip==4)// variable=variable-600; // if(tip==5)// variable=variable-3600; // if(tip==6)// variable=variable-3600; // number=0;// }// if((number==6)&(EA==0)){ // if(tip==1)// variable=variable+1; // if(tip==2)// variable=variable+10; // if(tip==3)// variable=variable+60; // if(tip==4)// variable=variable+600; // if(tip==5)// variable=variable+3600; // if(tip==6)// variable=variable+36000; // number=0;// }}void compare_time(void){if(time>variable){;}}void alarm_show_s(void){int sign2;for(sign2=1;sign2<2;sign2++){ //数码管动态显示S1=second%10;P2=data_wei[sign2];P0=data_duan[S1];delay(1);}for(sign2=2;sign2<3;sign2++){ S2=second/10;P2=data_wei[sign2];P0=data_duan[S2];delay(1);}for(sign2=3;sign2<4;sign2++){ P2=data_wei[sign2];P0=0xbf;delay(1);}for(sign2=4;sign2<5;sign2++){ M1=minute%10;P2=data_wei[sign2];P0=data_duan[M1];delay(1);}for(sign2=5;sign2<6;sign2++){ M2=minute/10;P2=data_wei[sign2];P0=data_duan[M2];delay(1);}for(sign2=6;sign2<7;sign2++){P2=data_wei[sign2];P0=0xbf;delay(1);}for(sign2=7;sign2<8;sign2++){H1=hour%10;P2=data_wei[sign2];P0=data_duan[H1];delay(1);}for(sign2=8;sign2<9;sign2++){H2=hour/10;P2=data_wei[sign2];P0=data_duan[H2];delay(1);}}void record_set_alarm(void) //设定闹钟所改变的值 { second=variable%60;minute=variable/60%60;hour=variable/3600%24;if(hour==24){variable=0;}}void record_time(void) {second=time%60;minute=time/60%60; hour=time/3600%24;if(hour==24){time=0;}}int main(void){TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;while(1){record_time();// record_set_alarm(); alarm_show_s();key_scan();adjust_alarm();}}void extern1() interrupt 1 //定时器中断0 { TH0=(65536-50000)/256; //重装值TL0=(65536-50000)%256;sign++;if(sign==20){time++;sign=0;}}。

c51数字秒表课程设计

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单片机的数字秒表课程设计

基于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单片机秒表课程设计

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单片机秒表程序

51单片机秒表程序
TH0=0Xd8;//给定时器赋初值,定时10ms
TL0=0Xf0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
}
/*******************************************************************************
case(7):
LSA=0;LSB=0;LSC=0; break;//显示第0位
}
P0=DisplayData[i];//发送段码
delay(100); //间隔一段时间扫描
P0=0x00;//消隐
}
}
void datapros()
{
DisplayData[0]=smgduan[min/10];
DisplayData[1]=smgduan[min%10];
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
void main()
{
Timer0Init(); //定时器0初始化
while(1)
{
datapros();
DigDisplay();
}
}
/*******************************************************************************

(完整版)基于51单片机的秒表设计1

(完整版)基于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 为止。

基于51单片机的秒表设计报告

基于51单片机的秒表设计报告

课程名称:微机原理课程设计题目:基于51单片机的秒表设计随着社会的发展,单片机已经渗透到我们生活中的各个领域,广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等。

本设计就是由单片机STC89C52RC芯片和四位一体LED数码管为核心,辅以必要的电路,构成了一个单片机电子秒表。

秒表是一种常用的测试仪器,它可以用在百米赛跑等需要精确计时的地方,为人们的生活提供了很大的方便。

该单片机电子秒表布置合理,全部器件分布在7*9cm洞洞板上,看起来小巧精简。

采用的是单片机内部定时/计数器计时,走时非常精确而且不易出错。

0.56英寸的四位数码管发出红光,可以直观地显示时间。

一个控制按键就可以控制秒表的计数与停止,按一下控制键,秒表工作状态就由计时变为计时变为停止或停止变为计时,按一下清零键就可以清零,操作非常简单。

由于是四位数码管,它的计时周期为100秒,显示满刻度为99:99秒,从左往右数共四位,前两位显示整数部分,后两位显示小数部分,中间两个个秒闪灯(秒闪灯一直亮)。

关键词:秒表,51单片机,C语言一、设计任务与要求 (18)1.1 设计任务 (18)1.2 设计要求 (18)二、方案总体设计 (19)2.1 方案一 (19)2.2 方案二 (19)2.3 系统采用方案 (19)三、硬件设计 (21)3.1 单片机最小系统 (21)3.2 数码管显示模块 (21)3.3 系统电源 (22)3.4 整体电路 (22)四、软件设计 (24)4.1 keil软件介绍 (24)4.2 系统程序流程 (24)五、仿真与实现 (27)5.1 proteus软件介绍 (27)5.2 仿真过程 (27)5.3 实物制作与调试 (29)5.4 使用说明 (30)六、总结 (32)6.1设计总结 (32)6.2经验总结 (20)七、参考文献 (21)一、设计任务与要求1.1 设计任务1).对更多小器件的了解2).巩固51单片机和C语言的知识,熟悉单片机和C语言的实际操作运用3).掌握仿真软件的运用和原理图的绘制4).加深焊接的技巧,提高焊接的能力5).熟悉调试方法和技巧,提高解决实际问题的能力6).熟悉设计报告的编写过程1.2 设计要求1).清零键进行清零2).一个独立按键进行停止与运行的操作3).秒闪灯一直亮二、方案总体设计设计一个基于51单片机的秒表。

51单片机秒表程序设计

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单片机设计一个简单的秒表程序。

基于51单片机的数字秒表设计(最新整理)

基于51单片机的数字秒表设计(最新整理)
本设计在选取单片机时,充分借鉴了许多成型产品使用单片机的 经验。并根据自己的实际情况,选用了 ATMEL 公司的 AT89S52。
ATMEL 公司的 89 系列单片机以其卓越的性能、完善的兼容性、 快 捷 便 利 的 电 擦 写 操 作 、 低 廉 的 价 格 完 全 替 代 了 87C51/62 和 8751/52,低电压、低功耗,有 DIP、PLCC、QFP 封装,是目前性 能最好、价格最低、最受欢迎的单片机之一。
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST/VPD P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
XTAL2 XTAL1
VSS
VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 VPP ALE PSEN P2.7 P2.6 P2.5 P2.4 P2.3
AT89S52 为 40 脚双列直插封装的 8 位通用微处理器,采用工业 标准的 C51 内核,在内部功能及管脚排布上与通用的 8XC52 相同, 其主要用于汇聚调整时的功能控制。功能包括对汇聚主 IC 内部寄存 器、数据 RAM 及外部接口等功能部件的初始化,汇聚调整控制,汇 聚测试图控制等。 单片机外部结构 AT89S52 单片机采用 40 脚的 DIP 封装,如下所示。
数码管显示可以分为静态显示和动态显示两种。由于本设计需要 采用四位数码管显示时间,如果静态显示则占用的口线多,硬件电路 复杂,所以采用动态显示。
动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示
器的方式称为位扫描。通常各位数码管的段选线相应并联在一起,由 一个 8 位的 I/O 口控制;各位的公共阴极位选线由另外的 I/O 口线控 制。动态方式显示时,各数码管轮流选通,要使其稳定显示必须采用 扫描方式,即在某一时刻只选通一位数码管并送出相应的段码,在另 一时刻选通另一数码管,并送出相应的段码,依次规律循环,即可以 使各位数码管显示将要显示的字符,虽然这些字符是在不同时刻分别 显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可 以给人同时显示的感觉。

51单片机数字秒表设计

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单片机秒表计时器课程设计报告(含C语言程序).

51单片机秒表计时器课程设计报告(含C语言程序).

XXXXXX学院51单片机系统设计课程设计报告题目:秒表系统设计专业、班级:学生姓名:学号:指导教师:分数:[摘要]本设计是一个秒表计时器,采用51单片机实现。

电路包括以下几部分:单片机最小系统部分,数码管显示部分,摁键开关部分部分。

电路选用共阴型4位数码管组成时钟显示电路;时钟的增减控制以及清零部分主要由轻触开关构成的摁键系统组成;信号接收和处理部分主要由单片机来执行。

接通电源后,秒表计时器处于初始状态,4位数码管显示000.0。

当摁下“开始”开关时,秒表开始计时,数码管显示当前状态的时间。

当再次摁下开关时,数码管停止计时。

摁下“清零”键后,系统重新回到初始状态。

[关键词]单片机最小系统秒表计时摁键控制1、任务设计一个秒表计时器,在51单片机的控制作用下,采用4个LED数码管显示时间,计时范围设置为00.0~60.0秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。

2、设计要求(1)开始时显示00.0。

每按下S1键一次,数值加1s;(2)每按下S2键一次,数值减1s;(3)每按下S3键一次,数值清零;(4)每按下S4键一次,启动定时器使数值开始自动每秒加1,再次按下S4键,数值停止自动加1,保持显示原数。

3、发挥部分(1)开关按键3:“复位60.0”按键(用来60秒倒计时)。

按键按下去时数码管复位为“60.0”(用于倒计时)。

(2)开关按键4:倒计时“逐渐自减”按键。

按键按下去则是数码管开始“逐渐自减”倒计时。

(3)开关按键5:倒计时初始值“增加”按键。

(4)开关按键6:倒计时初始值“减小”按键。

4、课程设计的难点单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现LED 的动态扫描显示;三是如何对键盘输入进行编程。

51单片机秒表定时器

51单片机秒表定时器
sbit a138 = P2^2; //定义译码器输入端A 在 P2.2 管脚上
sbit b138 = P2^3; //定义译码器输入端B 在 P2.3 管脚上
sbit c138 = P2^4; //定义译码器输入端C 在 P2.4 管脚上
sbit scl=P2^0; //24C02串行时钟
sda=write_data&0x80;
scl=1;
nop5;scl=0;nop5;
write_data<<=1;
}
sda=1; //释放sda,等待24c02将其拉高确定写入
scl=1; //在scl上升沿中检测sda
nop5;
ack=sda;
scl=0; //完成写操作的第九个时钟周期
switch(site)
{
case 1: numcode=0;a138=1;b138=1;c138=1;break;
// case 2: numcode=0;a138=0;b138=1;c138=1;break;
case 3: numcode=0;a138=1;b138=0;c138=1;break;
while(temp!=0xff)
{
temp=alonekeyboard;
switch(temp)
{
case 0x7f:alonekeynum=8;break;
case 0xbf:alonekeynum=7;break;
case 0xdf:alonekeynum=6;break;
}
}
}
return alonekeynum;
}
void main ()

利用51单片机制作一个秒表的详细过程

利用51单片机制作一个秒表的详细过程

利用51单片机制作一个秒表的详细过程利用51单片机制作一个秒表的详细过程前面的话:和很多朋友一样,在学51单片机的过程中我们肯定会涉及到制作一个秒表,牵涉到把单片机的多个部分组合起来使用,这对于我们初学者来说可能显得有些困难,我同大家一样,百思不得其解,最后头都弄大了才把这个秒表制作出来,为了给以后的朋友们一些思路,一些参考,所以在这里我把自己制作的整个详细过程整理出来供大家参考。

我调试出来是没有问题的,各方面都稳定运行,由于我水平有限,中间可能会有不对的地方,欢迎大家指正,我们一起学习,一起进步!我将分为三个部分来介绍:1.整体思路,2.硬件电路方面,3.软件编程方面。

1.整体思路利用51单片机制作秒表时,我介绍精确到十分位(即0.1s)的制作,并让其拥有启动,暂停,复位三个功能。

用到的单片机部分:定时器部分,独立按键的检测与应用,数码管的显示,并结合一些简单的程序即可实现。

用5位数码管来进行显示,分别显示秒的十分位,秒的个位,秒的十位,分的个位,分的十位。

用定时器定时50ms,2个定时器中断即是0.1s,即秒的十分位,20个定时器中断即是1s,60个1s即是1分钟,通过程序将5位数码管的值分离出来,并进行显示。

这就是我在数码管显示方面的思路,如果不是太清楚,结合我下面软件编程方面的程序来看你可能就会明白,我会在那部分做详细介绍,看完了可能你就懂了。

利用独立按键设置启动/暂停键和清零键,利用独立按键的检测,若启动/暂停按键按下,秒表则启动或者暂停,按下复位键,秒表清零复位。

我在程序后面全都有注释,不用担心。

看完你就会明白了。

这是我制作的的流程图:“ms100”表示秒的十分位,'s'表示秒的个位,“s1”表示秒的十位,“min”表示分的个位,“min1”表示分的十位。

“cnt”表示秒的计数位,即多少个一秒,定时满一秒加1,“minu”表示分的计数位,即多少个一分钟,一分钟加1,这个流程图提供了大致思路,要结合下面的程序部分一起看。

51单片机秒表程序-00-99秒

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单片机秒表课程设计

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单片机秒表系统的设计

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单片机的数字秒表设计

单片机系统课程设计成绩评定表设计课题:数字秒表学院名称:电气工程学院专业班级:自动1204学生:学号:指导教师:王黎设计地点:31-630设计时间:2013-12-29~2013-1-9单片机系统课程设计课程设计名称:数字秒表专业班级:自动1204学生姓名:学号:指导教师:王黎课程设计地点:31-630课程设计时间:2013-12-29~2013-1-9单片机系统课程设计任务书目录1绪论 (3)2系统概述 (4)2.1数字式秒表的设计意义 (4)2.2设计要求与分析 (5)3 硬件电路设计 (6)3.1基准脉冲的获取 (6)3.2键盘及控制电路 (12)3.3计数、译码及显示电路 (14)4 数字秒表系统软件设计 (16)4.1 主程序软件设计 (16)4.2 中断服务程序设计 (16)5调试与仿真 (19)5.1软件调试与烧写 (19)5.2 硬件仿真 (20)6. 结论 (21)参考文献: (23)附录 (24)附录一系统原理图 (24)附录二源程序代码 (25)1绪论21世纪,单片机的发展非常的迅速。

单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。

它是一种集计数和多种接口于一体的微控制器,被广泛应用在智能产品和工业自动化上,而51单片机是个单片机中最为典型和最有代表性的一种。

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。

该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是Atmel的AT89系列,它广泛应用于工业测控系统之中。

很多公司都有51系列的兼容机型推出,今后很长的一段时间将占有大量市场。

本次的设计任务是一个数字秒表,而秒表与普通的钟表不同,它的目的是对从某一时刻到另一时刻的时间间隔进行计时。

秒表的数字化常给人们的生活带来极大的方便,它广泛应用于社会的各个领域。

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