单片机课程设计_第1页
单片机课程设计_第2页
单片机课程设计_第3页
单片机课程设计_第4页
单片机课程设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河北科技师范学院单片机原理及应用课程 设计简单音乐盒的设计学 院 名 称 : 机 电 工 程 学 院 专 业 名 称: 电气工程及其自动化 学 生 姓 名: 董 洋 学 生 学 号: 0213120404 指 导 教 师: 刘 西 印 2015年01月0911目录一、 前言11.1 概述11.2 设计目的11.3 设计任务及内容11.3.1 设计任务和要求11.3.2 设计内容1二、 总体设计及核心器件简介12.1 原理说明:12.2 89C51 简介22.2.1 89C51 单片机简介22.2.2 89C51 各管脚主要功能简介22.3 LCD 简介22.3.1 LCD 特性22.4 键盘扫

2、描3三、 电路设计33.1硬件电路设计框图33.2 LCD 显示电路43.3 键盘扫描控制电路43.4晶振电路53.5 基本功能6四、主程序框图及设计电路6五、 程序调试中出现的问题及解决的办法7六、结论8参考文献8附录8一、 前言1.1 概述单片机,即单片微型计算机,又称微控制器,是微型计算机的一个重要分支。 单片机是集CPU、RAM、ROM、I/O 接口和终端系统与同一硅片的器件。20 世 纪八十年代以来单片机发展迅速各类新产品不断涌现出现许多新产品,出现了许 多高性能新型机种现已成为工业控制和各控制领域的支柱产业之一。由于单片机 功能功能强、体积小、可靠性好、价格便宜等独特优点因而受到人

3、们的高度重视 并取得了一系列的科研成果,具有广阔的发展前景。而 51 系列单片机是各单片 机中最为典型和最有代表性的一种。 1.2 设计目的设计的目的为:(1) 加强对单片机和C51 语言的认识,充分掌握和理解设计各部分的工作原理设 计过程、 选择芯片器件、模块化编程等多项知识。 (2) 用单片机模拟实现具体应用,使个人设计系统能够真正使用。 (3) 把理论与实践相结合,充分发挥个人与团队合作能力,并在实践中得到锻炼。 (4) 提高利用已学的知识分析和解决问题的能力。1.3 设计任务及内容1.3.1 设计任务和要求本设计利用89c51 单片机结合内部定时器及LCD 设计一个八音盒。按下单键可

4、以演奏预先设置的歌曲旋律。本设计可以学习89C51 定时器程序设计、按键扫描 的设计方法。1.3.2 设计内容(1) 填写设计任务书 (2) 进行总体设计,画出原理图 (3) 用Protues 软件画出PCB 板 (4) 用Keil 软件编写程序 (5) 在Protues 里模拟并调试程序达到预期功能。二、 总体设计及核心器件简介2.1 原理说明:当键盘有键按下时,判断键值,启动计数器 T0,产生一定频率的脉冲, 驱动蜂鸣器,放出乐曲。同时启动定时器T1,并驱动LCD,显示歌曲号。 (1) 硬件电路中用P1.0P1.7控制按键,其中P1.0P1.3 扫描 行,P1.4P1.7扫描列。 (2)

5、用 P2.0P2.2 作为 LCD 的 RS,R/W,E 的控制信号。用 P0.0P0.7作为LCD 的D0D7的控制信号。 (3) 用P3.7口控制蜂鸣器(J2,J4 断开,J3 短接)。 电路为12MHZ 晶振频率工作,起振电路中C1,C2 均为30pf。 2.2 89C51 简介2.2.1 89C51 单片机简介89C51 是MCS-51 系列单片机中的一个子系列,是一族高性能兼容型单片机。其内 部资源分配和性能如下;8 位CPU;寻址能力2X64K;4KB 的内部ROM 和128B 内部RAM; 四个8 位I/O 接口电路;一个串行全双工异步接口;五个中断源和两个中断优先权;采 用CM

6、OS 工艺电流小,低功耗。 2.2.2 89C51 各管脚主要功能简介下图为89C51PCB 图: (1)Vss(20 脚):接地 (2)VCC(40 脚): 主电源+5V (3)XTAL1(19脚):接外部晶体的一端。 在片内 它是振荡电路反相放大器的输入端。在采用外部时钟时,对于HMOS 单片机,该 端引脚必须接地;对于CHMOS 单片机,此引脚作为驱动端。 XTAL2(18 脚):接外部晶体的另一端。在片内它是一个振荡电路反相放大器的输 出端,振荡电路的频率是晶体振荡频率。若需采用外部时钟电路,对于HMOS 单 片机,该引脚输入外部时钟脉冲;对于CHMOS 单片机,此引脚应悬浮。 (4)

