太原理工单片机课程设计-秒表设计.doc.docVIP

  • 9
  • 0
  • 约5.34千字
  • 约 10页
  • 2018-10-15 发布于湖北
  • 举报

太原理工单片机课程设计-秒表设计.doc.doc

太原理工单片机课程设计-秒表设计.doc

单片机课程设计报告书 (2008) 姓 名: 班 级: 分 数:____________ 实验要求:设计秒表计时系统,能够完成多次计时,即一次及时可以做到多次取值,同时在及时停止后能够自由查阅所记的数值。 试验所用语言:C语言 试验环境:Windows XP Keil uVision3 STC-ISP V35 试验芯片:AT89x51 目录 1、设计计划书 2、设计理念 3、程序流程图 4、程序清单 5、外部电路图 6、按键说明 7、程序运行结果 8、思想总结 9、参考文献 一、设计计划书: 通过不同按键的输入,使计时器完成不同的指令,例如开始计时、记录当前时间、停止时间、查找记录、清零等。计时器时间准确。计时范围尽量大些,有记录条数的显示,当时间计满自动停止。 二、设计理念: 对于按键,设计按键子程序,在主程序中不断调用子程序。在数码管上显示秒,一个显示十位,一个显示各位。在二极管上,高三位显示记录条数,其余五位显示分钟,同时记录条数以二进制数显示。 计时使用51单片机中断程序进行定时,使用T0作为计时器。在中断程序中,每隔一秒将一个全局变量置1,主程序在检测到其为1时,计时相应加一。 显示时间在数码管上的使用数组输出。在二极管上的使用按位与的情况。 记录事情通过按键子程序读回其值后,将当时的秒值和分值存入数组。同时记录条数加1。当计时停止后通过上翻键和下翻键可以在记录中查找各值。 在清零按键按下的时候,所有显示清零,这时秒表可以开始重新计时。 在计时阶段,上、下翻键无法使用,清零键无法使用。只有当时间达到上限、停止按键按下和记录条数慢时计时才停止工作。 因为多次用到数字显示,显示使用子程序调用形式。 三、程序流程图: 开 始主程序: 开 始 设置计数器 设置计数器 进入无限循环中 进入无限循环中 NShangyi=1调用按键子程序 得值给键值 N Shangyi=1 调用按键子程序 得值给键值 根据键值相应得标志位置位 根据键值相应得标志位置位 NNxiayi=1M值加1Kai=1 N N xiayi=1 M值加1 Kai=1 M值减1计时,检测tound=1则计时加1 调用显示子程序 M值减1 计时,检测tound=1则计时加1 调用显示子程序 NTing=1 N Ting=1 根据m值显示MM得内容停止计时,保存当前值,kai=0 根据m值显示MM得内容 停止计时,保存当前值,kai=0 NNZhanting=1Qingling=1 N N Zhanting=1 Qingling=1 将所有位清零保存当前值到MM数组 同时m加1 将所有位清零 保存当前值到MM数组 同时m加1 延时开 始按键子程序: 延时 开 始 NKeyv!=0xff N Keyv!=0xff 进入循环,等待按键放开初始化将P3口值给keyv 进入循环,等待按键放开 初始化将P3口值给keyv N N NKeyv=0xffKeyv=0xff N Keyv=0xff Keyv=0xff Return(0)Return(keyv) Return(0) Return(keyv) 结束 结束 四、程序清单: #include at89x51.h #define uchar unsigned char uchar hex[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; /数码管显示 int i,tound; /全局变量 uchar key() /按键子程序 { uchar keyv; uchar tmp; keyv=P3; /将P3值给变量 if(keyv==0xff) /如果按键没有按下了,返回0 return(0); for(i=0;i1250;i++); /按下延时 防抖动 keyv=P3; /从新付值 if(keyv==0xff) /如果没有达到时间,认为无效返回0 return(0); else /有按键值则进入循环 { for(;;) {tmp=P3; if(tmp==0xff) /当按键放开跳出 break; } return (keyv); /返回值 }} void xianshi(int miao,int fen,int shu) /显示子程序 { uchar fenx=0x01; P

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档