版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、东 北 石 油 大 学课 程 设 计课 程 单片机课程设计 题 目 音乐倒数计数器 学 院 电气信息工程学院 专业班级 自动化11-1 学生姓名 罗宏星 学生学号 110601140121 指导教师 李艳辉 邵克勇 2014年 7 月 7 日东北石油大学课程设计任务书课程 单片机课程设计题目 音乐倒数计数器 专业 自动化 姓名 罗宏星 学号 110601140121(2)显示主要内容:利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响。基本要求:定时闹钟的基本功能如下。(1)字符型LCD(16 ´&
2、#160;2)显示器。格式为“TIME 分分:秒秒”。用4个按键操作来设置当前想要倒计数的时间。当计数为0时,发出一阵音乐声。程序执行后工作指示灯LED闪动,表示程序开始执行。主要参考资料:1 张毅刚. 单片机原理及应用M. 北京: 高等教育出版社, 2003.2 李广第. 单片机基础M. 北京: 北京航空航天打学出版社, 2009.3 吴金戎. 8051单片机实践与应用M. 北京: 清华大学出版社, 2003.4 杨文龙. 单片机技术及其应用M. 北京: 电子工业出版社, 2008.5 王德彪. MCS-51单片机原理及接口技术M. 北京: 电子工业出版社, 2005.完成期限 2014.6
3、.30-2014.7.4 指导教师 李艳辉 邵克勇 专业负责人 目录第1章 概述11.1 发展前景11.2 设计要求11.3 设计方案1第2章 系统结构及主要元器件22.1 AT89C51单片机22.2 LCD显示器3第3章 硬件设计43.1 显示电路43.2 输入电路43.3 复位电路53.4 报警电路5第4章 软件设计64.1 程序流程图64.2程序源代码6第5章 系统仿真及调试155.1 软件调试155.2软硬件调试155.3系统仿真17参考文献1919单片机控制系统课程设计(报告)第1章 概述1.1 发展前景随着人们生活水平的不断提高单片机控制无疑是人们追求的目标之一,它给人带来的方便
4、也是不可置否的,人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。1.2 设计要求利用数字AT89C51单片机实现倒数计数器的功能,设定时间后在LED数码管上显示相应的时间。其功能和性能指标如下: 1、字符型LCD(16 2)显示器,显示格式为“TIME 分分:秒秒”。 2、用4个按键操
5、作来设置当前想要倒计数的时间。 3、一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。 4、程序执行后工作指示灯LED闪动,表示程序开始执行,按下操作键K1K4动作如下: (1)K1可调整倒计数的时间160分钟。 (2)K2设置倒计数的时间为5分钟,显示“0500”。 (3)K3设置倒计数的时间为10分钟,显示“1000”。 (4)K4设置倒计数的时间为20分钟,显示“2000”。 5、复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD上显示出设置画面。此时,若: (1)按操作键K2增加倒计数的时间1分钟。 (2)按操作键K3减少倒计数的时间1分钟。 (3)按操作键K4
6、设置完成。1.3 设计方案音乐倒数计数器所倒数的时间由数字显示,控制器使用单片机AT89C51。本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计时,并将时间显示在LCD1602显示器上。当倒计数为0时,蜂鸣器就发出音乐声响等等。该计数器系统主要由计数器模块、LCD显示器模块、蜂鸣器模块、键盘模块、复位模块等部分组成。总体设计方框图如图1-1所示。LCD1602复位电路AT89C51键盘蜂鸣器 图1-1 总体设计方框图第2章 系统结构及主要元器件2.1 AT89C51单片机AT8
7、9C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统
8、提供了一种灵活性高且价廉的方案。 图2-1 AT89C51单片机引脚2.2 LCD显示器1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5×7或者5×11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。 图2-2 LCD1602引脚图表2-1 LCD1602各引脚功能表引脚符号功能说明1VSS一般接地2VDD接电源+5V3V0液晶显示器对比度调整4RS高电平1时选择数据寄存器、低电平0时选择指令寄存器5R/W高电平1时进行读操作、低电平0时进行
9、写操作6E使能端,下降沿使能7DB0低4位三态、双向数据总线0位8DB1低4位三态、双向数据总线1位9DB2低4位三态、双向数据总线2位10DB3低4位三态、双向数据总线3位11DB4高4位三态、双向数据总线4位12DB5高4位三态、双向数据总线5位13DB6高4位三态、双向数据总线6位14DB7高4位三态、双向数据总线7位15BLA背光电源正级16BLK背光电源负极第3章 硬件设计3.1 显示电路显示电路硬件连接如图3-1所示,有单片机和一个LCD1602液晶显示器组成,P0为输入口,P2为片选口。 图3-1 显示电路连接图3.2 输入电路按键用于控制数码显示、LCD显示、扬声器等模块的工作
10、。通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。设计中使用单个按键实现单个功能,属于较为简单的控制方式。 在多功能系统设计的试验中我们使用五个按键分别与单片机的P1.0、P1.1、P1.2、P1.3、P1.4相连。通过按下相应的按键来处理相应的程序。输入电路连接图如图3-2所示。 图3-2输入电路连接图3.3 复位电路当MCS -5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。上电复位要求接通电源后,自动实现复位操作。当单片机已在运行当中时,按下复
11、位键后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。复位电路连接如3-4所示。 图3-3 复位电路连接图3.4 报警电路利用I/O 定时翻转电平来产生驱动波形的方式必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400s,这样只需要驱动蜂鸣器的I/O 口每200s 翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。本设计中用单片机的P1.5引脚控制蜂鸣器。报警电路连接图如图3-4所示。 图3-4 报警
12、电路连接图第4章 软件设计4.1 程序流程图主程序开始初始化,然后扫描键盘、复位电路和计数器。当键盘按键有按下时,调整计数器值,LCD显示新值。当K5键按下时开始计时,当计数器值倒计为0时,蜂鸣器发出声音,计数器停止倒计,程序结束。主程序流程图如图4-1所示。否开始初始化扫描键盘是否按下调整计时器是hiLCD显示计数值扫描计数器蜂鸣器发声计数器停止计数K5是否按 下否是否为零结束是是否 图4-1 主程序流程图4.2程序源代码#include<reg51.h>#include<intrins.h> #define time 100#define uint unsigned
13、 int#define uchar unsigned charuint t,flag,flag0,flag1,flag2,flag3,flag4,flag5,minute,second=60;uchar num,j,i,k=0;uchar code table="TIME 00: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;
14、sbit RS=P26; sbit RW=P25; sbit LcdE=P27;sbit led_green=P20; void write_time(uint addr,uint date); void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);void delay1(void)uchar a,b,c; for(c=13;c>0;c-) for(b=247;b>0;b-) for(a=142;a>0;a-); _nop_();void write_com(uchar com)RS=0;RW
15、=0; P0=com; delay(5); LcdE=1; delay(10); LcdE=0; void write_date(uchar date)RS=1;RW=0; P0=date; delay(5); LcdE=1; delay(10); LcdE=0;void KEY1() while(flag1) if(key2=0) delay(time); if(key2=0) if(minute<60) minute=minute+1; write_time(7,minute); if(key3=0) delay(time); if(key3=0) if(minute>0) m
16、inute=minute-1; write_time(7,minute); if(key4=0|key5=0) delay(150); if(key4=0|key5=0) flag1=0; flag=1; TR0=1; void KEY2() minute=5; write_time(7,minute); while(flag2) if(key5=0) delay(time); if(key5=0) flag2=0; flag =1; TR0=1; void KEY3()minute=10; write_time(7,minute); while(flag3)if(key5=0)delay(t
17、ime); if(key5=0)flag3=0; flag =1;TR0=1;void KEY4() minute=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 date)uint ge,shi; ge=date%10; shi=date/10;write_com(0x80+addr); write_date(0x30+shi); write_date(0x30+ge);if(addr=7&
18、amp;&date=0) j=1;if(j=1&&addr=10&&date=0)flag0=1; TR0=0; TR1=1; flag5=1;void init()P1=0xff; RW=0; write_com(0x38); write_com(0x0c); write_com(0x06);write_com(0x01); write_com(0x80);TMOD=0x11; TH1=(65536-50000)/256; TL1=(65536-50000)%256;TH0=0xff; TL0=0xff; ET0=1; ET1=1;TR0=0;TR1=
19、0; EA=1;flag0=1; for(num=0;num<12;num+)write_date(tablenum); delay(20);void start()if(key1=0)delay(time); if(key1=0)flag0=0; flag1=1; KEY1();if(key2=0)delay(time); if(key2=0) flag0=0; flag2=1; KEY2();if(key3=0)delay(time); if(key3=0)flag0=0; flag3=1; KEY3();if(key4=0)delay(150); if(key4=0)flag0=0
20、; flag4=1; KEY4();void write_time0()minute=minute-1; write_time(7,minute); write_time(10,59); flag=0; void counter()if(t=20)led_green=led_green1; if(flag=1) write_time0(); t=0; second=second-1;write_time(10,second); if(k=1&&second=59)if(minute>0) minute=minute-1; write_time(7,minute);if(s
21、econd=0)k=1; second=60;int main()init(); while(1)while(flag0) start(); counter(); while(flag5)delay1(); i+; if(i>7) i=0;return 0; void Timer0() interrupt 1TH0=(65536-50000)/256; TL0=(65536-50000)%256; t+;void Timer1() interrupt 3TH1=table1i/256; TL1=table1i%256; P1_5=P1_5; if(key5=0)delay(100); i
22、f(key5=0)TR1=0; flag5=0; k=0;j=0;第5章 系统仿真及调试5.1 软件调试软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。通过反复调试修改找出了程序中的语法与逻辑错误,并加以改正,最后调试成功。5.2软硬件调试软硬件联调是指把调试无误的软件程序烧制进单片机芯片内部,通上电源后,检查硬件工作是否有预期的效果,如果没有则需要检测软件是否在实现功能上有欠缺。若有错误,通过改写软件来调试,直至达到预期效果,则设计圆满成功。本程序在调试时发现k1键未达到预期效果,通过反复试验,不断修改最后达到了预期效果。修改后的部分程序如下。void KEY1() while(flag1) if(key2=0) delay(time); if(key2=0) if(minute<60) minute=minute+1; write_time(7,minute); if(key3=0) delay(time); if(key3=0) if(minute>0) minut
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级统计师资格考试(高级统计实务与案例分析)模拟测试卷及答案(2026年全国)
- 2026学习新安全生产法知识竞赛试题库及答案共50题集合
- 第四章 成本计算方法(教学课件)
- 2026年税务师财务与会计核心分录速记真题及答案
- 2026年克拉玛依高级统计师资格考试(高级统计实务与案例分析)自测试题库及答案
- 小学教师礼仪试题及答案
- 咸职单招试题及答案
- 2026年数据分析师数据处理及可视化试题及答案
- 铁道概论试题及答案b卷
- 2026年小学百科知识竞赛题库及答案
- 2025-2026学年秋期苏科版物理八年级上册期中训练卷【附答案】
- 【新教材】教科版(2024)八年级下册物理期末测试卷(难度大含答案)
- 2026年湘教版七年级下册语文期末质量达标卷(含答案可下载)
- 2026年高考英语全国二卷试题(附答案)
- 2026广东深圳市人才服务中心市场化岗位招聘笔试备考题库及答案解析
- 侍茄师初级专项能力职业技能专业能力考卷
- 无人机飞防工作制度
- 中国注意缺陷多动障碍诊疗指南(2025年版)
- 2025年中国移动通信集团新疆有限公司巴州分公司社会招聘笔试参考题库附带答案详解
- 2026年纪检监察室主任选拔面试题
- DBJ33-T 1106-2025 建筑光伏系统应用技术规程
评论
0/150
提交评论