7、 RST(9脚): 单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输 入24 个时钟周期宽度以上的高电平将使单片机复位(RESET) (5)PSEN(29脚): 在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信 号。CPU 在向片外存储器取指令期间,PSEN 信号在12个时钟周期中两次生效。 不过,在访问片外数据存储器时,这两次有效PSEN 信号不出现。PSEN 端同样 可驱动8 个LSTTL 负载。我们根据PSEN、ALE 和XTAL2 输出端是否有信号输 出,可以判别89C51 是否在工作。 (6)ALE/PROG(30 脚):在访问片外程序存储器时,此端输出负脉冲作为存储

8、器读选 通信号。CPU 在向片外存储器取指令期间,PSEN 信号在12个时钟周期中两次生 效。PSEN 端同样可驱动 8 个 LSTTL 负载。我们根据 PSEN、ALE 和 XTAL2 输 出端是否有信号输出,可以判别89C51 是否在工作。 (7) EA/VPP(31 脚):当 EA 端输入高电平时,CPU 从片内程序存储器地址 0000H 单元开始执行程序。当地址超出4KB 时,将自动执行片外程序存储器的程序。当 EA 输入低电平时,CPU 仅访问片外程序存储器。在对89C51EPROM编程时,此 引脚用于施加编程电压VPP。 (8)输入/输出引脚:1)P0.0-P0.7(39脚-32

9、脚) 2)P1.0-P1.7(1 脚-8 脚) 3)P2.0-P2.7(26 脚-21 脚) 4)P3.0-P3.7(10 脚-17脚)。2.3 LCD 简介2.3.1 LCD 特性 LCD 具有如下特性:(1) +5V 供电,亮度可调。 (2) 内藏振荡电路,系统内含重置电路。 (3) 提供各种控制命令,如清除显示器、字符闪烁、光标闪烁、显示移位等多 种功能。 (4) 显示用数据RAM 共有80 个字节。 (5) 字符产生器ROM 有160 个5×7点阵字型。(6) 字符产生器RAM 可由用户自行定义8 个5×7的点阵字型。 1. 引脚说明:其引脚功能说明如下: (1)

10、D0D7双向的数据总线,LCD 数据读写方式可以分为8 位及4 位两种,以 8 位数据进行读写则D0D7皆有效,若以4 位方式进行读写,则只用到D7D4. (2) RS 寄存器选择控制线,当RS=0 时,并且做写入的动作时,可以写指令寄 存器,若RS=1 则用于读写数据寄存器。 (3) R/W LCD 读写控制线,R/W=0 时,LCD 执行写入的动作,R/W=1 时则做读 取的动作。 (4) EN 启用控制线,高电平动作。 (5) VCC 电源正端。 (6) VO 亮度调整电压输入控制引脚,当输入0V 时字符显示最亮。 (7) GND 电源地端。2.4 键盘扫描下图是一个16 键的控制电路,

11、使用89c51 端口2 的8 条I/O 线做16 个按键 的键盘扫描,由P2.0P2.3 送出扫描信号,而由P2.4P2.7读取按键数据返回码。 以程序扫描的方式来侦测哪一按键按下,一次扫描一行四个按键,扫描的顺序如 下: (1) 送出扫描信号1110 以扫描C1 行的4 个按键,读取按键数据,判断该 行是否有按键按下,若有被按下,则连接至被按下的该键,返回线状 态为0。 (2) 送出扫描信号1101 以扫描C2 行的4 个按键,读取按键数据,判断该 行是否有键按下。 (3) 送出扫描信号1011 以扫描C3 行的4 个按键,读取按键数据,判断该 行是否有按键按下。 (4) 送出扫描信号011

12、1 以扫描C4 行的4 个按键,读取按键数据,判断该 行是否有键按下。 (5) 回到步骤(1)继续做按键扫描。以上的步骤连续地重复,若有按键被 按下,就将该按键译码出来,至于如何译码,可以使用双重循环做计 数编号,当某一按键按下时,其按键编号便是计数编号。三、 电路设计3.1硬件电路设计框图键盘控制电路如图一所示,为硬件电路设计框图。LCD显示电路89c51扬声器电路LED闪烁电路图一3.2 LCD 显示电路图二用P2.0-P2.2 作为LCD 的RS、R/W、E 的控制信号 用P0.0-P0.7作为LCD 的D0-D7的控制信号 。如图二所示,为LCD 显示电路。3.3 键盘扫描控制电路图三

