最新单片机课程设计选题简单 单片机课程设计选题及程序(5篇)

格式:DOC 上传日期:2023-01-12 12:03:47
最新单片机课程设计选题简单 单片机课程设计选题及程序(5篇)
时间:2023-01-12 12:03:47     小编:zdfb

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。那么我们该如何写一篇较为完美的范文呢?接下来小编就给大家介绍一下优秀的范文该怎么写,我们一起来看一看吧。

单片机课程设计选题简单 单片机课程设计选题及程序篇一

基于at89s51单片机的密码锁设计,具体功能如下:(1)总共可以设置8位密码,每位密码值范围为1~8。(2)用户可自行设定和修改密码。(3)按每个密码时都有声音提示。

(4)若键入的8位开锁密码不完全正确,则报警5s已提醒他人注意。

(5)开锁密码连续错3次要报警1分钟,报警期间输入密码无效,以防窃贼多次试探密码。

(6)键入的8位开锁密码完全正确才能开锁,开锁时要有1s的提示音。(7)电磁锁的电磁线圈每次充电5s,然后恢复初态。

(8)密码键盘上只允许有8个密码按键。锁内有备用电池,只有内部上电复位才能设置或修改密码,因此,仅仅在门外按键是不能修改或设置密码的。(9)密码设置完毕后要有2s的提示音。硬件设计

2.1 设计思路

按照系统设计的要求和功能,将系统分为主控模块;按键扫描模块;蜂鸣器;电源电路;复位电路晶振电路;驱动电路几个模块,系统组成框图如图1-1所示。主控模块采用at89s51单片机。

电源电路复位电路主控模块晶振电路at89s51按键扫描模块驱动器蜂鸣器 图1-1 基于at89s51单片机的密码锁组成框图 镇江高等专科学校课程设计2.2 硬件图及说明(硬件图见图1-2,)

元件型号单片机晶振电容型号数量/个用途元件型号蜂鸣器电阻型号数量/个用途at89s52 1 控制核心12mhz 1 晶振电路30pf 2 晶振电路1 报警电路1kω10kω4.7kω1 上拉电路1 复位电路1 放大电路电阻电阻继电器电源电解电容20uf/10v 1 复位电路按键三极管二极管9 按键电路8550 2 放大电路in4004 1 5v 1 控制对象+5v/0.5a 1 提供+5v电源 图1-3 基于at89s51单片机的密码锁元件清单

注:89s51是一个低功耗,高性能cmos 8位单片机,片内含4k bytes isp(in-system programmable)的可反复擦写1000次的flash只读程序存储器,器件采用atmel公司的高密度、非易失性存储技术制造,兼容标准mcs-51指令系统及80c51引脚结构,芯片内集成了通用8位中央处理器和isp flash存储单元,功能强大的微型计算机的at89s51可为许多嵌入式控制应用系统提供高性价比的解决方案。

2.蜂鸣器的工作原理: 软件设计

2.1 设计思路 镇江高等专科学校课程设计应位置的,分析程序时可以仔细对照参考。该密码锁中ram存储单元的分配方案如下所示

如图1-3所示给出了该单片机密码锁电路的软件软件流程图。图中aa1~aa8以及start,set,save是程序中的标号,是为了理解程序而专门标在流程图的对 31h~38h;依次存放8位设定的密码,首位密码存放在31h单元中。 r0:只指向密码地址  r2;已经输入密码的位数

 r3:存放允许的错码次数3与实际错码次数的差值。 r4~ r7:延时用。 00h:错码标志位。

对于rom存储单元的分配,由于程序比较短,而且占用的存储空间的较少,因此,在无特殊要求时,可以从0030h单元(其他地址也可以)开始存放主程序。3.2 程序流程图

开始初始化1s提示音等待设置密码nn有键按下?y短音提示保存设置密码n是否够8位?y长音提示错误次数清零错误标识清零n有键按下?y短音提示密码对否?y是否够8位?y标志=1?n开锁并长音提示延时锁恢复错误清零错3次?y报警1 min错误次数清零报警5s错误标志清零y错误次数加1nn错误标志置1 图1-4 基于at89s51单片机的密码锁程序流程图

3.3 程序清单(注释)

loc obj line source

0000 1 org 0000h 0000 0130 2 ajmp start 0030 3 org 0030h 镇江高等专科学校课程设计0030 11a1 4 start:acall bp 0032 7831 5 mov r0,#31h 0034 7a08 6 mov r2,#8 0036 7590ff 7 set1:mov p1,#0ffh 0039 e590 8 mov a,p1 003b b4ff02 9 cjne a,#0ffh,l8 003e 0136 10 ajmp set1

0040 11b0 11 l8: acall delay 0042 b4ff02 12 cjne a,#0ffh,save 0045 0136 13 ajmp set1 0047 11a1 14 save: acall bp 0049 f6 15 mov @r0,a 004a 08 16 inc r0 004b dae9 17 djnz r2,set1 004d 7d10 18 mov r5,#16 004f 11a1 19 d2s: acall bp 0051 ddfc 20 djnz r5,d2s 0053 7831 21 mov r0,#31h 0055 7b03 22 mov r3,#3 0057 7a08 23 aa1: mov r2,#8 0059 7590ff 24 aa2: mov p1,#0ffh 005c e590 25 mov a,p1 005e b4ff02 26 cjne a,#0ffh, l9 0061 0159 27 ajmp aa2 0063 11b0 28 l9:acall delay 0065 b4ff02 29 cjne a,#0ffh,aa3 0068 0159 30 ajmp aa2 006a 11a1 31 aa3: acall bp 006c c3 32 clr c 006d 96 33 subb a, @r0 006e 08 34 inc r0 006f b40002 35 cjne a,#00h,aa4 0072 0176 36 ajmp aa5 0074 d200 37 aa4: setb 00h 镇江高等专科学校课程设计0076 dae1 38 aa5: djnz r2,aa2 0078 20000e 39 jb 00h,aa6 007b c2b5 40 clr p3.5 007d 7d08 41 l3:mov r5,#8 007f 11a1 42 acall bp 0081 dcfa 43 djnz r4,l3 0083 7b03 44 mov r3,#3

