51单片机实训
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TMOD=0x01; TH0=0xd8; TL0=0xf0; ET0=1;
EA=1;
while(1) {
display(); if(!P3_2)
- 10 -
《单片机应用实训》设计报告
{ delay(60); while(!P3_2) ห้องสมุดไป่ตู้ TR0=~TR0;
} if(!P3_3) {
delay(60); TR0=0;
-6-
《单片机应用实训》设计报告
P2=0xef,P1=a[msec%10];delay(20);//延时 20ms P2=0xdf,P1=a[msec/10];delay(20);//延时 20ms P2=0xbf,P1=a[sec%10];delay(20);//延时 20ms P2=0x7f,P1=a[/sec/10];delay(20);//延时 20ms } 3.4 延时程序 void delay(uint t) //延时 0.1*n 毫秒 0 { uint i; do { for(i=0;i<10;i++) ; } while(t--); }
拉低至低电平;然后延时 20ms;然后同样的方法赋给第二位要显示的段码,延 时,依次赋给,由于 20ms 的时间特别短以至于人眼无法瞬间分辨,给人的感觉 既是各个数字同时显示。
(2)数字位的分离 利用%10 对一个两位数字取余,利用/10 对一个两位数字取整数部分。
(3)单片机的中断 指当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况
1.2 秒表设计过程中软硬件资源 硬件资源: AT89S52 单片机芯片,电路板,下载线,数码管,按键,导线
若干 软件资源: keil 软件,protues 软件,下载软件。
1.3 秒表设计过程中利用到的原理,方法,及基本思想 (1)数码管显示中人眼的视觉暂留效应 先赋给第一位数码管要显示的数字对应段码,继而将该位共阴极的接口
-9-
《单片机应用实训》设计报告
附 1 源程序代码
#include <at89X52.h> #define uint unsigned int #define uchar unsigned char uchar code a[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; //段码组合,共阴极
的程序和执行过程。即在程序运行过程中,系统出现了一个必须由 CPU 立 即处理的情况,此时,CPU 暂时中止程序的执行转而处理这个新的情况的过 程就叫做中断。数码管显示中用到了定时器中断。
-3-
《单片机应用实训》设计报告
2.1 单片机最小系统的构建
2.1
2.2
keil 工程的建立,c 语言文件的添加,以及编译,生成 hex 文件
5 设计体会 参考文献 附 1:源程序代码 附 2:系统原理图
-2-
《单片机应用实训》设计报告
1 概述
1.1 秒表设计的目的 该作品由硬件和软件构成,作品的完成既说明了基于 AT89S52 单片机一个完整
小系统的开发流程的成功实现。在硬件方面,练习焊接技术,和按照原理图正确 焊接的锻炼。软件方面,熟悉基于 C 语言的 51 编程,和 keil 编程环境,protues 仿真环境。
[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6} ; uchar sec=0; //定义秒数变量 uint msec=0; //定义毫秒变量 定时器 0 中断初始化:TOMD=0x01;//开启 16 位装数 TH0=55536/256; //高四位装初值 TL0=55536%256; //低四位装初值 总中断开关打开:EA=1;定时器 0 中断开关 ET0=1; 3.2 定时器中断服务程序
P2=0xef,P1=a[msec%10];
- 11 -
《单片机应用实训》设计报告
delay(20); P2=0xdf,P1=a[msec/10]; delay(20); P2=0xbf,P1=a[sec%10]; delay(20); P2=0x7f,P1=a[sec/10]; delay(20); }
}
} }
void timer0(void) interrupt 1 {
TH0=55536/256; TL0=55536%256; msec++;
if(msec==99) {msec=0; sec++; if(sec==60) {
sec=0; msec=0; }
} }
void display(void) {
2 系统总体方案及硬件设计 2.1 单片机最小系统的构建 2.2 keil 工程的建立,c 语言文件的添加,以及编译,生成 hex 文件 2.3 硬件设计原理图
3 软件设计 3.1 初始化 3.2 定时器中断服务程序 3.3 显示服务程序 3.4 延时程序
4 实验仿真 4.1 protues 仿真图
void timer0(void)interrupt 1 {
TH0=55536/256; TL0=55536%256; msec++; if(msec==99) {msec=0; sec++; if(sec==60) {
sec=0; msec=0; }
} } 3.3 显示服务程序
Void display(void) {
- 12 -
《单片机应用实训》设计报告
附 2 系统原理图
- 13 -
《单片机应用实训》设计报告 - 14 -
《单片机应用实训》设计报告
3. 仿真原理图
- 15 -
最后在作品制作中加深了硬件理论理解,锻炼了动手能力,发现问题和解决 问题的能力.,培养了对 51 单片机深厚的兴趣,相信以后会走的更远。
-1-
《单片机应用实训》设计报告
目录
1 概述……………………………………………………………………………… 1.1 : 秒表设计的目的 1.2 : 秒表设计过程中软硬件资源 1.3 : 秒表设计过程中利用到的原理,方法,及基本思想
参考文献 期刊论文: [序号] [1]陈享成,耿长青。基于单片机的 LCD 显示终端设计。电力 自动化设备,2007,27(9),11-27. 书、专著: [1] 贺哲荣,黄金波.AT89S51 单片机硬件设计与编程实例.北京: 中国电力出版社,2012,16-32. [2] 郭天祥。新概念 51 单片机 c 语言教程。北京:电子工业出版 社,2009,22-50. 电子文献: [1] 吉鹤.MCS-51 单片机内部资源的应用扩展.吉林,电脑学习,2011 (2),3-5.
-7-
《单片机应用实训》设计报告
4.1 protues 仿真原理图
-8-
《单片机应用实训》设计报告
5.1 设计体会 (1)秒表的设计完全是靠自己实践和老师的帮助,自己收获很多。要完全
完成基于单片机的作品必须能够看懂硬件原理图,有必要的 C 语言编程功底,较 强的依照原理图焊接能力,和根据硬件连接修改设置编程初始化的能力。最后还 要懂得一些关于功能实现的必要原理。如数码管动态显示原理,和共阴型四位一 体数码管的显示原理等。
(2)要有耐心和热情。调试是一个根据现象不断修改的过程。这时要细心, 耐心。
(3)掌握了开发单片机的系统工具,keil 和 protues 软件,掌握了单片机 系统设计的思想和方法。
(4)这只是开始,基于单片机的功能还有很多,但基本流程都大同小异。 相信有了这次的经验,其他的功能也一定能够设计出来。
《单片机应用实训》设计报告
摘要
本设计是基于 AT89S52 的智能跑秒表,此跑秒表能够实现 0~60 共一分钟时间 的精确显示,以及在人为干预条件下快速暂停显示,并具有再次快速启动和重启 功能.该表利用 12KHz 晶振可最小精确到 10ms,有较高可信度.
秒表制作中用到了硬件仿真,和软件编程方法.初步掌握了单片机系统的开 发流程.硬件设计是基础,后面的软件设计完全依据它而改变.连接器件时要注意 原件正负极的区分,如二极管的焊接等.核心程序用 keil 工具编写,编程语言是 标准 c 语言,语法主要是 c 语言规则以及与单片机相关的附加规则.为了实现显示, 分块设计了延时程序,数码管显示程序,定时器程序,和中断程序.其中延时是利 用了人的视觉暂留效应,使得四个数码管能同时显示.数码管显示用到了数据的 分离方法.定时器的初始化和开中断用到了中断源的设置方法.最后要在 protues 上进行软件仿真,进行检测.最后的步骤是下载调试。根据预期效果编写程序,在 单片机上检验,根据现象分析程序出错处,再修改,在下载调试。反复修改直到 成功。
2.2 硬件设计原理图
-4-
《单片机应用实训》设计报告 -5-
《单片机应用实训》设计报告
3.1 初始化 51 头文件 #include<AT89X52> ; 宏定义 #define uchar unsigned char #define uint unsigned int 数码管编码共阴型 uchar code
uchar sec=0; uint msec=0; uint k=0; void display(void);
void delay(uint t) //延时 0.1*n 毫秒 0 {
uint i; do {
for(i=0;i<10;i++) ; } while(t--); }
void main(void) {
在开发过程中,学到许多。一,加深了理论联系实践。在电路板焊接中,掌 握了基本操作方法,识别了一些元器件,如按键,二极管,数码管,晶振等。二, 初步学会了开发流程,即硬件设计,软件编程,下载调试,功能实现。此过程中 掌握了 keil 软件,protues 软件,程序下载软件的使用方法。三,初步了解了 A T89S52 系列内部结构和接口,了解到完整最小系统由复位电路,电源电路,单 片机芯片,时钟电路构成,加上外围电路可实现各种功能。四,掌握了 c 语言编 程方法,c 语言分两部分,一为有硬件相关,一为软件相关。因而具有高效的可 移植性,可修改性。养成了良好的程序设计风格.如大小写的使用,首行所缩进的 使,宏定义的使用。五,实现了自己的想法,作出了几个程序,体会到编程的快乐。 通过由最简单的点亮一个 led 灯开始,到做出流水灯,再到中断 0/1 的使用,使 得单片机的功能得到充分使用。最后到定时器,中断源的调用。
EA=1;
while(1) {
display(); if(!P3_2)
- 10 -
《单片机应用实训》设计报告
{ delay(60); while(!P3_2) ห้องสมุดไป่ตู้ TR0=~TR0;
} if(!P3_3) {
delay(60); TR0=0;
-6-
《单片机应用实训》设计报告
P2=0xef,P1=a[msec%10];delay(20);//延时 20ms P2=0xdf,P1=a[msec/10];delay(20);//延时 20ms P2=0xbf,P1=a[sec%10];delay(20);//延时 20ms P2=0x7f,P1=a[/sec/10];delay(20);//延时 20ms } 3.4 延时程序 void delay(uint t) //延时 0.1*n 毫秒 0 { uint i; do { for(i=0;i<10;i++) ; } while(t--); }
拉低至低电平;然后延时 20ms;然后同样的方法赋给第二位要显示的段码,延 时,依次赋给,由于 20ms 的时间特别短以至于人眼无法瞬间分辨,给人的感觉 既是各个数字同时显示。
(2)数字位的分离 利用%10 对一个两位数字取余,利用/10 对一个两位数字取整数部分。
(3)单片机的中断 指当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况
1.2 秒表设计过程中软硬件资源 硬件资源: AT89S52 单片机芯片,电路板,下载线,数码管,按键,导线
若干 软件资源: keil 软件,protues 软件,下载软件。
1.3 秒表设计过程中利用到的原理,方法,及基本思想 (1)数码管显示中人眼的视觉暂留效应 先赋给第一位数码管要显示的数字对应段码,继而将该位共阴极的接口
-9-
《单片机应用实训》设计报告
附 1 源程序代码
#include <at89X52.h> #define uint unsigned int #define uchar unsigned char uchar code a[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; //段码组合,共阴极
的程序和执行过程。即在程序运行过程中,系统出现了一个必须由 CPU 立 即处理的情况,此时,CPU 暂时中止程序的执行转而处理这个新的情况的过 程就叫做中断。数码管显示中用到了定时器中断。
-3-
《单片机应用实训》设计报告
2.1 单片机最小系统的构建
2.1
2.2
keil 工程的建立,c 语言文件的添加,以及编译,生成 hex 文件
5 设计体会 参考文献 附 1:源程序代码 附 2:系统原理图
-2-
《单片机应用实训》设计报告
1 概述
1.1 秒表设计的目的 该作品由硬件和软件构成,作品的完成既说明了基于 AT89S52 单片机一个完整
小系统的开发流程的成功实现。在硬件方面,练习焊接技术,和按照原理图正确 焊接的锻炼。软件方面,熟悉基于 C 语言的 51 编程,和 keil 编程环境,protues 仿真环境。
[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6} ; uchar sec=0; //定义秒数变量 uint msec=0; //定义毫秒变量 定时器 0 中断初始化:TOMD=0x01;//开启 16 位装数 TH0=55536/256; //高四位装初值 TL0=55536%256; //低四位装初值 总中断开关打开:EA=1;定时器 0 中断开关 ET0=1; 3.2 定时器中断服务程序
P2=0xef,P1=a[msec%10];
- 11 -
《单片机应用实训》设计报告
delay(20); P2=0xdf,P1=a[msec/10]; delay(20); P2=0xbf,P1=a[sec%10]; delay(20); P2=0x7f,P1=a[sec/10]; delay(20); }
}
} }
void timer0(void) interrupt 1 {
TH0=55536/256; TL0=55536%256; msec++;
if(msec==99) {msec=0; sec++; if(sec==60) {
sec=0; msec=0; }
} }
void display(void) {
2 系统总体方案及硬件设计 2.1 单片机最小系统的构建 2.2 keil 工程的建立,c 语言文件的添加,以及编译,生成 hex 文件 2.3 硬件设计原理图
3 软件设计 3.1 初始化 3.2 定时器中断服务程序 3.3 显示服务程序 3.4 延时程序
4 实验仿真 4.1 protues 仿真图
void timer0(void)interrupt 1 {
TH0=55536/256; TL0=55536%256; msec++; if(msec==99) {msec=0; sec++; if(sec==60) {
sec=0; msec=0; }
} } 3.3 显示服务程序
Void display(void) {
- 12 -
《单片机应用实训》设计报告
附 2 系统原理图
- 13 -
《单片机应用实训》设计报告 - 14 -
《单片机应用实训》设计报告
3. 仿真原理图
- 15 -
最后在作品制作中加深了硬件理论理解,锻炼了动手能力,发现问题和解决 问题的能力.,培养了对 51 单片机深厚的兴趣,相信以后会走的更远。
-1-
《单片机应用实训》设计报告
目录
1 概述……………………………………………………………………………… 1.1 : 秒表设计的目的 1.2 : 秒表设计过程中软硬件资源 1.3 : 秒表设计过程中利用到的原理,方法,及基本思想
参考文献 期刊论文: [序号] [1]陈享成,耿长青。基于单片机的 LCD 显示终端设计。电力 自动化设备,2007,27(9),11-27. 书、专著: [1] 贺哲荣,黄金波.AT89S51 单片机硬件设计与编程实例.北京: 中国电力出版社,2012,16-32. [2] 郭天祥。新概念 51 单片机 c 语言教程。北京:电子工业出版 社,2009,22-50. 电子文献: [1] 吉鹤.MCS-51 单片机内部资源的应用扩展.吉林,电脑学习,2011 (2),3-5.
-7-
《单片机应用实训》设计报告
4.1 protues 仿真原理图
-8-
《单片机应用实训》设计报告
5.1 设计体会 (1)秒表的设计完全是靠自己实践和老师的帮助,自己收获很多。要完全
完成基于单片机的作品必须能够看懂硬件原理图,有必要的 C 语言编程功底,较 强的依照原理图焊接能力,和根据硬件连接修改设置编程初始化的能力。最后还 要懂得一些关于功能实现的必要原理。如数码管动态显示原理,和共阴型四位一 体数码管的显示原理等。
(2)要有耐心和热情。调试是一个根据现象不断修改的过程。这时要细心, 耐心。
(3)掌握了开发单片机的系统工具,keil 和 protues 软件,掌握了单片机 系统设计的思想和方法。
(4)这只是开始,基于单片机的功能还有很多,但基本流程都大同小异。 相信有了这次的经验,其他的功能也一定能够设计出来。
《单片机应用实训》设计报告
摘要
本设计是基于 AT89S52 的智能跑秒表,此跑秒表能够实现 0~60 共一分钟时间 的精确显示,以及在人为干预条件下快速暂停显示,并具有再次快速启动和重启 功能.该表利用 12KHz 晶振可最小精确到 10ms,有较高可信度.
秒表制作中用到了硬件仿真,和软件编程方法.初步掌握了单片机系统的开 发流程.硬件设计是基础,后面的软件设计完全依据它而改变.连接器件时要注意 原件正负极的区分,如二极管的焊接等.核心程序用 keil 工具编写,编程语言是 标准 c 语言,语法主要是 c 语言规则以及与单片机相关的附加规则.为了实现显示, 分块设计了延时程序,数码管显示程序,定时器程序,和中断程序.其中延时是利 用了人的视觉暂留效应,使得四个数码管能同时显示.数码管显示用到了数据的 分离方法.定时器的初始化和开中断用到了中断源的设置方法.最后要在 protues 上进行软件仿真,进行检测.最后的步骤是下载调试。根据预期效果编写程序,在 单片机上检验,根据现象分析程序出错处,再修改,在下载调试。反复修改直到 成功。
2.2 硬件设计原理图
-4-
《单片机应用实训》设计报告 -5-
《单片机应用实训》设计报告
3.1 初始化 51 头文件 #include<AT89X52> ; 宏定义 #define uchar unsigned char #define uint unsigned int 数码管编码共阴型 uchar code
uchar sec=0; uint msec=0; uint k=0; void display(void);
void delay(uint t) //延时 0.1*n 毫秒 0 {
uint i; do {
for(i=0;i<10;i++) ; } while(t--); }
void main(void) {
在开发过程中,学到许多。一,加深了理论联系实践。在电路板焊接中,掌 握了基本操作方法,识别了一些元器件,如按键,二极管,数码管,晶振等。二, 初步学会了开发流程,即硬件设计,软件编程,下载调试,功能实现。此过程中 掌握了 keil 软件,protues 软件,程序下载软件的使用方法。三,初步了解了 A T89S52 系列内部结构和接口,了解到完整最小系统由复位电路,电源电路,单 片机芯片,时钟电路构成,加上外围电路可实现各种功能。四,掌握了 c 语言编 程方法,c 语言分两部分,一为有硬件相关,一为软件相关。因而具有高效的可 移植性,可修改性。养成了良好的程序设计风格.如大小写的使用,首行所缩进的 使,宏定义的使用。五,实现了自己的想法,作出了几个程序,体会到编程的快乐。 通过由最简单的点亮一个 led 灯开始,到做出流水灯,再到中断 0/1 的使用,使 得单片机的功能得到充分使用。最后到定时器,中断源的调用。