13、键盘控制电路 89C51 单片机 LCD 显示电路 LED 闪烁电路 扬声器电路单片机课按键功能 0-9键:十首歌曲选择键 Stop: 停止键 Pause : 暂停键。如图三所示,为键盘扫描控制电路。3.4晶振电路图四XTAL1 和XTAL2 的两端用来连接石英晶体和外接电容,即用来连接片内OSC 的 定时反馈回路。石英起振后应能在 XTAL2 线上输入一个 3V 左右的正弦波,以便使M CS-51片内的OSC电路按石英晶振相同频率自激振荡。如图四所示,为晶振电路。3.5 基本功能基本功能为:(1)使用LCD 显示器来显示目前演奏的歌曲编号 ;(2)具有16 个按键操作来选择演奏哪一首歌曲;(

14、3)内建10 首歌曲旋律,按下单键就可以就可以演奏歌曲 ;(4)演奏时可以按键中断。程序执行后工作指示 LED 闪动,表示程序开始执行,按 下单键09可以演奏歌曲,歌曲演奏中,可以按键中断。四、主程序框图及设计电路如图五、图六所示,分别为主程序框图、设计电路图。主程序开始初始变量及LCD接口LCD显示英文欢迎字符初始化计数器T0,定时器T1等待按键,是否有按键?包括播放器,暂停,停止键N Y歌曲号及播放时间在LCD上显示依次按照键码播放对应歌曲图五图六五、 程序调试中出现的问题及解决的办法1.有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因 为程序中有的指令书写得不规范

15、导致的,例如注释语句前的分号要在英文状态下输入。 2.程序中的跳转指令的运用很重要,为保险起见,都用 LJMP,我们就遇到过跳转指令 用错程序无法正常运行的现象。3.编程时要注意,在程序开始时,要写入各定时器中断的入口地址。 4.编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查 找或更改。 5.程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。 6.编程前要加流程图,这样会使思路清晰,例如 89C51 八音盒的设计思路完全可以按 着MP3 的工作方式列写流程图。7.LCD 计时正常显示的解决办法: 两个定时器同时工作,存在中断时序问题,刚开始时我们把

16、定时器1 设定在方式3, 计250us,由于定时中断过于频繁,使CPU 负载过大,导致音乐不能正常播放,时间不 能正常显示。解决办法:将定时器1 设定在工作方式1,16 位计数,计50ms,效果有很 大改观。六、结论打开音乐盒开关后,可以随着按键的变换而变换不同的歌曲,真正的达到了自己动手实现用单片机设计制造音乐盒。本文描述了电子音乐盒的硬件和软件制作方案,总体符合预期要求,能够成功实现按1-A按键能演奏不同的乐曲的基本功能,并添加了通过按键控制上一首,下一首,暂停/播放的功能。在播放乐曲的过程中,还增加了显示歌曲演奏时间的功能。另外,采用了液晶显示技术,简化了硬件电路,还能显示英文的开机画面

17、等。 参考文献1.胡汉才 编著. 单片机原理及其接口技术(第二版).清华大学出版社.2004 年2 月 2.常喜茂 孔英会 编著. C51 基础与应用实例. 电子工业出版社.2009 年1 月3刘国钧,陈绍业,王凤翥.图书馆目录M.北京:高等教育出版社,1957.4辛希孟.信息技术与信息服务国际研讨会论文集:A集C.北京:中国社会科学出版社,1994.5 钟文发.非线性规划在可燃毒物配置中的应用C.赵炜.运筹学的理论与应用中国运筹学会第五届大会论文集C.西安:西安电子科技大学出版社,1996:468-471. 6 万锦坤.中国大学学报论文文摘(1983-1993).英文版DB/CD.

18、北京:中国大百科全书出版社,1996. 附录#include<reg51.h>void delay_5ms() unsigned char i,j; for(i=0;i<=25;i+) for(j=0;j<=200;j+) unsigned char key_scan() unsigned char key_temp0,key_temp1; unsigned char key_num=0; p1=0*0f; delay_5ms(); key_temp1=p1; if(ket_temp0=0*0f) p1=0*0f; if(key_temp0=0*0e) switch(k

19、ey_temp1) case 0xe0:key_num=4;break; case 0xd0:key_num=3;break; case 0xb0:key_num=2;break; case 0x70:key_num=1;break; default:key_num=0;break; else if(key_temp0=0*0d) switch(key_temp1) case 0xe0:key_num=8;break; case 0xd0:key_num=7;break; case 0xb0:key_num=6;break; case 0x70:key_num=5;break; default

20、:key_num=0;break; else if(key_temp0=0*0d) switch(key_temp1) case 0xe0:key_num=12;break; case 0xd0:key_num=11;break; case 0xb0:key_num=10;break; case 0x70:key_num=9;break; default:key_num=0;break; else if(key_temp0=0*0d) switch(key_temp1) case 0xe0:key_num=16;break; case 0xd0:key_num=15;break; case 0

21、xb0:key_num=14;break; case 0x70:key_num=13;break; default:key_num=0;break; return key_num; void main() unsigned char key_num; do key_num=key_scan(); p2=key_num/10; p3=key_num%10; while(1); unsigned char code date="H.I.T.CHINA" unsigned char code time="time 21:37:40" void lock_init() uchar i,j; for(i=0;j<16;i+) write_data(datai); write_com(0*80+0*40); for(j=0;j16;j+); void main() init1602(); clock_init(); sbit 1cdrs=p20;sbit 1cdrw=p21;sbit 1cden=p22;void delay(uint z)uint x,y;for(x=z;x>0;x-)for() y=110;y-void writ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论