89C51单片机课程设计之秒表设计实验报告 - 图文
更新时间:2024-04-19 04:43:01 阅读量: 综合文库 文档下载
这里可以加学校LOGAL
单片机课程设计报告
院系: xxxxxxxxxx 班别: xxxxxxxxxx 课程名称: 秒表设计 姓名: xxx 学号: xxxxxxx 指导老师: xxxxxxx
2011.12.23
目录
1课程设计的目的和任务
1.1 单片机秒表课程设计的概述 1.2课程设计思路及描述 1.3 课程设计任务和要求
2硬件与软件的设计流程
2.1系统硬件方案设计 2.2软件方案设计
3 程序编写流程及课程设计效果
3.1源程序及注释 3.2原理图分析 3.3课程设计效果
4 心得体会
5 相关查阅资料
1. 课程设计的目的和任务 1.1单片机秒表课程设计的概述
一、课程设计题目
秒表系统设计——用STC89C52RC设计一个4位LED数码显示“秒表”,显示时间为00.00~99.99秒,每10毫秒自动加一,每1000毫秒自动加一秒。
二、增加功能
增加一个“复位”按键(即清零),一个“暂停”和“开始”按键。
三、课程设计的难点
单片机电子秒表需要解决三个主要问题,一是有关单片机定时器的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程。
四、课程设计内容提要
本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本课程设计有两个开关按键:其中key1按键按下去时开始计时,即秒表开始键(同时也用作暂停键),key2按键按下去时数码管清零,复位为“00.00”.
五、课程设计的意义
1) 通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步
的了解。
2) 掌握定时器、外部中断的设置和编程原理。
3) 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
4) 该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的
计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义
六、课程设计仪器
a) 集成电路芯片8051,七段数码管,89C51单片机开发板
b) MCS-51系列单片机微机仿真课程系统中的软件(Keil uvision2)。
1.2课程设计思路及描述
该课程设计要求进行计时并在数码管上显示时间,则可利用MCS-51系列单片机的芯片AT89C52的P3.2,P3.5作为按键的入口;定时器T1作为每0.01秒加一的定时器。其中“开始”按键当开关由上向下拨时开始计时,此时若再拨“开始”按键则数码管暂停;“清零”按键当开关由上向下拨时数码管清零,此时若再拨“开始”按键则又可重新开始计时。
方框图如下图1:
开关 MCS-51 LED显示 AT89C52RC
图1数字秒表设计导向
1.3 课程设计任务和要求
1.3.1 设计指标 。
了解8051芯片的的工作原理和工作方式 ,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、99秒、清零等功能,精确到0.01秒。
要求选用定时器的工作方式,画出使用单片机控制LED数码管显示的电路图,并实现其硬件电路,并编程完成软件部分,最后调试秒表起动、停止、清零等功能。
1.3.2 设计要求
① 画出电路原理图(或仿真电路图); ② 软件编程与调试; ③ 电路仿真与调试;
2.软件与硬件设计
2.1系统硬件方案设计
单片机应用系统由硬件系统和软件系统两部分组成。硬件系统是指单片机以及扩展的存储器、I\\O接口、外围扩展的功能芯片以及接口电路。软件系统包括监控程序和各种应用程序。
在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\\O接口,使单片机应用系统能够运行。
在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。
图2系统硬件结构框
4个数码
管显示
11.0592MHz晶振
电源开关
STC89C52RC
2个独立式的按键 电源指示灯
2.2软件方案设计
此次选用C51来编程,首先要有初始化程序,通过初始化程序,将对主程序所用到的变量、常量以及各个参数和所调用的子函数定义。其次还有显示程序、按键扫描及处理程序、时钟程序和倒计时程序,系统软件流程图图如图 3所示:
图3
按键的扫描及处理 数码管显示选择 While 开始 系统初始化 3 程序编写的流程及课程设计效果 3.1 源程序及注释
/*----------------------------------------------- 名称:数码管显示,按键控制秒表 论坛:www.doflye.net 编写:shifang 日期:2009.5 修改:无
内容:中断按键控制,数码管显示,中断0控制计时和停止,中断1清零 ------------------------------------------------*/
#include
unsigned int msecond,second;//定义全局变量 bit GoFlag;//定义停止,计时标志
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换 sbit LATCH1=P2^2;//定义锁存使能端口 段锁存 sbit LATCH2=P2^3;// 位锁存 sbit KEY=P3^2; unsigned
char
code
dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9 unsigned
char
code
dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
unsigned char TempData[8]; //存储显示值的全局变量
void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t);
void Display(unsigned char FirstBit,unsigned char Num); void Init_Timer0(void); void CLR(void);
/*------------------------------------------------ 主函数
------------------------------------------------*/
void main (void) {
unsigned char num=0;
EX0=1; //外部中断0开 IT0=1; //IT1=0表示边沿触发 EX1=1; //外部中断1开 IT1=1; //IT1=1表示边沿触发 Init_Timer0();
while (1) //主循环 {
TempData[0]=dofly_DuanMa[second/10];//分解显示信息,如要显示68,则
68/10=6 68=8
TempData[1]=dofly_DuanMa[second];
TempData[2]=0x40;// \
TempData[3]=dofly_DuanMa[msecond/10];//分解显示信息,如要显示68,则
68/10=6 68=8
TempData[4]=dofly_DuanMa[msecond];
//主循环中添加其他需要一直工作的程序
} }
/*------------------------------------------------ 显示函数,用于动态扫描数码管
输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显
示
如输入0表示从第一个显示。
Num表示需要显示的位数,如需要显示99两位数值则该值输入2 ------------------------------------------------*/ void Display(unsigned char FirstBit,unsigned char Num) {
static unsigned char i=0;
DataPort=0; //清空数据,防止有交替重影
LATCH1=1; //段锁存 LATCH1=0;
DataPort=dofly_WeiMa[i+FirstBit]; //取位码 LATCH2=1; //位锁存 LATCH2=0;
DataPort=TempData[i]; //取显示数据,段码 LATCH1=1; //段锁存 LATCH1=0;
i++;
if(i==Num) }
/*------------------------------------------------ 定时器初始化子程序
i=0;
------------------------------------------------*/ void Init_Timer0(void) {
TMOD |= 0x01; 器时不受影响
//使用模式1,16位定时器,使用\符号可以在使用多个定时
//TH0=0x00; //给定初值 //TL0=0x00;
EA=1; //总中断打开 (总中断控制开关) ET0=1; //定时器中断打开 (允许中断0的发生) TR0=1; //定时器开关打开 (定时器T0开始工作) }
/*------------------------------------------------ 定时器中断子程序
------------------------------------------------*/ void Timer0_isr(void) interrupt 1 {
static unsigned char num; TH0=(65536-2000)/256; TL0=(65536-2000)%6;
Display(0,8); if(GoFlag) { num++; if(num==5) {
num=0;
//重新赋值 2ms
msecond++;
if (msecond==100)//100进1
{
msecond=0; second++;//秒加1
if(second==100) second=0;
} } } }
/*------------------------------------------------ 外部中断0程序
------------------------------------------------*/ void ISR_INT0(void) interrupt 0 {
if(!KEY) //如果检测到低电平,说明按键按下 {
DelayMs(20); //延时去抖,一般10-20ms
if(!KEY) //再次确认按键是否按下,没有按下则退出
{
GoFlag=!GoFlag; //利用外部中断打开和关闭定时标志 用于开始和停止
计时
//主循环中添加其他需要一直工作的程序
}
}
}
/*------------------------------------------------ 外部中断1程序
------------------------------------------------*/ void ISR_INT1(void) interrupt 2 {
if(GoFlag==0)//停止时才可以清零 CLR();
}/*------------------------------------------------ 数值清零
------------------------------------------------*/ void CLR(void) {
second=0; //利用外部中断清零 msecond=0; }
void DelayUs2x(unsigned char t) { while(--t); }
void DelayMs(unsigned char t) { while(t--) {
//大致延时1mS DelayUs2x(245);
} }
DelayUs2x(245);
3.2原理图分析
图4按键原理图
图5显示电路
图6电源电路原理图
3.3课程设计效果
通过最后软件对程序的编译,组建,执行,还有最终生成.hex文件,把.hex下载到TX-1C开发板的STC89C52RC单片机上的最终效果图如下:
下图: 开始运行,执行自动加1
下图:下图为复位后的显示
下图:“开始自加”运行,一直加到99秒
4 心得体会
以下是我在设计这个秒表过程中所总结的心得,整个过程主要是:设计程序----修正程序 ----扩展功能----完善程序,经过自己的独立思考与查阅相关知识,最终完成这个作品.
通过对本次课程的课程设计,使自己深刻的认识到自己的很多不足之处,在实际动手操作能力的不足,在进行程序编程时,自己需要,认真审题,看懂题目的要求!对于软件编程不益太简单或者太难。做到既能把课题完成又能锻炼自己的能力! 根据课题要求,复习相关的知识,查询相关的资料。根据课程条件,找到适合的方案,找到需要的元器件及工具,准备课程。 根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序和增加额外的功能程序。然后再进行程序调试和相应的修心 改,以达到能够实现所要求的功能的目的。 得 还要根据课程的实际情况,添加些额外程序来使系统更加的稳定,如开关的去抖(采 。 体 用延迟) 程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的会 检查过程中可以更容易查找的到,也更简洁,更明白易懂。 该课程设计的程序可以参考MCS-51系列单片机,也可自己根据自己熟悉的方法来编程如单片机C语言。 在设计控制开关时,注意2个中断的打开和关闭的先后顺序,否则就会出错。 这次的单片机课程设计重点是理论与实际的相结合。该设计从头到尾都要自己参与,熟悉了对整个设计的过程,更系统的锻炼了自己。 2011年 12 月 23 日 教 师 评 语 成 绩 及 签 名 年 月 日 年 月 日
5 相关资料查阅
【1】孙育才编著.MCS-51系列单片微型计算机及其应用.东南大学出版社.2009.12 【2】郭天祥编著.51单片机C语言教程-入门、提高、开发、拓展全攻略.电子工业出版社.2010.05
【3】刘刚编著.Protel DXP 2004 SP2原理图与PCB设计.电子工业出版社.2009.07 【4】丁峻岭主编.C语言程序设计.中国铁道出版社.2009.12
正在阅读:
89C51单片机课程设计之秒表设计实验报告 - 图文04-19
湘教版 七年级地理下册《第六章 认识大洲 第二节 非洲》 精品教03-05
浅谈农村小学作文教学的现状与策略03-18
1安全警语06-15
转向系统设计计算报告-2011012405-07
都城光学仪器厂组织结构设计01-30
福鼎市农村集体“三资”管理实施细则06-06
连续刚构桥悬臂施工专项施工方案06-06
关联词以及病句练习09-21
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 设计
- 秒表
- 单片机
- 课程
- 实验
- 图文
- 报告
- 89C51
- 灯塔油库环境突发事件应急预案
- 人教版高中生物课本基础知识汇总Word版可直接打印
- 自然辩证法结课论文
- 八年级数学上册第四章《一次函数》教案
- 游记体散文单元练习
- 南京市安全生产重特大事故应急预案
- 2013高考生物二轮专题1-6-1
- 2016年江西事业单位考试面试热点:被“占领”的朋友圈
- 塑胶电镀件检验标准
- 建筑施工企业将工程劳务发包给不具备用工主体资格的组织或自然人
- 武汉市中考第23题 - 图文
- 化工原理课程设计列管换热器
- 答案
- 2009-2010工程材料与成形技术期末考试3套试卷及答案北华大学机械
- 安徽省人民政府关于贯彻执行《国务院关于职工探亲待遇的规定》的
- NI - VeriStand使用手册
- 郑大远程教育学院2016.10.9《大学英语II》在线测试及答案
- 东财《国际财务管理》在线作业
- 1总体安全工作方案
- 心理学史提纲整理复习