简单的秒表(单片机)(2)

更新时间:2023-10-20 14:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河南理工大学《单片机基础与科技创新》课程结题报告

河南理工大学

《单片机基础与科技创新》课程结题报告

题目:简单的秒表

姓 名: 吴鹏 学 号: 311308** 专业班级: 测仪1302 任课老师: *** 所在学院:电气工程与自动化学院

2015年 05 月 03 日

河南理工大学《单片机基础与科技创新》课程结题报告

摘要

在当今科技高度发达的社会中,单片机已成为每个工科学生的必修课,是一切电子产品设计的基础课之一。在当今的社会中,单片机应用越来越广泛,在学习了16课时的单片机设计入门课程之后,进行了第一次的单片机仿真设计实验。

此次实验运用了Keil软件编译.HEX文件,第一次Proteus仿真软件进行仿真设计。本设计是利用AT89C51单片机简单控制两个数码管进0~10秒的计时,其要求是:秒表计时为0到9秒,精确到0.1秒;此次实验设计的最关键地方就是求延时时间,在本次试验中,我使用自定义的延时函数,经过多次的运行某些语句从而达到延时效果。

方法简单介绍:利用单片机控制,数码管共阴极;两个数码管分别接P0口和P2口,其中由于P0口内部没有上拉电阻,为高阻状态,不能正常输出高/低电平,因此,外接上拉电阻,大小10K欧姆。19脚和18引脚接片内时钟振荡方式,振荡电容33pF,晶振大小12MHz。我此次采用共阴极数码管接法,在单片机I/O口输出高电平来激发数码管对应角端使其点亮对应数码管中的独立二极管,让其显示需要的字符。在实验过程中遇到了很多阻力,虽然是个简单的数码管实验,但是对于第一次设计的新手来说这已是很大的进步了,面对第一次,最困难的其实不是设计,而是坏境软件的安装、调试,程序的编写调试与修改;面对这些初级时所需要面对的困难,需要的是冷静、耐心、毅力与一次与一次的调试实验。

实验最终取得的成果:在经过几个小时的设计、程序的编写、修改、电路图的设计、修改、程序在硬件上的运行调试并经过修改之后,实验目标基本完成,两个数码管分别可现实计时功能,一个显示0到9秒精度为1秒,另一个数码管则显示的是0到9,精度为0.1秒。

- 1 -

河南理工大学《单片机基础与科技创新》课程结题报告

目录

一、 概述 ...................................................................................................................... 3 二、 总体方案及硬件设计 .......................................................................................... 3

2.1设计思路 .......................................................................................................... 3

(1)使用单片机 ............................................................................................ 3 (2)使用液晶或数码管显示; .................................................................... 3 2.2硬件设计 .......................................................................................................... 3

(1)硬件需求介绍 ........................................................................................ 3 (2)管脚说明(仅介绍所用到的引脚) .................................................... 3 2.3晶体振荡电路 .................................................................................................. 4 2.4整体硬件电路图 ............................................................................................ 4 三、软件设计 ................................................................................................................ 5 四、软件仿真 ................................................................................................................ 5 五、设计体会 ................................................................................................................ 6 六、参考文献 ................................................................................................................ 6 七、附1 源程序代码 ................................................................................................. 7

- 2 -

河南理工大学《单片机基础与科技创新》课程结题报告

一、 概述

此次试验设计为第一次进行单片机程序的简单设计。第一次运用了Keil软件编译.HEX文件,第一次Proteus仿真软件进行仿真设计。本设计是利用AT89C51单片机简单控制两个数码管进0~10秒的计时,其要求是:秒表计时为0~10秒,精确到0.1秒;

方法简单介绍:利用单片机控制,数码管共阴极;两个数码管分别接P0口和P2口,其中由于P0口内部没有上拉电阻,为高阻状态,不能正常输出高/低电平,因此,外接上拉电阻,大小10K欧姆。19脚和18引脚接片内时钟振荡方式,振荡电容33pF,晶振大小12MHz。

取得的成果:在进行精心设计与仿真、软件的编写编译之后,在Proteu中能正常完成所需要完成的目标。 二、 总体方案及硬件设计

2.1设计思路

(1)使用单片机,设计秒表,能显示0到9秒之间的简单计时,精确到0.1

