当前位置:文档之家› 单片机课程设计51实验报告DOC

单片机课程设计51实验报告DOC

福建工程学院软件学院题目:51开发洗衣机班级:物联网工程1202 成员:座号:04 28指导老师:日期:年月日课设报告目录1摘要 (1)2.设计需求 (1)2.1功能需求 (1)2.1.1 基本功能 (1)2.1.2扩展功能 (1)2.2 设计要求 (2)2.2.1 单片机芯片部件功能 (2)2.2.2 LCD数码显示管部件功能 (2)2.2.3 按键部件功能 (2)2.2.4 蜂鸣器部件功能 (2)3硬件设计及描述 (2)3.1总体描述 (2)3.2系统总体框图 (3)3.3Proteus电路图 (3)3.4各部分硬件介绍 (4)3.4.1晶振Protues仿真 (4)3.4.2LCDProtues仿真 (5)3.4.3 按键Protues仿真 (5)3.4.4上拉电阻Protues仿真 (6)3.4.5C51芯片Protues仿真 (6)3.4.6上电复位电路Protues仿真 (8)3.4.7蜂鸣器Protues仿真 (9)4 软件设计流程及描述 (10)4.1程序流程图 (10)4.2函数模块及功能 (10)5功能实现 (11)5.1程序烧入上电调试 (11)5.2时间递增跳变 (12)5.3比分更变 (13)5.4比赛得分复位 (14)5.5比赛时间复位 (14)6 心得体会 (15)7源程序代码: (16)1摘要是为了方便足球比赛时计时与计分及时与准确公开而引申出的实用产品。

在此设计中接入了一个1602液晶显示屏,第一行用来记录赛程的时间,第二行用于显示比赛的得分情况。

赛程计时用倒计时来计时。

在比赛结束时按下相应按键蜂鸣器会响起,提醒比赛时间结束。

这次试验运用C语言进行编程,编程后利用Keil uVision来进行编译,再生成.hex文件装入芯片中,采用Proteus软件来仿真,检验功能是否能够正常实现,最后利用单片机MCS-51实机来实现功能。

本设计以AT89S51单片机作为核心,综合应用单片机定时器、中断、LCD1602 液晶显示等知识,设计一款单片机和简单外设控制的足球计分器应用,同时显示当前的比赛进行时间,比赛队伍,比分状况。

2.设计需求2.1功能需求2.1.1 基本功能(1)屏上显示比赛已运行时间(2)屏上显示A队和B队的得分(3)屏上显示上下半场(H-L)(4)通过按键控制比分的增减2.1.2扩展功能(1)按键实现比赛场次的更换(2)按键实现比赛计时的复位(3)按键实现比赛比分的复位(4)在比赛结束时,蜂鸣器在主裁判的控制下响起2.2 设计要求2.2.1 单片机芯片部件功能在实验开发板上,根据功能需求,设定了控制模块由AT89C51单片机为主控制核心芯片,是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,具有在线编程功能,低功耗,能在5V超低压工作,选用12MHZ 的晶振,使得单片机有合理的运行速度;输入模块由按键控制,选定比赛的节次,加分,比赛的暂停;输出模块由两位LED显示当前洗涤剩余时间。

2.2.2 LED显示管部件功能共阴七段数码管通过80C51的P0口控制其相应显示的值,用除10取余和取整分别给时-分-秒赋值。

2.2.3 按键部件功能该实验设计只用矩阵键盘,在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图2-2-1所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,图2-2-1 按键2.2.4 蜂鸣器部件功能蜂鸣器是一种可以把电信号转换成声音信号的一种装置,可以在嵌入式的小型单片机系统中作用,自制音乐之类的,其主要的原理是在待测物体超过常规数值的时候会有电流作用于部件上,通过放大电路将电流放大从而将其转换作用在震动器上,震动器发生震动从而产生了声响,实现蜂鸣功能。

3硬件设计及描述3.1总体描述1)设置LCD第一行用来记录赛程的时间2)设置LCD第二行用于显示比赛的得分情况3)设置按键功能控制LCD相应位显示时间与得分4)利用一个蜂鸣器用来作为比赛结束的警报。

3.2系统总体框图图3-3-1 系统整体Protues仿真图3.4各部分硬件介绍3.4.1晶振Protues仿真图3-4-1 晶振Protues仿真图晶体振荡电路用于产生单片机工作时所需的时钟信号,从而保证各部分工作的同步。

