找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 20122|回复: 8
收起左侧

AT89C51单片机秒表计数器课程设计报告

  [复制链接]
ID:345860 发表于 2018-6-6 02:19 | 显示全部楼层 |阅读模式
目录
第一章 概述              2
1.1设计任务              2
1.2设计要求              2
1.3设计内容提要              2
第二章 原理图及元件清单              3
2.1单片机原理图              4
2.2单片机部分元件图              4
2.2元器件选取              5
第三章 单片机各引脚定义              5
3.1 51系列单片机              6
3.2单片机各引脚定义表              6
第四章 程序流程图              6
4.1 程序流程图              7
第五章 源程序及仿真图              7
5.1 C语言源程序              7
5.2 Keil仿真              11
第六章 心得体会              9
第七章 参考文献              10

第一章 概述
1.1设计任务
设计一个单片机控制的秒表系统,利用单片机的定时器/计数器的原理,结合现实电路,LED数码管以及按键来设计计时器。讲软硬件有机的结合起来,是的系统能够正确的实现开始暂停清零加速等功能,数码管能够正确的现实时间。
1.2设计要求
1.采用外部中断0和1,控制两位数码管进行00-99的技术,其中外部中断0控制进行减1计数,外部中断1进行加1计数。
1.3设计内容提要
本系统采用AT89C51单片机为中心器件,利用其定时器/计时器定时和计数的原理,结合硬件电路如电源电路、晶振电路、复位电路、显示电路,以及一些按键电路等来设计计时器,净软硬件有机的结合起来,其中软件系统采用汇编语言编写程序,包括显示程序,快加程序,暂停,按键消抖程序等,硬件系统利用Keil强大的功能来时间,简单且易观察
图1.3系统电路原理
第二章 原理及元件清单
2.1单片机原理
利用Keil画出原理图,
2.2 单片机部分元件图

