51单片机实验 秒表设计_第1页
51单片机实验 秒表设计_第2页
51单片机实验 秒表设计_第3页
51单片机实验 秒表设计_第4页
51单片机实验 秒表设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告一、实验名称10秒计时的秒表设计二、实验内容精确到0.1秒的秒表三、相关模块led数码管、usb、独立键盘四、实验代码#include reg52.h typedef unsigned int u16; /对数据类型进行声明定义typedef unsigned char u8;sbit lsa=p22;sbit lsb=p23;sbit lsc=p24;sbit k1=p31;sbit k2=p30;sbit k3=p32;sbit k4=p33;u8 code smgduan17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x

2、77,0x7c,0x39,0x5e,0x79,0x71;u16 s,sec;unsigned int i;unsigned int j;unsigned int a,b,c,d;u8 mb2;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=

3、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=smgduanmbi+0x80;/发送段码elsep0=smgduanmbi; delay(1); /间隔一段时间扫描p0=0x00;/消

4、隐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;

5、break;if (i=4)p0=smgduana+0x80;elsep0=smgduanb; 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;

6、break;case(6):lsa=0;lsb=1;lsc=1; break;case(7):lsa=1;lsb=1;lsc=1; break;if (i=7)p0=smgduanc+0x80;elsep0=smgduand; 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

7、=1) a=mb1; b=mb0; if (j=0)c=mb1;d=mb0;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(); mb0=sec%10; mb1=(sec/10)%10; key3(); digdisplay1(i); digdisplay2(i); digdisplay3(i); i+; i=i%2; key4();5、 实验效果k1作用:启动、开始或暂停计时k2作用:计数位清零k3作用:记录当前时间并显示k4作用:清零所有的数码管六、实验遇到的问题经过前几次的实验,0到10秒的计数已经不成问题,本次实验的难点主要在几个按键

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论