单片机内部有一个高增益反相反大器,只要在输入端XTAL1与输出XTAL2之间挂一个晶体振荡器和微调电容就可以构成一个稳定的自激震荡器并在单片机内部产生的时钟脉冲信号。

电容C1与C2用于稳定频率和快速起振。

3.4.2LCDProtues仿真图3-4-2 数码管Protues仿真图显示方式为动态显示是指依次轮流点亮显示器的各个位,每隔一段时间则点亮一次,设置足够短的时间,利用人的视觉暂停效应和发光二极管的熄灭时的余辉,达到多个字符同时显示的效果。

运行这种显示方式可以降低成本与功耗,但需要较大的驱动电流。

3.4.3 按键Protues仿真图3-4-3 按键Protues仿真图键盘中按键数量设置依系统操作要求而定。

单片机应用系统中的键盘有独立式和行列式两种。

独立式键盘中,每个按键占用一个I/O口线,每个按键相对独立。

行列式键盘用I/O口线组成行列结构,按键设置在交叉点上,在按键数目较多时运用这种连接方式,可节省I/O口连线。

行列式键盘的标识最常用的两种方法:行扫描法和线反转法。

本次实训采用矩阵键盘进行操作实现。

3.4.4上拉电阻Protues仿真图3-4-4 上拉电阻Protues仿真图排阻驱动,用以增加电流,一个脚接高电位VCC,其他脚接单片机I/o口。

3.4.5C51芯片Protues仿真图3-4-5 C51芯片Protues仿真图VCC:电源。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE 禁止,置位无效。

PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)3.4.6上电复位电路Protues仿真图3-4-6 上电复位电路Protues仿真图本设计采用上电按钮复位电路:首先经过上电复位,当按下按键时,开关直接与VCC相连,为高电平形成复位,同时电解电容被电路放电;按键松开时,VCC 对电容充电,充电电流在电阻上,开关依然为高电平,仍然是复位,充电完成后,电容相当于开路,开关为低电平,单片机芯片正常工作。

其中电阻R2决定了电容充电的时间,R2越大则充电时间长,复位信号从VCC回落到0V的时间也长。

3.4.7蜂鸣器Protues仿真图3-4-7 蜂鸣器Protues仿真图蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的。

但是单片机IO口输出的电流较小,增加电流放大的电路。

程序中通过改变单片机对应IO口输出波形的频率,产生各种不同音色、音调的声音。

可以有两种驱动方式,即用PNP或NPN三极管电流放大电路驱动。

本电路通过一个NPN 三极管来放大驱动蜂鸣器,基极连接R4,发射极E连接一个VCC,集电极C连接蜂鸣器后接地。

单片机在复位后的个I/O口是高电平,此时三极管是截止的,编写程序使选定的I/O为低电平,此时三极管导通,导通后蜂鸣器与电源正极连通,构成一个工作回路,从而发出滴滴的响声。

4 软件设计流程及描述4.1程序流程图主程序主要完成系统的初始化和按键的捕获,在按键没有按下时,调用显示子程序4.2函数模块及功能(1)函数开头用于定义数组,按键端口位置,定义时钟的初始显示时间值和定义程序中最核心的数组部分,为后续的程序实现奠定基础。

程序代码如下:(数组定义不再累述)#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit rs=P2^5; //1602数据/命令选择引脚sbit rw=P2^6; //1602读写引脚sbit en=P2^7; //1602使能引脚(2)void delay(uint del) //延时程序,用于del*1ms延时(3)void wcmd(uchar cmd) //写命令(4)void wdat(uchar dat) //写数据(5)void init() //初始化(6)void write_char(uchar hang,uchar lie,char sign) //写字符(7)void it0(void)interrupt 1 //定时器0中断定时器定义了EA 和ET0开中断,时钟每隔100ms跳变一次实现时间递增(8)void Trup() //定时中断(9)void display() //显示,包括了比赛运行时间与比分的显示(10)uchar Keyscan(void) //判断哪个键按下(11)void KEY() //键值的返回(12)void Outside_Init(void) //开中断(13)void play(uint d) //蜂鸣器(14)void main()//主程序5功能实现(以下调试过程均在联调中进行)5.1程序烧入上电调试图5-1-1 上电调试5.2时间递增跳变图5-1-2 用时015:10图5-1-3 用时113:065.3比分更变图5-1-4 比分05:00图5-1-5 比分05:075.4比赛得分复位图5-1-6 得分复位5.5比赛时间复位图5-1-7时间复位6 心得体会经过两周的课程设计,不断的测试与分析,最终完成了电子时钟的设计与制作。

相关主题