图2.2(1)7SEG-MPX2-CA原理图
图2.2(2)上拉电阻RESPACK-7示意图
2.3元选取
元件
数量
元件
数量
AT89C52
1块
数码管7SEG-MPX2-CA
2
按键
4个
直插针
1排
杜邦线
30根
USB电源线
1根
电路板
1块
RS232串口线
1根
CRYSTAL:晶振
1个
CAP\CAP-ELEC:电容、电解电容
2个
第三章 单片机各引脚定义
3.1 51系列单片机
1.采用面向控制的指令系统,为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机巨涌很强的位处理能力。
2.单片机的I/O通常是多功能的。由于单片机芯片上引脚数目有限,为了解决使用引脚数和需要的信号线的矛盾,采用了引脚功能服用的方法,引脚处于何种功能,可由指令来设置或有机器动态来区分。
3.单片机的外部扩展能力很强,在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的危机借口芯片兼容,给应用系统设计带来了很大的方便。
图3.1 AT89C51单片机
3.单片机各引脚的定义
第四章 程序流程图
4.1 程序流程图
图4.1 程序流程图
第五章 源程序及仿真图
5.1 C语言源程序
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsegned int
  4. sbit g=P2^1;
  5. sbit s=P2^0;
  6. bit button,flag;
  7. uchar shi,ge,temp,t0;
  8. uchar code table[]={
  9. 0x3f,0x6f,0x5b,0x4f,
  10. 0x66,0x6d,0x7d,0x07,
  11. 0x7f,0x6f,0x77,0x7c,
  12. 0x39,0x5e,0x79,0x71
  13. };
  14. voie display(shi,ge);
  15. void delay(uint z)
  16. {
  17.               uint x,y;
  18.               for(x=z;x>0;x--)
  19.                             for(y=110;y>0;y--);
  20. }
  21. uchar switchscan()
  22. {
  23.               temp=P1;
  24.               if(temo==0xfe)
  25.               {
  26.                             delay(5)
  27.                             temo=P1;
  28.                             if(temo==0xfe)
  29.                             {
  30.                                           button=~button;
  31.                                           if(button)
  32.                                           TR0=1;
  33.                                           else
  34.                                           TR0=0;
  35. t0=0;
  36.                                           flag=0;
  37.                                           shi=o;
  38.                                           ge=0;
  39.                             }
  40.               }
  41.               while (temp==0xfe)
  42.               {
  43.                             temp=P1;
  44.                             desplay(shi,ge);
  45.               }
  46.               return button;
  47. }
  48. void keyscan()
  49. {
  50.               temp=P1;
  51.               if(temp==0xfd||temp==0xfb||temp==0xf7)
  52.               {
  53. delay(5);
  54. temp=P1;
  55. if               (temp==0xfd||temp==0xfb||temp==0xf7)                           
  56. switch(temp)
  57.                                           {
  58.                                           case 0xfd:
  59.                                           {
  60.                                                         TR0=~TR0;
  61.                                           }
  62.                                           break;
  63.                                           case 0xfb:
  64.                                           {
  65.                                           TR0=0;
  66.                                           t0=0;
  67.                                           shi=0;
  68.                                           ge=0;
  69.                                           }
  70.                                           break;
  71.                                           case 0xf7:{flag=~flag;}
  72.                                           break;
  73.                             }
  74.               }
  75. }
  76. while(gemp==0xfd||temp==0xfb||temp==0xf7)
  77.               {
  78.               temp=P1;
  79.               display(shi,ge);
  80.               }
  81. }
  82. Void display(shi,ge)
  83. {
  84.               P0=table[shi];
  85.               s=o;
  86.               P0=table[shi];
  87. delay(1);
  88. s=1;
  89. P0=table[ge];
  90. g=o;
  91. P0=table[ge];
  92. delay(1);
  93. g=1;
  94. }
  95. void count()
  96. {
  97.               t0=0;
  98.               ge++;
  99.               if(ge==10){ge=0;shi++;}
  100.               if(shi==10)
  101.               shi=0;
  102. }
  103. main()
  104. {
  105. shi=0;
  106. ge=0;
  107. button=0;
  108. TM0D=0x01;
  109. TH0=(65536-50000)/256;
  110. TL0=(65536-50000)%256;
  111. EA=1;
  112. ET0=0;
  113. while(1)
  114. {
  115. display(shi,ge);
  116. switchscan();
  117. {
  118. while(button)
  119. {
  120. display(shi,ge);
  121. switchscan();
  122. if(button)
  123. keyscan();
  124. }
  125. while(!button)
  126. {
  127. TR0=0;
  128. display(shi,ge);
  129. switchscan();
  130. }
  131. }
  132. }            
  133. }
  134. void timer0() interrut 1
  135. {
  136. TH0=(65536-50000)/256;
  137. TL0=(65536-50000)%256;
  138. t0++;
  139. if(flag)
  140. {
  141. if(t0>=2)
  142. count();
  143. }
  144. if(!flag)
  145. {
  146. if(t0>=20)
  147. count();
  148. }
  149. }
复制代码


5.2 Keil仿真
图5.3Keil仿真软件
第六章 心得体会
自己写吧!!
第七章参考文献
直接吧老师的课本给写上就可以了!

完整的Word格式文档51黑下载地址:
AT89C51单片机课程设计-秒表计数器.doc (443.5 KB, 下载次数: 181)
回复

使用道具 举报

ID:652078 发表于 2019-11-29 02:06 来自手机 | 显示全部楼层
谢谢大哥
回复

使用道具 举报

ID:753279 发表于 2020-5-16 14:27 | 显示全部楼层
谢谢大哥
回复

使用道具 举报

ID:758416 发表于 2020-5-24 15:30 来自手机 | 显示全部楼层
有没有打包好的程序?
回复

使用道具 举报

ID:767784 发表于 2020-6-4 08:36 | 显示全部楼层
这发布的代码是错的 错误有点多啊 大哥
回复

使用道具 举报

ID:770375 发表于 2020-6-5 15:03 | 显示全部楼层
qwqwqwwqqw 发表于 2020-6-4 08:36
这发布的代码是错的 错误有点多啊 大哥

兄弟 你有没有改好的代码
回复

使用道具 举报

ID:770375 发表于 2020-6-5 15:03 | 显示全部楼层
楼主有没有源代码
回复

使用道具 举报

ID:770375 发表于 2020-6-5 15:03 | 显示全部楼层
楼主有没有源代码
回复

使用道具 举报

ID:770375 发表于 2020-6-5 15:07 | 显示全部楼层
qwqwqwwqqw 发表于 2020-6-4 08:36
这发布的代码是错的 错误有点多啊 大哥

大哥 你有没有改好的程序 跪求
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表