《单片机实验报告(计数器).docx》由会员分享,可在线阅读,更多相关《单片机实验报告(计数器).docx(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、扬州大学能源与动力工程学院课程设计报告题目:计数器课程:单片机原理及应用课程设计专业:电气工程及其自动化班级:电气 1001 名:学号:第 一 部 分任务2书单片机原理及应用课程设计任务书一、课题名称音乐倒数计数器二、课程设计目的课程设计是课程教学中的一项重要内容,是到达教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面结实地把握课堂教学内容、培育学生的实践和实际动手力量、提高学生全面素养具有很重要的意义。单片机原理及应用是一门理论性、有用性和实践性都很强的课程,课程设计环节 应占有更加重要的地位。单片机原理及应用课程设计的目的是让学生在理论学习的根底 上,通过完成一个涉及 MC
2、S-51 单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论学问与实际应用结合起来,而且能进一 步加深对电子电路、电子元器件等学问的生疏与理解,同时在软件编程、排错调试、相关 软件和仪器设备的使用技能等方面得到较全面的熬炼和提高。为今后能够独立进展某些单 片机应用系统的开发设计工作打下肯定的根底。通过单片机硬件和软件设计、调试、整理 资料等环节的培训,使学生初步把握工程设计方法和组织实践的根本技能,逐步生疏开展 科学实践的程序和方法。三、课程设计内容设计以 89C51 单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。1. 系统方案设计
3、:综合运用单片机课程中所学到的理论学问,学生依据所选课题的任务、要求和条件进展总体方案的设计。2. 硬件电路设计:对方案中以单片机为核心的电路进展设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。3. 软件设计:依据已设计出的软件系统框图,用汇编语言或C51 编制出各功能模块的子程序和整机软件系统的主程序。4. 调试:在单片机 EDA 仿真软件环境 Proteus 下进展仿真设计并调试;或在单片机周立功试验箱上进展相关设计并调试。四、课程设计要求利用 AT89C51 单片机结合字符型 LCD 显示器设计一个简易的倒数计数器,可用来煮便利面、煮开水或小睡片刻等。做一小段时间倒计数,当
4、倒计数为 0 时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。定时闹钟的根本功能如下。字符型LCD16 * 2显示器。显示格式为“TIME 分分:秒秒”。用 4 个按键操作来设置当前想要倒计数的时间。一旦按下键则开头倒计数,当计数为0 时,发出一阵音乐声。程序执行后工作指示灯 LED 闪动,表示程序开头执行,按下操作键 K1K4 动作如下。K1可调整倒计数的时间 160 分钟。K2设置倒计数的时间为 5 分钟,显示“0500”。K3设置倒计数的时间为 10 分钟,显示“1000”。K4设置倒计数的时间为 20 分钟,显示“2023”。复位后 LCD 的画面应能显示倒计时的分钟和秒数,此
5、时按 K1 键则在 LCD 上显示出设置画面。此时,假设:a. 按操作键K2增加倒计数的时间 1 分钟。b. 按操作键K3削减倒计数的时间 1 分钟。c. 按操作键K4设置完成。五、进度安排序号1内容布置任务,生疏课题要求天数0.52总体方案确定,硬件电路设计1.53软件编程1.54Proteus 仿真25总结,撰写课程设计报告1.5七、课程设计报告内容:总结设计过程,写出设计报告,设计报告具体内容要求如下:1. 课程设计的目和设计的内容。2. 课程设计的要求。3. 掌握系统总框图及系统工作原理。4. 掌握系统的硬件电路连接图,电路的原理。5. 软件设计流程图及其说明。6. 电路设计,软件编程
6、、调试中遇到的问题及分析解决方法。7. 试验结果及其分析。8. 体会。第 二 部 分课程设计报告目录1 工程概述和要求71.1 课程设计目的71.2 课程设计内容71.3 课程设计要求72 系统方案设计92.1 系统硬件设计92.2 系统软件设计93 硬件电路设计103.1 电路原理图103.2 AT89C51 单片机103.3 LCD1602 液晶显示电路设计与原理113.4 复位电路133.5 按键电路133.6 蜂鸣器144 软件编程设计154.1 程序流程图154.1.1 主程序流程图154.1.2 按键程序流程图164.1.3 LCD 显示流程图174.1.4 蜂鸣器发声程序流程图1
7、84.2 程序的关键代码195 PROTEUS 仿真结果206 总结237 附件24参考文献321 工程概述和要求本工程的任务是利用 AT89C51 单片机结合字符型 LCD 显示器设计一个简易的倒数计数器。做一小段时间倒计数,当倒计数为 0 时,则发出一段音乐声响。1.1 课程设计目的课程设计是课程教学中的一项重要内容,是到达教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面结实地把握课堂教学内容、培育学生的实践和实际动手力量、提高学生全面素养具有很重要的意义。单片机原理及应用是一门理论性、有用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。单片机原理及应用课程设计的
8、目的是让学生在理论学习的根底 上,通过完成一个涉及 MCS-51 单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论学问与实际应用结合起来,而且能进一 步加深对电子电路、电子元器件等学问的生疏与理解,同时在软件编程、排错调试、相关 软件和仪器设备的使用技能等方面得到较全面的熬炼和提高。为今后能够独立进展某些单 片机应用系统的开发设计工作打下肯定的根底。通过单片机硬件和软件设计、调试、整理 资料等环节的培训,使学生初步把握工程设计方法和组织实践的根本技能,逐步生疏开展 科学实践的程序和方法。1.2 课程设计内容设计以 89C51 单片机和外围元器件构成
9、的单片机应用系统,并完成相应的软硬件调试。1. 系统方案设计:综合运用单片机课程中所学到的理论学问,学生依据所选课题的任务、要求和条件进展总体方案的设计。2. 硬件电路设计:对方案中以单片机为核心的电路进展设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。3. 软件设计:依据已设计出的软件系统框图,用汇编语言或C51 编制出各功能模块的子程序和整机软件系统的主程序。4. 调试:在单片机 EDA 仿真软件环境 Proteus 下进展仿真设计并调试;或在单片机周立功试验箱上进展相关设计并调试。1.3 课程设计要求利用 AT89C51 单片机结合字符型 LCD 显示器设计一个简易的倒数计
10、数器,可用来煮便利面、煮开水或小睡片刻等。做一小段时间倒计数,当倒计数为 0 时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。定时闹钟的根本功能如下。字符型LCD16 * 2显示器。显示格式为“TIME 分分:秒秒”。用 4 个按键操作来设置当前想要倒计数的时间。一旦按下键则开头倒计数,当计数为0 时,发出一阵音乐声。程序执行后工作指示灯 LED 闪动,表示程序开头执行,按下操作键 K1K4 动作如下。K1可调整倒计数的时间 160 分钟。K2设置倒计数的时间为 5 分钟,显示“0500”。K3设置倒计数的时间为 10 分钟,显示“1000”。K4设置倒计数的时间为 20 分钟,显示“
11、2023”。复位后 LCD 的画面应能显示倒计时的分钟和秒数,此时按 K1 键则在 LCD 上显示出设置画面。此时,假设:a. 按操作键K2增加倒计数的时间 1 分钟。b. 按操作键K3削减倒计数的时间 1 分钟。c. 按操作键K4设置完成。键盘实现菜单功能的方法,已在题目 4 具体说明,不再赘述。此题目最大难点是实现音乐的播放。作者利用定时计数器,通过载入不同的计数初值,产生频率不同的方 波,输入到蜂鸣器 SOUNER中,使其发出频率不同的声音。本设计中单片机晶振为1.0592MHz,通过计算各音阶频率,可得 1、2、3、4、5、6、7 共 7 个音应赋给定时器的初值为 64580、6468
12、4、64777、64820、64898、64968、65030。在此根底上,可将乐曲的简谱转化为单片机可以 “识别”的“数组谱”,进一步参加对音长、休止符等的掌握量后,可以实现音乐的播放。2 系统方案设计2.1 系统硬件设计本工程的系统设计框图如图 2-1 所示:复位电路LCD1602AT89C51键盘图 2-1 总体设计方框图蜂鸣器由系统框图可看出,本设计由单片机AT89C51、LCD 液晶显示器、掌握键盘、蜂鸣器和复位电路几大模块构成。2.2 系统软件设计初始化扫描键盘扫描计数器是是否按下K5 是否按下是否为零是调整计时器否是否蜂鸣器发声否LCD 显示计数值计数器停顿计数完毕主程序开头初始
13、化,然后扫描键盘、复位电路和计数器。当键盘按键有按下时,调整计数器值,LCD 显示值。当复位键有按下时,计数器复位为初值,重倒计数。当计数器值倒计为 0 时,蜂鸣器发出声音,计数器停顿倒计,程序完毕。数器值, LCD 显示值。当复位键有按下时,计数器复位为初值,重倒计数。当计数器值倒计为 0 时,蜂鸣器发出声音,计数器停顿倒计,程序完毕。图 3-1 电路原理图3 硬件电路设计3.1 电路原理图图 3-1 系统总电路图3.2 AT89C51 单片机AT89C51 是一个低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的可反复擦写的Flash 只读程序存储器和 128 bytes
14、 的随机存取数据存储器RAM,器件承受 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51 指令系统,片内置通用 8 位中心处理器和 Flash 存储单元,AT89C51 单片机在电子行业中有着广泛的应用。AT89C51 单片机如图3-2 所示:8图 3-2 AT89C51 单片机3.3 LCD1602 液晶显示电路设计与原理工业字符型液晶,能够同时显示 16x02 即 32 个字符16 列 2 行。1602 字符型LCD 通常有 14 条引脚线或 16 条引脚线的LCD,多出来的 2 条线是背光电源。VCC(15 脚)和地线GND(16 脚),其掌握原理与 14 脚的LCD
15、 完全一样。1602 液晶模块内部的字符发生存储器CGROM)已经存储了 160 个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比方大写的英文字母“A”的代码是 01000001B41H,显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母“A”。Proteus7.7 中的 1602 液晶只有 14 个引脚,少了背光电源的两根引脚,完全兼容。本设计中,液晶的数据口与单片机的P3 口相连,液晶的掌握口与单片机的P2 口相连。LCD1602 液晶显示器如图 3-3 所示:图 3-3 LCD1602 液晶显示器
16、VCC(15 脚)和地线 GND(16 脚),其掌握原理与 14 脚的 LCD 完全一样,各引脚符号及其功能表和连接线如下表 3-1 所示。引脚符号功能说明连接线1VSS一般接地地92VDD接电源+5VVDD3V0液晶显示器比照度调整端,接正电源时比照度最弱,接地电源时比照度最高比照度过高时会产生“鬼影”,使用时可以通过一个10K 的电位器调整比照度。地4RSRS 为存放器选择,高电平 1 时选择数据存放器、低电平 0 时选择指令存放器。P2.05R/WR/W 为读写信号线,高电平(1)时进展读操作,低电平(0)时进展写操作。P2.16EE(或EN)端为使能(enable)端,下降沿使能。P2
17、.27DB0底 4 位三态、 双向数据总线 0 位最低位P3.08DB1底 4 位三态、 双向数据总线 1 位P3.19DB2底 4 位三态、 双向数据总线 2 位P3.210DB3底 4 位三态、 双向数据总线 3 位P3.311DB4高 4 位三态、 双向数据总线 4 位P3.412DB5高 4 位三态、 双向数据总线 5 位P3.513DB6高 4 位三态、 双向数据总线 6 位P3.614DB7高 4 位三态、 双向数据总线 7 位最高位也是 busy flagP3.715BLA背光电源正极16BLK背光 电源负极表 3-1 LCD 各引脚及其功能表3.4 复位电路当 MCS -5l
18、系列单片机的复位引脚RST(全称 RESET)消灭 2 个机器周期以上的高电寻常,单片机就执行复位操作。假设 RST 持续为高电平,单片机就处于循环复位状态。上电复位要求接通电源后,自动实现复位操作。当单片机已在运行当中时,按下复位键后松 开,也能使 RST 为一段时间的高电平,从而实现上电或开关复位的操作。复位电路如 3-4 所示:10图 3-4 复位电路3.5 按键电路按键用于掌握数码显示、LCD 显示、扬声器等模块的工作。通过扫描键盘来推断是否有按键按下,来设定各模块的工作状况,使各模块可以在按键的掌握下,有序地进展工 作。设计中使用单个按键实现单个功能,属于较为简洁的掌握方式。在多功能
19、系统设计的 试验中我们使用五个按键分别与单片机的p1.0、p1.1、p1.2、p1.3、p1.4 相连。通过按下相应的按键来处理相应的程序。如以下图3-5 所示:图 3-5 按键电路模块3.6 蜂鸣器蜂鸣器是一种一体化构造的电子讯响器,承受直流电压供电,广泛应用于计算机、 打印机、复印机、报警器、电子玩具、汽车电子设备、 机、定时器等电子产品中作发 声器件。 ;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”表示。单片机驱动他激蜂鸣器的方式有两种:一种是 PWM 输出口直接驱动,另一种是利用I/O 定时翻转电平产生驱动波形对蜂鸣器进展驱动。本设计选择利用
20、I/O 定时翻转电平产生驱动波形对蜂鸣器进展驱动。1利用 I/O 定时翻转电平来产生驱动波形的方式必需利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。比方为2500Hz 的蜂鸣器的驱动,可以知道周期为 400s,这样只需要驱动蜂鸣器的 I/O 口每200s 翻转一次电平就可以产生一个频率为 2500Hz,占空比为 1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。如以下图3-6 所示:图 3-6 蜂鸣器4 软件编程设计4.1 程序流程图4.1.1 主程序流程图主程序开头初始化,然后扫描键盘、复位电路和计数器。当键盘按键有按下时,
21、调整 计数器值,LCD 显示值。当 K5 键按下时开头计时,当计数器值倒计为 0 时,蜂鸣器发出声音,计数器停顿倒计,程序完毕。主程序流程图如图4-1 所示:开头初始化扫描键盘扫描计数器是是否按下是K5 是否按下是否为零否是调整计时器否蜂鸣器发声12否LCD 显示计数值计数器停顿计数完毕图 4-1 主程序流程图4.1.2 按键程序流程图开头初始化扫描按键否K1 键按下是进入整时模式否是进入微调模式否K2 键按下是K2 键按下设置 5 分钟是否否加 1K3 键按下是K3 键按下否设置 10 是分钟否减 113K4 键按下K5 键按设置 20 分钟主程序开头初始化,然后扫描按键。假设K1 按下时,
22、进入微调模式,按K2 加 1,按 K3 减 1; 假设 K1 没有按下则进入整时设定模式,按 K2 设置 5 分钟,按 K3 设置 10 分钟,按 K4 设置 20 分钟。依据按键状态显示时间。依据 K5 键按下,开头计时。按键程序流程图如图 4-2 所示:是4.1.3 LCD 显示流程图LCD 显示流程图如图 4-3 所示:开头是否有程序执行图 4-2按键流程图否是LCD 闪动是否有键按下否是LCD 响应时间复位键是否按下否是LCD 倒数计时是否有键按下否是LCD 响应相应画面14退出图 4-3LCD 流程图 4.1.4 蜂鸣器发声程序流程图开头否K1 是否按下是否FLAG=0?是图 4-4
23、 蜂鸣器发声程序流程图蜂鸣器发声程序流程图如图 4-4 所示:置 200 次计数置 200 次计数P1.5 输出取反P1.5 输出取反延时 30ms延时 1ms否计数值是否计数值是否计完?否计完?是FLAG 取反是FLAG 取反164.2 程序的关键代码解释一下按键代码的工作原理(以局部代码为例,其他按键类似):void KEY1while(flag1)if(key2=0)delay(time);延时,用于按键去抖;if(key2=0)if(minute0)minute=minute-1;k3 键按下则计时初值减一分钟;write_time(7,minute);if(key4=0|key5=0
24、)delay(150);延时,用于按键去抖;if(key4=0|key5=0)flag1=0;关闭微调功能;flag =1; TR0=1;5 PROTEUS 仿真结果依据前面的硬件、软件的设计,在proteus7.7 上进展仿真试验,结果显示系统一切运行正常。系统硬件设计的总电路图如下:单片机上电复位后,显示如下:不按 K1,直接按K2 时,定时 5 分钟,显示:不按 K1,直接按K3 时,定时 10 分钟,显示:17不按 K1,直接按K4 时,定时 20 分钟,显示:按 K1 后,可按 K2,K3 进展定时时间的微调,按K2 加一分钟,按 K3 减一分钟,显示如下:时间设定好之后按K5 进展
25、确定,开头倒计时,如下:在计时过程中,LED 绿灯一秒闪动一次,如下:18当计时时间到 0 是,蜂鸣器发出一段音乐声响,通知倒计时间终了。如下:经测试,本设计完全能够正常工作,完成了各项要求。6 总结经过一周半的课程设计,简洁带有 LCD 显示的音乐倒数计数器根本完成, 系统根本功能根本实现,测试运行也根本正常。该系统根本上完成了计数闹时的功能。课程设计是培育学生综合运用所学学问,觉察、提出、分析和解决实际问题,熬炼实践力量的重要环节。在本次设计中遇到了很多问题,特别是程序细节上的问题,但只要自己能沉下心来认真、细心、急躁的去调试程序,最终全部的问题便一个一个均迎刃而解,这也让我生疏到,在工程
26、设计的过程中肯定要经的住问题的考验,只要我们认真认真的排查问题的缘由,最终还是能够解决的。总之,这次设计从软件编写、调试到 PROTEUS 仿真调试,我倾注了大量的时间和心血,固然也收获了很多。在此生疏到,要学好硬件或软件,肯定要踏实下来做工程,这样我们的收获才是最大的,最直接的。1920源程序7 附件#include #include #define time 100 #define uint unsigned int#define uchar unsigned charuint t,flag,flag0,flag1,flag2,flag3,flag4,flag5,minute,second
27、=60; uchar num,j,i,k=0;uchar code table=“TIME00:00“;uint code table1=64580,64684,64777,64820,64898,64968,65030;sbit key1=P10; sbit key2=P11; sbit key3=P12; sbit key4=P13; sbit key5=P14; sbit P1_5=P15; sbit RS=P20; sbit RW=P21; sbit E=P22;sbit led_green=P24;void write_time(uint addr,uint date);/延时函数/
28、 void delay(uint z)uint x,y; for(x=z;x0;x-)for(y=110;y0;y-);/延时 1S/ void delay1(void)uchar a,b,c; for(c=13;c0;c-)for(b=247;b0;b-)for(a=142;a0;a-);_nop_;/1602 写命令函数/ void write_com(uchar com)RS=0;P3=com; delay(5); E=1;delay(10);E=0;/1602 写数据函数/ void write_date(uchar date)RS=1;P3=date; delay(5); E=1;d
29、elay(10);E=0;/按键 1 处理函数/ void KEY1while(flag1)if(key2=0)delay(time); if(key2=0)if(minute0) minute=minute-1; write_time(7,minute);if(key4=0|key5=0)delay(150); if(key4=0|key5=0)flag1=0; flag =1; TR0=1;/按键 2 处理函数/ void KEY2minute=5; write_time(7,minute); while(flag2)if(key5=0)delay(time); if(key5=0)fla
30、g2=0; flag =1; TR0=1;/按键 3 处理函数/ void KEY3minute=10; write_time(7,minute); while(flag3)if(key5=0)delay(time); if(key5=0)flag3=0; flag =1; TR0=1;/按键 4 处理函数/ void KEY4minute=20; write_time(7,minute); while(flag4)if(key5=0)delay(150); if(key5=0)flag4=0; flag =1; TR0=1;void write_time(uint addr,uint dat
31、e)uint ge,shi; ge=date%10; shi=date/10; write_com(0x80+addr); write_date(0x30+shi); write_date(0x30+ge); if(addr=7&date=0)j=1;if(j=1&addr=10&date=0)2flag0=1;TR0=0;TR1=1;flag5=1;/初始化函数/ void initP1=0xff;RW=0;write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x80);TMOD=0x11;TH0=(65536-50000
32、)/256;TL0=(65536-50000)%256;TH1=0xfc;TL1=0x44;ET1=1;ET0=1;/TR1=1;/TR0=1;EA=1;flag0=1; for(num=0;num0)minute=minute-1; write_time(7,minute);if(second=0)k=1;second=60;int maininit;while(1)while(flag0)start; counter; while(flag5)delay1; i+;if(i7)i=0;return 0;void inter0interrupt 1TH0=(65536-50000)/256;
33、 TL0=(65536-50000)%256; t+;void initer1 interrupt 3TH1=table1i/256;TL1=table1i%256;P1_5=P1_5;if(key5=0)delay(100); if(key5=0)TR1=0;flag5=0; k=0; j=0;参 考 文 献1 张毅刚主编,单片机原理及应用,北京:高等教育出版社,20232 陈涛编著,单片机应用及C51 程序设计,北京:机械工业出版社,20233 周润景主编,PROTEUS 入门有用教程,北京:机械工业出版社,20234 皮大能主编,单片机课程设计指导书,北京:北京理工大学出版社,20235 楼然苗主编, 单片机试验与课程设计 Proteus 仿真版,浙江:浙江大学出版社 , 20237 掌握、电子技术类杂志、报刊