秒; (2)使用液晶或数码管显示;

2.2硬件设计

(1)硬件需求介绍

本次试验,需要AT89C51单片机一个,数码管两个,12MHz的晶振一个7引脚排阻一个,33pF电容两个,外加电源,导线等。 (2)管脚说明(仅介绍所用到的引脚)

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口。当P1口的管脚第一次写1时,

被定义为高阻输入。P0口,每个口可独立控制,这里我需要选用P0.0 – P0.7来控制数码管1的现实变化。P0口内部没有上拉电阻,为高阻态,所以不能正常输出高/低电平,在此我选用10K欧姆的8引脚的共一端排阻作为上拉电阻。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输

出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

- 3 -

河南理工大学《单片机基础与科技创新》课程结题报告

这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 2.3晶体振荡电路

MCS--51单片机内部的振荡电路是一个高增益反相放大器,引线 XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。我们选用51单片机12MHZ的内部振荡方式,电路如下:电容器C1,C2起稳定振荡频率,快速起振的作用,C1和C2可在20-100PF之间取,这里取33P

Proteus下的振荡电路图

2.4整体硬件电路图

数码管共阴极Proteus下的运行

- 4 -

河南理工大学《单片机基础与科技创新》课程结题报告

三、软件设计

根据条件需求,本次试验思路为:在单片机供电的情况下,数码管可简单的进行0到9秒之间的简单计时,精确到0.1秒。本次试验的关键点在于计算机器周期及延时时间,采用的12MHz的晶振,则有:(1/机器周期)=时钟频率(1/时钟周期)。普通的51单片机来说:频率是1MHZ,时钟周期是(1/12)us,机器周期是12倍的时钟周期即为1us。根据我写的程序,可大概计算运行0.1秒即就是100000微妙所需要的执行周期次数,也就是要设置的循环次数;在Keil中的的编写的延时函数如下:

void delay(int k)

{

unsigned char x,j; for(;k>0;k--)

for(x=100;x>0;x--) for(j=2;j>0;j--); }

则有k*100*2+100*100+K=100000微妙=0.1秒;得K约为100;即当K等于100时,延时大概为0.1秒。

四、软件仿真

此次仿真采用的是Proteus坏境仿真,设置好程序后,根据程序链接电路图,然后利用Keil把C文件转化成 . HEX文件,烧录在单片机内,直接点运行,就可以在Proteus下看到硬件的运行情况。

Proteus程序运行下的显示

- 5 -

河南理工大学《单片机基础与科技创新》课程结题报告

五、设计体会

如今的社会,单片机已成为每一个电子类专业学生的基础课,乃至每个工科学生的必修课之一。此次单片机简单设计是第一次设计,也是第一次使用Keil和Proteus,走了好多弯路,虽然在课堂上对老师的操作过程感觉得很简单,自己操作起来的确是很麻烦的,包括Keil软件的安装,Proteus运行坏境的安装。第一次往往是要做大量的准备的,面对的不仅是程序安装过程中遇到的麻烦,而且还有在试验中所写程序的编译后运行不成常时对程序的修改。经过此次简单设计,我明白了学习电子电路需要的不仅是耐心与耐力,还是培养解决问题思路的方法之一。只要你有耐心,有毅力,我相信天赋都不在是重要的了。虽然程序简单了点,或许还存在很多的问题,在希望老师的指导,并学习好这门课程,为以后的专业课打基础。作为一名电子类专业的学生,对此次设计的缺陷的地方希望老师多多指点,我定会虚心学习改进。 六、参考文献

电子工业出版社出版的张天祥编著的《51单片机C语言教程》 。

姓名 : 吴 鹏 学号 :311308000*** 班级 :测仪1302 电话 :18339796037

- 6 -

河南理工大学《单片机基础与科技创新》课程结题报告

附:源程序代码 #include int a,i;

suzu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ;

void delay(int k){ unsigned char x,j; for(;k>0;k--) for(x=100;x>0;x--) for(j=2;j>0;j--); }

void main(){

int y=0; a=1;

while(a<=9) {P0=suzu[y]; for(i=0;i<=9;i++){ delay(100); P2=suzu[i];

} ++y; ++a;

}

}

- 7 -

本文来源:https://www.bwwdw.com/article/m4af.html

Top