0085 d2b5 45 setb p3.5 0087 0157 46 ajmp aa1 0089 db0c 47 aa6: djnz r3,aa7 008b 7d18 48 mov r5,#24 008d 7cc8 49 l5: mov r4,#200 008f 11a1 50 l4: acall bp 0091 dcfc 51 djnz r4,l4 0093 ddf8 52 djnz r5,l5 0095 7b03 53 mov r3,#3 0097 7d28 54 aa7: mov r5,#40 0099 11a1 55 acall bp 009b ddfa 56 djnz r5,aa7 009d c200 57 aa8: clr 00h 009f 0157 58 ajmp aa1 00a1 c2b7 59 bp: clr p3.7 00a3 7ffa 60 mov r7,#250 00a5 7e7c 61 l2: mov r6,#124 00a7 defe 62 l1: djnz r6,l1 00a9 b2b7 63 cpl p3.7 00ab dff8 64 djnz r7,l2 00ad d2b7 65 setb p3.7 00af 22 66 ret 00b0 7f14 67 delay:mov r7,#20 00b2 7e7d 68 l7: mov r6,#125 00b4 defe 69 l6: djnz r6,l6 00b6 dffa 70 djnz r7,l7 00b8 22 71 ret 镇江高等专科学校课程设计 72 end 3.4 程序调试

按键an1~an7分别代表数码1~7,按键an0代表8。在没有键按下时,p1.0~p1.7全是高电平1;若某个键被按下,相应的口就变为低电平0.加入设定的密码是612345678,当按键an6被按下时,p1.6变为低电平,p1端口其余口线为高电平,此时从p1口输入的数值为10111111,存到31h单元的密码值就是10111111,也就是bfh。以此类推,存到32h至38h单元的密码值分别是fdh,fbh,f7h,efh,dfh,7fh,feh。开锁时必须先按an6,使从p1口读入的第一个密码值与31h单元存储的设定值相同,再按顺序按an1,an2,an3,an4,an5,an7,an0才能开锁。否则不能开锁,同时开始报警。小结

通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。

实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。

此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰

参考文献:(另起一页)

【1】杨居义。单片机课程设计指导。北京:北京大学出版社,2009。

【2】王效华,张咏梅。单片机原理与应用。北京:北京交通大学出版社,2007。【3】杨光义,马宁,靳光明等。单片机原理与工程应用。北京:清华大学出版社,2009。

单片机课程设计选题简单 单片机课程设计选题及程序篇二

单片机原理与接口技术课程设计题目

以下题目任选其一,1-2人一组,自由组合,组内各人必须有明确的分工,原则上同一组最多一个同学得优。

可使用任何单片机或arm,1-4要求自己设计全部硬件和焊接电路板,5-10题可用现成的单片机开发板,5-6题亦可用proteus仿真。自拟题的根据题目难度由指导老师决定能否用现成的单片机开发板。

一、pc机看门狗(每班最多6人选此题,难度系数:低)

功能:当pc机死机时能自动使其重新启动。

硬件:可使用串口或usb与pc机通讯。

软件:pc机上软件编程可选用任何一种面向对象开发软件,如vc,delphi等。

实现原理:pc机正常时,每隔一段时间通过串口向单片机发送一些固定的数据,单片机如果收到此数据,说明pc机正常,如果超时未收到,则控制pc机重新启动。

二、电子琴设计(每班最多6人选此题,难度系数:中)

按下1-7,实验箱上的蜂鸣器发出对应的音调(中音),当同时按下l和1-7时是,蜂鸣器发出低音,同时按下h和1-7时,蜂鸣器发高音。只要按键没松开,蜂鸣器一直发声,直到

扩展功能:在彩屏lcd上显示电子屏琴图片,用触摸屏控制发音,就像真正弹电子琴一样。

三、自行车测速仪(难度系数:中偏高)

基本功能:能实时显示自行车的行驶速度

附加功能:实时时钟,行驶里程累计

要求具备一定的实用价值,即要考虑如下问题(也是答辩时的考察和评分指标):

1、体积要做到尽量小

2、为了省电,要使用低电压工作的单片机,比如使用2.0-3.3v工作电压的单片机

3、供电采用可充电的聚合物锂电池(普通手机电池),一次充电后的使用时间最少1

2小时

4、最好能直接用单车轮子的旋转为电池充电(选做)。

四、计算器设计

5、使用4×4行列式键盘和1602液晶(其他液晶亦可)或数码管,实现普通十进制计

算器的功能,键盘符号定义如下:

6、“c”表示退格,即删除键,按一次删除键删掉显示的最后一个数字。

7、如果是用lcd,lcd的第一行显示运算式,第二行显示运算结果。比如要计算机

12+34,在键盘上按下相应键后,lcd的第一行显示“12+34”,按下“=”号后,lcd的第二行显示“=46”。

8、如果用数码管,至少用6位的数码管,按“=”前显示输入的数字和运算符,按“=”

后显示运算结果。

9、其他功能参考普通计算器。

10、基本功能:四则运算、退格功能,按“=”号后再按数字时自动清除之前的输入和

计算结果,重新开始下一次新的计算过程。

11、扩展功能:负数、小数运算。复合运算。连续运算。2进制、8进制运算。触摸功

能:直接在lcd上显示一个计算器,用触摸屏操作。

12、必须考虑不正常输入的情况,答辩时会测试是否能处理各种不正常输入。

五、pc机控制的计算器设计(每班最多6人选此题,难度:中偏高)计算器要实现的功能同第四题。与第四题不同的是:

1、计算器的输入不使用单片机板上的键盘,而是用pc机的键盘输入,pc机将铵键通过串口发给单片机,并在单片机的lcd上显示。

2、在lcd上开光标显示并闪烁,可将光标退回去修改输入的计算式,通过pc机的左右箭头键将光标移到要修改的位置,再按下数字或操作符号可替换光标所在位置的字符。

3、按退格键删除光标前面一个位置的字符,按del键删除光标所在位置的字符。

3、任何时候按“=”键开始计算结果,按了“=”之后还可以将光标退回到计算式上修改计算式。再按“=”则重新计算新的结果。

此题可用现成的单片机开发板,亦可用proteus仿真。

六、单片机用普通io口实现串口通信(每班最多6人选此题,难度系数:中)

在理解单片机异步串口通信的基础上,不使用单片机的串口模块,用普通的io口实现与pc机的串口通信的功能,要求实现的基本参数:波特率1200、数据位8位、无奇偶校验、停止位1位。

其他功能:有关参数能方便地修改。

此题主要锻炼编程能力,所以可以用proteus仿真或现成的单片机开发板做。

七、基于三轴加速度传感器的新型鼠标(难度系数:高)

利用三轴加速度传感器实现鼠标的四个方向的移动光标的功能。有两种方案可以选择:一种是设计一种usb接口连接电脑,只要按usb鼠标的协议收发数据,则pc机上不需另外做驱动;第二种方案是用串口连接电脑,但pc机上需要设计驱动程序,可以采用api函数的控制鼠标移动,可参考下面网址或百度搜索相关资料。

注:此题可用现成的单片机开发板,另加上自己的三轴加速度传感器来做,即传感器模块的硬件需要自己设计,单片机部分可用现成的开发板。

八、智能学习型红外遥控器(难度系数:中偏高)

可学习其他遥控器的按键功能,替换原遥控器各按键的遥控功能。

功能参考淘宝上产品:

注:此题可用现成的单片机开发板,如果开发板上没有红外的收和发模块,则需另加上红外的收发模块。

对物联网感兴趣的同学,可做这个题目,以后再加上zigbee模块就成为物联网家居里面的一个应用。

九、zigbee无线台灯设计

利用cc2530单片机无线收发数据,实现对台灯的控制。

cc2530单片机模块由webee提供,单片机板上有1个按键,按1次开台灯,快速按2次则关台灯。控制台灯需要另加继电器,这些控制电路需要自己设计。

对物联网家居感兴趣的同学,可做这个题目。cc2530就是一个增强型的51单片机,学习起来并不复杂。

十、电梯模型(难度系数:高)

设计一个五层楼的电梯模型,每层楼的电梯口2个指示灯(指明电梯运行方向是上或下),2个按键(上、下);电梯厢内7个灯及7个按键(1-5目标楼层选择各一个,开关门各一个)。可用现成的单片机开发板,其他模块自做。

十一、自拟题

鼓励大家自拟题目,但需指导老师的同意。欢迎大家选择智能家居和物联网有关的题目。

选题必须在课程设计开始的第二天中午前确定好,班长统计好各人的题目后,将汇总表发到邮箱:23647837@

格式:

答疑方式及时间:qq答疑(全天候)、现场答疑(先预约)

答辩时间:初定第10周四下午和周五全天,答辩时必须带上打印好的课程设计报告。题目难度大的可以推迟答辩,具体时间再商定。

答疑及答辩地点:工一407

注意事项:每个组答辩完后硬件暂时保留在实验室,待全部同学答辩完后再发还给大家,所以要求在自己的硬件上贴上标签,标签上写明组内各成员的班级、学号和姓名,注意标签贴牢一些,不要轻易就掉了。

课程设计报告:详细记录课程设计过程中碰到的难点和问题、问题的解决过程及解决方法,心得体会。上交的打印稿不需附程序源码,但需有程序框图及软件的操作说明。报告要有操作界面的截图,特别是自已做的硬件,要有整体的照片。

班长收集全班同学的程序源码及课程设计报告电子文档压缩打包上交。

答辩注意事项:除了书本上已有的例子,绝不允许抄袭其他同学的程序,先做好的同学先答辩,答辩时如果发现某段程序与已答辩的同学雷同,则答辩不能通过。

允许参考,但不允许抄袭,参考是指先看懂别人的程序,然后自己编程,而不是照抄(复制)别人的某段程序,也不是在别人的程序基础做修改,所有的代码一定要自己写。

单片机课程设计选题简单 单片机课程设计选题及程序篇三

选题一 简易电子琴

基本功能:设计电子琴按键,使得按不同的按键能够发出1,2,3,4,5,6,7等音符 选题二 电子音乐盒

基本功能:设置0-7号按键控制播放不同的音乐

选题三 8×8点阵式led显示系统

基本功能:能够显示点阵汉字

选题四 电子计算器

基本功能:能够进行加减乘除运算,并显示运算结果

选题五 数字温度计

基本功能:能够实时显示环境温度

选题六 lcd液晶显示系统

基本功能:能够显示英文字符

选题七 电子秒表

基本功能:能够实现秒表计时,并显示计时值,能够清零,重新计时

选题八 电子万年历

基本功能:能够输入初始年月日,并能够显示当前日期

选题九 智能交通灯

基本功能:模拟十字交通路口的红绿黄三种灯的闪亮情况,控制交通

选题十 电子密码锁

基本功能:能够预设3位初始密码,当输入密码与预设密码一致时自动开锁,否则报警 选题十一 摇摇棒

基本功能:当摇摇棒摇动时,能够显示不同变换效果图

提示:可以选用振动开关

选题十二 多功能数字电子钟

基本功能:能够预置初始时间,并能够实时显示当前时间

每组选题人数不超过5人。

论文写作分以下几个部分

一、选题的意义

二、主要功能

三、设计方案

四、硬件电路

五、软件设计

六、总结

自制封面:包含课程设计题目、学号、姓名、班级等内容

单片机课程设计选题简单 单片机课程设计选题及程序篇四

《单片机技术》课程设计说明书

音乐盒

院、部:电气与信息工程学院 学生姓名:刘亮 指导教师:凌云职称讲师 专业:电子信息工程 班级:电子1302班 学

号:1330340220 完成时间: 2016年1月11日

摘要

音乐盒起始于中世纪欧洲,当时为使教会的钟塔报时,而将大小的钟表上装置机械设备,被称为可发出声音的组钟。

本次的课题主要分为数码管显示模块、供电模块、按键模块、发声模块、复位电路和at89s52单片机。数码管显示模块采用共阳极数码管,通过p0口控制,实现歌曲序号的显示;供电模块采用+5v供电;按键通过p3口控制,实现歌曲播放顺序的调换和暂停播放功能;扬声器由p3.1口控制,实现歌曲播放。

主要的工作过程是通过按键控制下一首和上一首播放以及暂停和播放,同时有数码管显示当前正在播放的歌曲序号,扬声器播放出音乐。

此次设计主要用到proteus、keil编程和ad作图软件。用proteus画出原理图,用keil编写程序,将程序导入原理图中进行仿真。最后用ad画出pcb图,打印图纸进行腐蚀焊接。将程序下载到单片机中,利用i/o口产生方波,驱动扬声器,发出音调,从而演奏乐曲。

关键词:扬声器;at89s52单片机;i/0口

目 录

背景意义、任务要求及设计原理、框图··························1 1.1 背景意义···············································1 1.2 任务要求···············································1 1.3 设计原理···············································1 1.4 设计框图···············································1 2 硬件系统····················································3 2.1 数码管模块··············································3 2.2 键盘模块················································3 2.3 复位电路················································3 2.4 蜂鸣器模块··············································4 3 软件系统·····················································5 3.1 主程序介绍及流程图······································5 3.2 各个模块及功能介绍······································6 3.2.1 定时器模块········································6 3.2.2 延时模块··········································6 3.2.3 中断模块··········································7 3.2.4 数码管显示模块 ···································9 4 电路仿真和程序检测··········································10 5 实物制作及调试··············································11 结束语 ····························································12 参考文献 ··························································13 致 谢· ···························································14 附 录· ···························································15 背景意义、任务要求及设计原理、框图

1.1 背景意义

音乐盒的起源是中世纪欧洲的教会用来钟塔报时,后来,随着工业的发展,逐渐的体积变小,功能变多,不过多数以机械音乐盒为主,这样的音乐盒大部分体积较大音调单一,容易受到外界的影响,而且,代价昂贵。

此次设计的音乐盒,是基于单片机设计制作的电子音乐盒。与传统的相比更加小巧,音质更优美而且可以演奏和弦音乐。单片机音乐盒的动力是+5v的电源,制作简单,可以批量生产,控制功能强大,可以随时的加减歌曲,使用更加的方便而且不易受到外界的影响而音质变坏,另外,可以根据需要,添加流水彩灯等外设更改外观,使音乐盒的功能更加丰富。

1.2 任务要求

此次的设计要求为:设计一个具有特定功能的音乐盒,要求包含软件和硬件两大模块,能够通过按键来选择曲目,切换曲目,显示器来显示曲目编号,能够准确的播放曲目。

1.3 设计原理

本次的设计最主要的在于蜂鸣器的设计,想要蜂鸣器发出不同的音调,通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣器发声。要产生音频脉冲,只需要算出某一音频的周期,然后取半周期的时间定时。利用定时器计时这半个周期时间,每当计时到之后,就将输出脉冲的i/o反向,然后在重复计时此周期时间再对i/o口反相,就可在i/o口得到此频率的脉冲。如中音do,频率为523hz,其周期t=1/523=1912微秒,因此只要令计数器定时1912/2=926。在每计数956次时将i/o口反相,就可以得到中音。

每当有键按下时,判断键值,启动计数器t0,产生一定频率的脉冲,驱动蜂鸣器,放出曲目。数码管采用共阳极数码管,通过单片机p0口控制,实现曲目序号的显示。功能键盘采用按键开关,通过p3口控制,实现曲目播放顺序的调换和暂停播放功能,蜂鸣器由p3.1口控制,实现音乐播放。

1.4 设计框图

单片机接+5v电源供电,晶振电路负责产生单片机所需要的时钟信号,通过功能键产生外部中断,控制音乐盒的上一曲和下一曲。在由i/o口输出控制蜂鸣器发声。另外可以用复位电路对程序初始化,在程序出错时,重启单片机。具体 的设计框图如图1所示。

图1 总体设计框图

编程设置好定时时间,通过编程器写入at89s52单片机系统中。由at89s52单片机的定时器每秒通过p1口控制led数码管显示,复位信号由按键输入,没按一次,系统恢复原始状态。电源,晶振电路,单片机,功能键,和扬声器部分具体介绍在后面有介绍。硬件系统

2.1 数码管模块

歌曲显示部分用数码管来显示,led显示器件是通过发光二极管显示字段的器件,该设计采用的是7段数码管,原理是由p0口控制数码管中的7端led发光二极管,通过单片机给予p0口不同的数值来显示不同的数字。数码管分为共阳极和共阴极两种,共阳极的数码管,当管脚是低电平有效,而阴极的数码管,是管脚高电平有效。这样,单片机给予p0口的数值将会发生差异,也就是说,不同种类的数码管,对应的ascii码就会不同。本次选用的是共阳极数码管,其引脚如图2所示。

图2 数码管引脚

2.2 键盘模块

本次的键盘模块采用按键开关这样操作简单,辨别容易的开关。用到4个按键开关,分别是复位按键,下一首按键,上一首按键,和暂停按键。上一首按键和下一首按键接单片机的外部中断0,外部中断1。暂停按键接定时器1,复位按键在复位电路中,接单片机res。

2.3 复位电路

复位电路主要用于初始化程序,当单片机音乐盒发生死机时,用复位电路初始化程序来重启单片机。两个电容,两个电阻和一个复位按键组成,当单片机死机时,按下按键,即可重启,其电路原理图如图3所示。

图3 复位电路原理图

2.4 扬声器模块

扬声器模块最为重要,当单片机输出脉冲经过扬声器时,会是扬声器发声,不过因为设计中用到的元件较多,不能保证通过扬声器的电流足够大,所以要用三极管放大电路来放大电流,这样才能让扬声器正常工作,具体的原理图如图4所示。

图4 扬声器原理图 软件系统

3.1 主程序介绍及流程图

一个系统的正常运行不仅需要硬件的运行,还需要软件系统的支持。同时软件要根据硬件的连接来设计,来配合硬件的工作,例如,本次的设计用到的是p 0口和p3口。所以,设计的时候就要注意,只能用到p0和p3。本次用到的软件设计选用课堂学到的汇编语言。另外用keil软件来编写程序,用课堂上学到的中断和循环等来编写程序。

主程序要开始定义音频输出端口,歌曲总数以及每首歌的入口地址;然后对定时器初始化,确定工作方式,赋初值,开放中断启动定时器工作;对音频输出端口初始化;设置音节起始位置和节拍间距,把音节和节拍的入口地址信息存放在固定存储单元中,查询音乐的节拍表;当6首歌曲的节拍查询结束后,音乐播放完毕,程序结束。主程序的清单在附录中,其流程图如图5所示。

图5 主程序流程图

3.2 各个模块及功能介绍 3.2.1 定时器模块

单片机中有两个16位的可编程计数器/定时器,他们具有定时和计数的功能,可用于定时控制,延时,对外部的事件检测和计数。

定时器的核心部件是加一计数器,通过tmod寄存器可以使定时器工作在定时或者计数,还可以选择工作方式,工作方式关系到后面音调和节拍的调用,因此,要选择合适的工作方式。定时器模块的程序清单见附录。图6为定时程序流程图。

图6 定时器模块流程图

3.2.2 延时模块

此处的延时模块并不是固定的延时程序,而是将节拍表中的接拍数存放在固定的单元中,再将固定单元中的内容送给延时程序中,这样空拍就可以将节拍分开,这样,图7为延时程序流程图。

图7 延时流程图

3.2.3 中断模块

中断模块主要用来进行上一首,下一首和暂停的控制,本次的中断主要用到int0,int1和t1三个i/o口。不同的中断有不同的程序。因为单片机中只有两个外部中断,因此,我决定选用定时器1来改变成中断,即应定时器1的f0判断,当f0为1时,为中断。在此仅具体介绍上一曲的功能。下面为流程图介绍。

图8 中断程序流程图

3.2.4 数码管显示模块

本次设计采用的是共阳极的数码管,因此要采用相应的数值来控制数码管的亮灭。另外还要求通过按键在改变曲目顺序的时候改变数码管显示数字。下面为数码管显示模块的流程图。

图9 数码管显示模块流程图 电路仿真和程序检测

仿真图作图用到的是proteus软件,对于这个软件,我们已经相当的熟悉,所以用起来比较顺利,首先将各个元件搜索出来,必须要有单片机最小系统,显示模块,按键模块,发声模块。根据要求,可以画出仿真图。如图10所示。

图10 设计仿真图

将keil中写好的程序导入到单片机中,开始检测,首先检测是否能够清晰的播放出音乐,其次通过控制三个按键来检测上一首,下一首和暂停的功能是否实现,观察数码管的数字是否随着按键的变化,通过以上检测,发现程序和仿真完全符合标准,表示仿真和程序检测通过,可以制作实物。

5实物调试

文件,文件导入到三合一的实验板中,在外边接入三个按键开关来控制上一首,下一首和暂停,调试过程与仿真图的调试过程相同,可以通过按键来控制歌曲的调换和暂停,而且也可以控制数码管按曲目的调换来显示序号。实验成功,实验成品如图11所示。

图11 实物图 11

结束语

首先要感谢凌老师平时的耐心教导,才能让我对单片机这门课程产生兴趣,在平时的课堂上都会跟着老师的思路走,下课后,努力的完成老师布置的作业是凌老师让我学到了很多关于单片机的知识。

其次对这次制作课程设计的感想。本次的课题是音乐盒,最主要的就是程序设计,经过比较分,决定采用51编程语言,因为平时上课接触最多的就是汇编语言,对于c语言,了解比较少,并不是非常熟练。运用课堂上学到的定时,中断,循环,以及数码管显示和按键程序,可以比较完整的制作出这次的课题。不仅可以复习近平时学到的知识,还会有新的能力学到,比如ad绘图的使用和熟悉。

最后,了解了单片机的方便性,和强大性。这是我们走向岗位的通行证,必须学会单片机,才会在大四毕业的时候找到适合自己的好工作。

参考文献

[1]李广弟.单片机基础[m].第3版.北京:北京航空航天大学出版社,2003.06.[2]李全利.单片机原理及应用(c51编程)[m].北京:高等教育出版社,2012.12.[3]楼然苗.51系列单片机设计实例[m].北京:北京航空航天大学出版社,1999.06.[4]李叶紫.单片机应用教程[m].北京:清华大学出版社,2002.01.[5]李光飞.单片机课程设计实例指导[m].北京:北京航空航天大学出版社,2004.09.致

这次的设计可以说是给了我很多,不仅仅是学习上的,更多的是精神上和生活中的

首先要感谢老师的教育,让我学到了这么多的知识,在这段制作单片机课设的时候更是有感触,当听到设计的音乐盒发出声音的时候,第一感觉是好舒畅,因为第一次可以看到自己制作出这样的东西,在这些自豪中,更能感觉到老师对我们的栽培是那么的重要。

还要感谢同学们的帮助,有的时候,自己真的是不懂了,就去问同学,这不仅仅是问问而已,更能加深同学之间的友情,而且还会收获更多的知识,在这样的学习氛围中,收益的是我们大家。所以我要感谢在这次课设里帮助过我的所有同学。

这次的设计给我最大的启发就是,在学习中马虎不得。当你马虎的对待学习,学业也会马虎的对待你,这样吃亏的还是自己,学业本来就是自己的,自己不努力,难道就会白白得来吗?所以以后的学习中不能有一丝的马虎大意,就算是为了自己也要学下去。

附录a 电路原理图

附录b 电路实物图

附录c 元器件清单

芯片

at89s52 1 数码管八段2

电容

22µf

电容

33pf

三极管1

电阻

470ω

电阻

300ω

电阻

200ω

电阻

1kω led灯8

下载口

晶振

12mhz1

按键

排阻8位4

排阻

2位1

短路帽

插针

若干

附录d 程序清单

out bit p3.1

n equ 6 out_num equ p0 org 0000h ajmp main org 0003h ajmp last_song org 000bh ljmp f_t0 org 0013h ajmp next_song org 001bh ajmp start_pause org 0030h main: mov sp ,#60h mov dptr,#table mov r0 ,#30h mov r5 ,#00h mov r6 ,#1 set_tab: mov a,r5 movc a ,@a+dptr mov @r0 ,a inc r5 inc r0 mov a ,r5 movc a ,@a+dptr mov @r0 ,a inc r5 inc r0 mov a ,r5 movc a ,@a+dptr mov @r0 ,a inc r5 inc r0 mov a,r5 movc a,@a+dptr mov @r0 ,a inc r0 inc r5 inc r6 cjne r6,#n+1,set_tab mov tmod ,#61h mov th1,#0ffh mov tl1,#0ffh setb et1 setb et0 clr pt0 setb pt1 setb it0 setb px0 setb it1 setb px1 setb ex1 setb ex0 setb ea setb tr1 setb out clr f0 mov 22h ,#01h mov dptr,#out_tab mov a,22h movc a,@a+dptr mov out_num,a mov r7,#00h

start0: mov r4,#00h mov r0,#30h mov a,r7 add a,r0 mov r0,a mov dph,@r0 inc r0 mov dpl,@r0 inc r0 mov a,r4 inc r4 movc a,@a+dptr mov 26h,a next:mov r0,#30h mov a,r7 add a,r0 mov r0,a mov dph,@r0 inc r0 mov dpl,@r0 inc r0 mov a,r4 inc r4 movc a,@a+dptr jz end0 mov r1,a anl a,#0fh mov r2,a mov a,r1 swap a anl a,#0fh jnz sing clr tr0 sjmp sing1 sing:dec a mov r3,a rl a mov dph,@r0 inc r0 mov dpl,@r0 inc r0 movc a,@a+dptr mov 21h,a mov th0,a mov a,r3 rl a inc a movc a,@a+dptr mov 20h,a mov tl0,a setb tr0 sing1: lcall delay jb f0,for ajmp next for:clr tr0 jb f0,$ ajmp next end0: clr tr0 mov a,22h cjne a,#n,ww mov 22h,#01h mov r7,#00h mov out_num,#11111001b ajmp www ww:mov a,r7 add a,#4 mov r7,a inc 22h clr ea push dph push dpl mov a,22h mov dptr,#out_tab movc a,@a+dptr mov out_num,a pop dpl pop dph www:setb ea ajmp start0 f_t0:mov th0,21h mov tl0,20h cpl out reti next_song: push acc push dph push dpl clr ea mov a,22h cjne a,#n,q mov r7,#00h mov 22h,#01h ajmp back q: inc 22h mov a,r7 add a,#4 mov r7,a back: mov r4,#00h mov a,22h mov dptr,#out_tab movc a,@a+dptr mov out_num,a mov b ,r0 mov r4,#00h mov r0,#30h mov a,r7 add a,r0 mov r0,a mov dph,@r0 inc r0 mov dpl,@r0 inc r0 mov a,r4 inc r4 movc a,@a+dptr mov 26h,a dec r4 mov r0,b pop dpl pop dph pop acc setb ea reti last_song: push acc push dph push dpl clr ea mov a,22h cjne a,#1,qq mov 22h,#n mov b,#4 mov a,#n-1 mul ab mov r7,a ajmp back2 qq: dec 22h mov a,r7 subb a,#4 mov r7,a back2: mov r4,#00h mov a,22h mov dptr ,#out_tab movc a,@a+dptr mov out_num,a mov b,r0 mov r4,#00h mov r0,#30h mov a,r7 add a,r0 mov r0 ,a mov dph,@r0 inc r0 mov dpl,@r0 inc r0 mov a,r4 inc r4 movc a,@a+dptr mov 26h ,a dec r4 mov r0,b pop dpl pop dph pop acc setb ea

reti start_pause: cpl f0 jb f0,return setb tr0 return: reti delay: mov 27h,26h d2: d3:

mov 28h,#125 mov 29h,#248 djnz 29h,$ djnz 28h,d3 djnz 27h,d2 djnz r2,delay ret out_tab: db 0ch,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh,0ffh table: dw song1,table1,song2,table2,song3,table3,song4,table4,song5,table5,song6,table6 table1: dw 64580,64684,64777,64820,64898,64968,65030 dw 63628,63835,64021,64103,64260,64400,64524 song1: db 04h db 32h,54h,52h,32h,54h,52h,32h,12h,12h,32h,32h,54h,52h,32h,52h,52h,32h,32h,21h,31h,4h,0e2h,0d1h,0e1h,0d2h,0c2h,14h,14h db 0c2h,32h,32h,12h,21h,31h,24h,32h,34h,0d2h,0c2h,14h,14h,32h,52h,52h,32 26

h,52h,54h,32h,34h,31h,21h,12h,24h,34h db 34h,0e2h,0c2h,0d1h,0e1h,0d4h,12h,0e2h,32h,32h,0e2h,32h,32h,0e2h,0d1h,0e1h,0d4h,0d2h,0e2h,32h,32h,0e2h,0e2h,0d1h,0e1h,0d4h db 22h,0d1h,11h,0e2h,0d2h,0c2h,0c4h,0c4h,32h,52h,52h,32h,62h,05h,61h,54h,31h,52h,31h,12h,31h,32h,54h,52h,32h,52h,52h,32h db 32h,21h,31h,24h,0e2h,0d1h,0e1h,0d2h,0c2h,34h,34h,32h,52h,52h,32h,62h,51h,61h,54h,31h,12h,32h,12h,32h,12h,32h,32h,54h,52h

db db db 32h,52h,52h,31h,31h,32h,21h,31h,24h,0e2h,0d1h,0e1h,0d2h,0c2h,14h,14h 32h,52h,52h,32h,32h,21h,31h,24h,0e2h,0d1h,0e1h,0d2h,0c2h,14h,14h 0c2h,32h,32h,12h,21h,31h,24h,32h,34h,0d2h,0c2h,14h,14h,32h,52h,52h,32h,34h,31h,21h,12h,24h,24h db 34h,0e2h,0c2h,0d1h,0e1h,0d4h,12h,0e2h,32h,32h,0e2h,0d1h,0e1h,0d4h,0d2h,0e2h,32h,32h,0e2h,0e2h,0d1h,0e1h,0d4h table2: dw 63835,64021,64103,64260,64400,64524,64580,64684,64777 dw 64820,64898,64968,65030,65058,65110,65157,65178 song2: db 02h db 04h,94h db 0e8h,0e4h,0e4h,0e8h,0e4h,0f4h,0d4h,0c4h,0b4h,84h,84h,92h,92h,94h,92h,02h

02h db 0a4h,0a2h,0b2h,0b4h,0c4h,84h,82h,92h,94h,0a4h db 04h,0c2h,0c2h,0d4h,0c2h,0d2h,0d8h,0d4h,0d2h,92h db 0e8h,0e4h,0e4h,0e8h,0e4h,0f4h,0d4h,0c4h,0b4h,84h,84h,92h,92h,94h,92h, 27

db 0a4h,0a2h,0b2h,0b4h,0c4h,0e8h,0d8h db 0c8h,0c8h,08h,08h,78h,28h,38h,34h,24h db 24h,64h,64h,24h,64h,72h,72h,78h,58h,54h,44h,38h,34h,14h,34h,84h,74h,74h,62h,0d8h,78h,28h,38h,34h,24h

db db db

58h,58h,58h,58h,0a8h,0a8h,0a4h,0b4h,0a4h,84h,0a4h, 24h,64h,64h,24h,64h,72h,72h,72h,94h,92h,94h,0a4h,58h,58h,54h,44h 94h,98h,98h,08h 84h,82h,82h,82h,82h,94h,0a2h,94h,92h,82h,74h,72h,74h,72h,72h,72h,72h,92h,91h,91h,94h,54h,74h,94h 02h db 0a4h,0a2h,0b2h,0b4h,0c4h,84h,82h,92h,94h,0a4h,04h,0c2h,0c2h,0d4h,0d8h,0d4h,0d2h,92h 02h db 0a4h,0a2h,0b2h,0b4h,0c4h,84h,82h,92h,94h,0a4h,04h,0c2h,0c2h,0d4h,0d8h,0d4h,0d2h,92h

db 0a4h,0a2h,0b2h,0b3h,0c4h,0e8h,0d8h db 0c8h,0c8h,0c8h,08h db 00h db 0e8h,0e4h,0e4h,0e8h,0e4h,0f4h,0d4h,0c4h,0b4h,84h,84h,92h,92h,94h,92h,db 0e8h,0e4h,0e4h,0e8h,0e4h,0f4h,0d4h,0c4h,0b4h,84h,84h,92h,92h,94h,92h,table3: dw 64898,64968,65030,65086,65135,65158,65199,64260,64400,64524,64580,64684,64777,64862 song3: db 03h db 28

04h,04h,0c2h,14h,12h,12h,12h,11h,11h,0c2h,0d1h,0e1h,14h,14h,02h,32h,12h,21h,31h,52h,51h,51h,54h db 32h,31h,31h,12h,11h,31h,52h,51h,31h,24h,24h,24h,64h,54h,24h,34h,52h,34h,52h,32h,21h,31h,12h,11h,21h,34h,04h db 52h,51h,0d1h,12h,12h,32h,31h,31h,52h,51h,51h,22h,22h,22h,0d2h,0d1h,0d1h,24h,22h,0c2h,14h,12h,12h,34h,32h,32h,54h,54h,54h,54h db 12h,11h,31h,52h,51h,51h,64h,54h,32h,31h,11h,52h,52h,52h,32h,02h,12h,02h,0c4h,14h db 0a2h,0a1h,11h,52h,52h,52h,32h,02h,12h,02h,0c4h,14h,0c4h,14h,0c4h,14h,14h,04h db 04h,04h,04h,04h db 00h table4: dw 64260,64400,64524,64580 ,64684,64777,64280,64898,64968,65030,65058,65110,65157,65178,65217 song4: db 04h

db 82h,01h,81h,94h,84h db 0b4h,0a4h,04h db 82h,01h,81h,94h,84h db 0c4h,0b4h,04h db 82h,01h,81h,94h,84h db 0b4h,0a4h,04h db 82h,01h,81h,94h,84h db 0c4h,0b4h,04h db 82h,01h,81h,94h,84h db 0b4h,0a4h,04h db 82h,01h,81h,94h,84h db 0c4h,0b4h,04h 29

db 82h,01h,81h,94h,84h db 0b4h,0a4h,04h db 0c4h,0b4h,04h db 00h db 82h,01h,81h,94h,84h table5: dw 64021,64103,64260,64400 ,64524,64580,64684,64777,64820,64898,64968,65030,64934 song5:

db 05h db 42h,82h,82h,82h,84h,02h,72h db 62h,72h,62h,52h,48h db 0b2h,0b2h,0b2h,0b2h,0b4h,02h,0a2h db 12h,0a2h,0d2h,92h,88h db 82h,0b2h,0b2h,0a2h,84h,02h,72h db 62h,72h,62h,52h,44h,02h,12h db 12h,62h,62h,52h,44h,02h,82h db 72h,62h,52h,32h,48h db 00h table6: 64021,6103,64260,64400,64524,64580,64624,64777,64820,64898,64958,65030,65058,65110,65157 song6: db 06h

db 0a2h,0b2h,0d2h,0b2h,0a4h,0b2h,0d2h db 0b2h,0a2h,82h,72h,88h db 72h,82h,0a2h,82h,72h,62h,42h,62h db 0a4h,02h,0b2h,0a4h,84h db 72h,82h,72h,62h,72h,84h,72h db 64h,62h,12h,34h,02h,42h db 38h,38h dw db 38h,38h 30

db 44h,02h,32h,44h,64h db 72h,74h,82h,0a4h,02h,062h db 0a8h,0a8h db 0b2h,0b4h,0a2h,84h,82h,72h db 62h,72h,82h,0a2h,88h db 72h,74h,62h,42h,32h,32h,62h db 78h,78h db 82h,84h,72h,82h,0a2h,84h db 72h,82h,72h,62h,48h db 32h,0a2h,82h,0f2h,0a2h,0b2h,82h,72h db 68h,68h db 0b2h,0b2h,0b2h,0a2h,82h,84h,02h db 72h,74h,62h,42h,32h,42h,62h db 78h,78h db 0a2h,0b2h,0a2h,72h,82h,84h,82h db 72h,74h,62h,44h,64h db 0a8h,0a4h,02h,0a2h db 0a2h,0b1h,0a1h,82h,0a2h,0b4h,0b2h,0c2h db 0a2h,0b2h,0a2h,82h,78h db 84h,72h,62h,44h,02h,62h db 72h,81h,71h,62h,72h,84h,02h,0a2h db 0b4h,02h,82h,74h,82h,72h db 68h,68h db 00h end db 72h,82h,72h,62h,72h,84h,0a2h 31

单片机课程设计选题简单 单片机课程设计选题及程序篇五

中北大学单片机原理及接口技术课程设计说明书 绪论

电子钟已成为人们日常生活中必不可少的物品,广泛用于个人、家庭以及车站、影院、办公室等公共场所,给人们的生活、学习、工作带来了极大的方便。随着电子技术的发展,人们已不再满足于钟表原先最简单的报时,希望出现一些新的功能,诸如日历的显示、闹钟的非接触式止闹、秒表功能、重要日期倒计时显示等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究数字电子钟及其扩展应用,有着非常现实的意义和实用价值。

单片机是指将微处理器、一定容量的ram和rom以及i/o口、定时器等电路集成在一块芯片上的完整计算机系统。89c51单片机是一种低功耗、高性能的,它采用cmos工艺和高密度非易失性存储器(nuram)技术,其输出引脚和指令系统都与mcs-51兼容;片内的flash rom允许在系统内改编程序或用常规的nuram编程器来编程。因此,89c51是一种功能强、灵活性高,而且价格合理的单片机,可以方便的利用at89c51定时器和6位7段数码管,设计一个电子时钟。显示格式位 “xx xx xx”,从左向右分别是:时、分、秒。1.1 设计目的

利用mcs-51芯片及相关芯片设计数字钟。1.2 设计内容 1)硬件设计

设计数字钟的电路原理图,用proteus绘制硬件电路。制作实物。2)软件设计

(1)时、分、秒的设置及显示;(2)画出程序框图;(3)调试与分析。用proteus仿真。

//buf

中北大学单片机原理及接口技术课程设计说明书

{

keyrel=1;keyprocess(buf);buf=0xff;} display();} } //按键处理函数

void keyprocess(unsigned char key)//键值处理,正常计时,设置时分秒 { switch(key){ case 0xe0:status++;//按下设置键 if(status>=4)status = 0;

break;case 0xd0:switch(status)//按下加1键,3种模式下加1

{

case 0x01:if(hhh<24)hhh++;

else hhh=0;break;case 0x02:if(mmm<60)mmm++;

else mmm=0;break;case 0x03:if(sss<60)sec++;

else sss=0;break;} break;case 0xb0:switch(status)//按下减1键 { case 0x01:if(hhh>0)hhh--;

else hour=23;break;

中北大学单片机原理及接口技术课程设计说明书

} } //定时器0中断函数

void timer0()interrupt 1 using 2 { static uint count;th0=(65536-1000)/256;// 定时器0设置初始值1ms中断初始值 tl0=(65536-1000)%256;tr0=1;count++;//正常计时

if(count>=1000)// 定时 1s 到,以下为时钟的正常走钟逻辑 { count=0;sss++;if(sss>60){ sss=0;mmm++;if(mmm>60){ mmm=0;hhh++;if(hhh>24){ hhh=0;}

} } }

}

【本文地址:http://www.xuefen.com.cn/zuowen/1097846.html】

全文阅读已结束,如果需要下载本文请点击

下载此文档