标题: AT89C51单片机秒表计数器课程设计报告 [打印本页]
作者: 才能弄完 时间: 2018-6-6 02:19
标题: AT89C51单片机秒表计数器课程设计报告
目录
第一章 概述 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元器件选取
第三章 单片机各引脚定义
3.1 51系列单片机
1.采用面向控制的指令系统,为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机巨涌很强的位处理能力。
2.单片机的I/O通常是多功能的。由于单片机芯片上引脚数目有限,为了解决使用引脚数和需要的信号线的矛盾,采用了引脚功能服用的方法,引脚处于何种功能,可由指令来设置或有机器动态来区分。
3.单片机的外部扩展能力很强,在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的危机借口芯片兼容,给应用系统设计带来了很大的方便。
图3.1 AT89C51单片机
3.单片机各引脚的定义
第四章 程序流程图
4.1 程序流程图
图4.1 程序流程图
第五章 源程序及仿真图
5.1 C语言源程序
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsegned int
- sbit g=P2^1;
- sbit s=P2^0;
- bit button,flag;
- uchar shi,ge,temp,t0;
- uchar code table[]={
- 0x3f,0x6f,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71
- };
- voie display(shi,ge);
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- uchar switchscan()
- {
- temp=P1;
- if(temo==0xfe)
- {
- delay(5)
- temo=P1;
- if(temo==0xfe)
- {
- button=~button;
- if(button)
- TR0=1;
- else
- TR0=0;
- t0=0;
- flag=0;
- shi=o;
- ge=0;
- }
- }
- while (temp==0xfe)
- {
- temp=P1;
- desplay(shi,ge);
- }
- return button;
- }
- void keyscan()
- {
- temp=P1;
- if(temp==0xfd||temp==0xfb||temp==0xf7)
- {
- delay(5);
- temp=P1;
- if (temp==0xfd||temp==0xfb||temp==0xf7)
- switch(temp)
- {
- case 0xfd:
- {
- TR0=~TR0;
- }
- break;
- case 0xfb:
- {
- TR0=0;
- t0=0;
- shi=0;
- ge=0;
- }
- break;
- case 0xf7:{flag=~flag;}
- break;
- }
- }
- }
- while(gemp==0xfd||temp==0xfb||temp==0xf7)
- {
- temp=P1;
- display(shi,ge);
- }
- }
- Void display(shi,ge)
- {
- P0=table[shi];
- s=o;
- P0=table[shi];
- delay(1);
- s=1;
- P0=table[ge];
- g=o;
- P0=table[ge];
- delay(1);
- g=1;
- }
- void count()
- {
- t0=0;
- ge++;
- if(ge==10){ge=0;shi++;}
- if(shi==10)
- shi=0;
- }
- main()
- {
- shi=0;
- ge=0;
- button=0;
- TM0D=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=0;
- while(1)
- {
- display(shi,ge);
- switchscan();
- {
- while(button)
- {
- display(shi,ge);
- switchscan();
- if(button)
- keyscan();
- }
- while(!button)
- {
- TR0=0;
- display(shi,ge);
- switchscan();
- }
- }
- }
- }
- void timer0() interrut 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- t0++;
- if(flag)
- {
- if(t0>=2)
- count();
- }
- if(!flag)
- {
- if(t0>=20)
- count();
- }
- }
复制代码
5.2 Keil仿真
图5.3Keil仿真软件
第六章 心得体会
自己写吧!!
第七章参考文献
作者: 1914539614 时间: 2019-11-29 02:06
谢谢大哥
作者: eeewc110 时间: 2020-5-16 14:27
谢谢大哥
作者: 314006 时间: 2020-5-24 15:30
有没有打包好的程序?
作者: qwqwqwwqqw 时间: 2020-6-4 08:36
这发布的代码是错的 错误有点多啊 大哥
作者: pipis 时间: 2020-6-5 15:03
兄弟 你有没有改好的代码
作者: pipis 时间: 2020-6-5 15:03
楼主有没有源代码
作者: pipis 时间: 2020-6-5 15:03
楼主有没有源代码
作者: pipis 时间: 2020-6-5 15:07
大哥 你有没有改好的程序 跪求
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |