单片机课程设计指导.docx
《单片机课程设计指导.docx》由会员分享,可在线阅读,更多相关《单片机课程设计指导.docx(5页珍藏版)》请在冰豆网上搜索。
单片机课程设计指导
单片机课程设计
指导书
一、课程设计目的
根据已掌握的单片机原理及应用的课程知识,完成对课程设计项目的设计。
通过硬件设计和程序编写过程,加深对单片机原理及应用课程知识的理解和掌握,培养应用系统设计的能力,以及分析问题和解决问题的方法,并进一步拓宽专业知识面,培养实践应用技能和创新意识。
二、课程设计可选题目
1.电子时钟
2.电子密码锁;
3.电子琴;
一、
电子时钟
(一)设计目的
根据已掌握的单片机原理及应用的课程知识,完成电子时钟系统的设计。
通过硬件设计和程序编写过程,加深对单片机原理及应用课程知识的理解和掌握,培养应用系统设计的能力,以及分析问题和解决问题的方法,并进一步拓宽专业知识面,培养实践应用技能和创新意识。
(二)设计的内容与要求
基础设计:
1、时间显示在1602液晶或数码管显示器上,并且按秒实时更新。
2、设计三个按键,分别为功能选择键、数值增大键、数值减小键,能够实现随时调节时钟的小时、分钟、秒。
3、每次有键按下时,蜂鸣器都以短“滴”声报警。
提高设计:
增加显示年、月、日、星期功能。
(三)设计方案
根据定时中断的原理,数码管显示和键盘扫描电路,以及和MCS-51单片机的接口方式,通过软件编程,实现时间初值设置,时钟运行和显示。
1、可供使用的硬件电路:
1)显示电路可选用数码管显示电路或LCD1602;
2)P2驱动七段显示器,P3为七段显示器的扫描模块;
3)扬声器和按钮可接至P1口
2、七段数码管的字型代码表如下表:
2、数码管动态扫描时间
数码管动态扫描显示的时间要根据数码管的数量来定的。
一般来说,每一位数码管需要一定的显示时间,也就是说,你输出一位数码管的数据点亮这个数码管之后,需要一定的时间才能熄灭它并点亮下一个数码管,而不能一输出就马上熄灭它,否则亮度会非常低。
全部数码管全部扫描一遍的总时间最好不要超过25mS,否则闪烁会比较严重,通常总的扫描频率要在60Hz以上,才看不到闪烁。
比如说要扫描8位数码管,那么可以让每一位数码管点亮1mS,这样全部显示一遍就大约是8mS或稍微多一点点(算上显示处理的指令执行时间),此时的总扫描频率就是125Hz左右,这样的话,即能保证亮度,又看不到闪烁。
3、LCD1602的基本操作时序:
写指令输入:
RS=L,
=L,D0~D7=指令码,E=正脉冲输出:
D0~D7=数据;
写数据输入:
RS=H,
=L,D0~D7=数据,E=正脉冲输出:
无
(1)LCD1602内部带有80B的RAM缓冲区,对应的地址为第一行地址:
00H~27H,第二行地址为为:
40H~67H,当我们向00H~0FH和40H~4FH写入显示的数据时,液晶可以立即显示出来,当写入到10H~27H和50H~67H时,必须通过移屏指令将它们移入可现实区域方可正常显示。
(2)数据指针设置
指令码:
0x80+地址码(00H~27H,40H~67H)
二、
电子密码锁
(一)设计目的
掌握矩阵键盘的识别原理,根据已掌握的单片机原理及应用的课程知识,完成对电子密码锁的设计。
通过硬件设计和程序编写过程,加深对单片机原理及应用课程知识的理解和掌握,培养应用系统设计的能力,以及分析问题和解决问题的方法,并进一步拓宽专业知识面,培养实践应用技能和创新意识。
(二)设计的内容与要求
用4×4组成0~9数字键、确认键、删除键。
用8位数码管组成显示电路提示信息,当输入密码时只显示“8.”,当密码输入超过6个时,给出报警信息。
在密码输入过程中,若输入错误,可以利用“DEL”键删除刚才输入的错误的数字。
当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用LED发光二极管亮一秒钟做为提示,同时发出“叮咚”声,若密码不正确,禁止按键输入3秒,同时发出“嘀、嘀”报警声,若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。
(三)设计方案
硬件电路图设计提示
1、可选P0口作为LED动态数码管显示器的字形口
2、可选P2口作为LED动态数码管显示器的字位口
3、可选P3口连4×4矩阵键盘
4、可选P1.0驱动发光二极管
5、可选P1.7驱动扬声器
三、电子琴
(一)设计目的
了解音频发声原理,根据已掌握的单片机原理及应用的课程知识,完成对电子琴的设计。
通过硬件设计和程序编写过程,加深对单片机原理及应用课程知识的理解和掌握,培养应用系统设计的能力,以及分析问题和解决问题的方法,并进一步拓宽专业知识面,培养实践应用技能和创新意识。
(二)设计的内容与要求
基础设计:
根据音频的驱动控制电路,以及和单片机的接口方式,通过软件编程,由PO.7输出不同频率的脉冲信号,送至由LM386构成的音频功放电路,实现功率放大并驱动扬声器发出声音。
(50分)
提高设计:
扬声器可发出16种音调,分别由4×4矩阵键盘进行控制。
(75分)
高级设计:
可播放一段不小于10秒钟的小曲(曲目自选)。
(100分)
(三)设计原理
4X4矩阵式键盘识别
(1)判断有无键按下。
将行线接单片机输入口,列线接单片机输出口。
置所有列线为低电平,然后读行线的状态,若行线均为高电平,则没有键按下;若行线状态不全为高电平,则可断定有键按下。
(2)判断按下哪个键
(a)逐列扫描
检测时先送一列为低电平,其余几列全为高电平,读行线状态,如行线状态不全为“1”,则说明所按键在该列;否则所按键不在该列,继续扫描下一列。
如果确定了按键所在列,立即轮流检测各行是否有低电平,若检测到某一行为低电平,则我们可以确认当前被按下的键是哪一行哪一列,从而确定按键的编号。
(b)线反转法
先使行线全输出“0”,读列线;再使列线全输出“0”,读行线,2次读的结果拼成一个字节,称为“键值”,每个键均有一个对应的键值。
将键值与键号的对应关系列成一个有序表,并设置一个计数器,将所按键值用线反转法求出后,将其作为关键字在键值表中从表首开始计数查找,查到匹配处时相应的计数值就是键号。
2、音乐产生的方法
一首音乐是许多不同的音阶组成的而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628#4FA#74064860#1DO#27763731中5SO78464898低2RE29463835#5SO#83164934#2RE#31163928中6LA88064968低3M33064021#693264994低4FA34964103中7SI98865030#4FA#37064185高1DO104665058低5SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#646664463高3M131865157低7SI49464524高4FA139765178中1DO52364580#4FA#148065198#1DO#55464633高5SO156865217中2RE58764684#5SO#166165235#2RE#62264732高6LA176065252中3M65964777#6186565268中4FA69864820高7SI1967652832、音乐的音拍一个节拍为单位C调曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。
下面就用AT89S51单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。
在这个程序中用到了两个定时/计数器来完成的。
其中T0用来产生音符频率,T1用来产生音拍。