单片机课程设计3.doc

上传人:土8路 文档编号:10265476 上传时间:2021-05-03 格式:DOC 页数:13 大小:728KB
返回 下载 相关 举报
单片机课程设计3.doc_第1页
第1页 / 共13页
单片机课程设计3.doc_第2页
第2页 / 共13页
单片机课程设计3.doc_第3页
第3页 / 共13页
单片机课程设计3.doc_第4页
第4页 / 共13页
单片机课程设计3.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《单片机课程设计3.doc》由会员分享,可在线阅读,更多相关《单片机课程设计3.doc(13页珍藏版)》请在三一文库上搜索。

1、 课 程 设 计 报 告(2010 2011学年 第 2 学期)课程名称: 单片机课程设计 班 级: 浦电子0903 学 号: 16 姓 名: 指导教师: 2011年 03月1、 目的实习是在教师指导下,学生运用所学理论知识及实验方法解决实际问题的一种实践活动,通过这些活动培养学生分析问题和解决问题的能力。具体表现在构造一个控制系统框架的能力;检索和阅读文献资料的能力;综合运用所学专业知识使之对所设计系统具有独立调试的能力和故障处理的能力;绘图能力;计算机运用能力;逻辑思维能力与形象思维能力;文字及口头表达的能力;撰写实习报告的能力。2、 内容和要求 1、用PROTEL99SE画单片机系统原理

2、图;2、焊接电路板;3、根据编程任务要求编写并调试程序;4、撰写报告;5、参加实习成果验收及面试或考试;3过程(如实际程序开发、电子制作,详细说明有关原理、开发过程、调试过程、结果)任务一:交通灯功能描述:(1)基本要求:以单片机为核心设计一个完整的交通灯模拟系统。所谓模拟就是以每组有绿,红,黄色3支共两组发光二极管表示交通信号灯,数码管2只共两组以递减的方式表示各色信号灯的时间。 在双干线路口上,交通信号灯的变化是定时的。假定: 放行线,绿灯亮放行25秒,黄灯亮警告5秒,然后红灯亮禁止。 禁止线,红灯亮禁止30 秒,然后绿灯亮放行。使两条路线交替地成为放行线和禁止线,就可以实现定时交通控制。

3、假定以P1口线接6支发光二极管(即交通信号灯),因为电路中有反相器的关系,所以口线输出高电平则“信号灯”熄灭,口线输出低电平则“信号灯“亮。(2)进阶要求一:在基本要求的基础上,要求红绿灯时间可通过按键设置,例如红灯60 秒,绿灯52秒,黄灯8秒。提示:时间设置一定是要遵循以下规律:红灯时间绿灯时间黄灯时间;(3)进阶要求二:在以上要求的基础上通过键盘设置的时间可以掉电保存。提示:利用24LC16来保存时间参数;硬件各子电路分析1.电源模块:插上电源后,维持电路板的工作。2.串口模块:通过串口与电脑连接,烧入程序 3.复位模块:复位是单片机的初始化操作,复位的功能是把PC初始化为0000H,使

4、51单片机从0000开始执行程序。(如图1) 图2 图14.时钟电路模块:单片机的时钟电路由振荡电路和分频电路组成,其中振荡电路由反相器和并联外接的石英晶体和电容构成,用于产生振荡脉冲,分频电路用于把振荡脉冲分频,以得到所需的时钟信号。由图4可知机器周期是振荡脉冲的12分频。(如图2)5.发光二级管模块:可知当输出为底电平时,LED灯发光。(如图3) 图3 图4 6.LED数码管模块:实验板所用的是七段显示数码管,并加有小数点,利用扫描方式使四个数码管分时工作,但加入延时程序,利用人眼的余晖则可看到正常的四位显示值。如图4所示,COM口由A口产生的选通信号选择当前工作的数码管,另八个口接到74

5、HC244的译码输出的09的段码。7.8155模块:8155有两个8位和一个6位可编程并行I/O接口以及一个14位可编程定时器/计数器的内部结构,是常用的扩展单片机I/O资源的芯片,8155原理是只利用单片机的一个并行口来扩展出几个并口,使得单片机可以接入更多的设备,A、B、C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口)。在本次设计中,利用8155的并行口扩展功能,A口的高四位用来位选,即选择当前工作的LED数码管;B口输出段码值,通过74HC244译码后送到数码管显示。8155的片选信号CE接到51单片机16位地址最高位AD15,地址锁存信号ALE接AD8,再通过送到

6、A、B不同的命令字分别选通A、B口。8.单片机模块:单片机是集成在一个芯片上的计算机,结构比较复杂,基本部分组成有:中央处理器CPU、内部数据存储器、内部程序存储器、定时器/计数器、并行I/O口、串行口、中断控制电路、时钟电路、位处理器、内部总线。设计采用的SST89E58RD:是8位FLASH FLEX51系列单片机,有40K片内FLASH EEPROM程序存储器,存储器被分为两个独立的程序存储器块,基本FLASH Block0占用32K字节片内程序存储空间,二级FLASH Block1占用8K字节的片内程序存储器空间;8K字节的二级FLASH块能被映射到32K字节低地址空间它也能从程序计数

7、器中被隐藏掉而用做一个独立的类似EEPROM的数据存储器;工作电压Vdd=4.55.5;1K*8的内部RAM。软件设计基本要求1.首先,首先通过定时器中断设置一个1秒。当存在1秒后,自动跳入红灯状态,在红灯开始减1前,首先会进入一个判定阶段,当黄灯数值有变化时,会跳入黄灯状态,否则继续下一段操作,当绿灯数值有变化时,会跳入绿灯状态,否则继续下一段操作。2.因为刚开始,绿灯黄灯都还没有变化,所以红灯减1。在减1过后,会判断红灯是否否减为0,没有减为0则中断返回。否则,将将赋值绿灯的数值并进入绿灯状态。3.进入绿灯状态后,做减1操作,同时判断是否减为0,没有减为0中断返回,继续等待1秒,存在1秒后

8、自动跳转到红灯状态,进入之前所说的判定阶段,因为此时绿灯已经变化,所以跳转到绿灯状态,继续执行减1操作。4.黄灯状态与绿灯状态雷同。不过在黄灯减为0后,会重新重置为绿灯和黄灯的初始数据,以便新一轮的循环。5.以上讨论的是一个方向的红绿灯状态,但是交通线路存在东西,南北两个线路,即当南北为红灯时,东西为绿灯的例子。在这个例子中,当东西绿灯减为0是,应该实现跳转到该线路的黄灯状态,但此时南北红灯并未减到0,还不能进行跳转,两个方向会发生冲突。因为两个方向是同时运行的,所以为了保证同步将三种状态拆分为四种状态。 即:东西:红灯:30-5,红灯:5-0,绿灯:25-0,黄灯:5-0 南北:绿灯:25-

9、0,黄灯:5-0,红灯:305,绿灯:5-0进阶要求一1.说到修改时间,我首先想到是通过外部中断。我的初步思路是,按键1进入修改状态,初始进入红灯修改状态。按键2可以进行红灯修改状态和绿灯修改状态之间的切换。按键实现时间的加。按键4实现时间的减。最后按键5退出修改状态,恢复红绿灯的工作。2.将P3.2设置为中断按键,程序会跳入红灯修改状态,并在这个状态死循环。同时设置P3.3为切换,P3.3为加,P3.4为减。按键任何一个键便会从死循环跳出,进入相应状态。P3.3便进入绿灯修改状态,并死循环,等待相应的按键。P3.4,P3.5进行相应的加减操作后便回到各自的修改死循环。3.问题1:因为4个端口

10、都被占用,无法中断返回。P3.2是进入中断,不能复用。P3.4,P3.5实现加减功能,比较直观所以不想复用。所以我修改了思路,通过P3.3的切换功能,在红绿灯修改后直接中断返回。4.问题2:虽然思路正确,但实际上板后。发现红灯修改后,按P3.3会直接中断返回,无法实现绿灯的修改。所以我多加了一个状态,在改状态中强制在红灯修改好后,跳转到绿灯状态。经过略微调试后,短按P3.3可实现切换功能。长按P3.3可实现中断返回的功能。进阶要求二 1.关于掉电保存,首先要了解关于24CL16的相关知识。SCL串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,SDA 双向串行数据/地址管脚用于器件所有数据

11、的发送或接收SDA 是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线或wire-OR。 2.24CL16遵循I2C 总线协议I2C 总线协议定义如下1 只有在总线空闲时才允许启动数据传送2 在数据传送过程中当时钟线为高电平时数据线必须保持稳定状态不允许有跳变时钟线为高电平时数据线的任何电平变化将被看作总线的起始或停止信号 3. 写操作:在字节写模式下主器件发送起始命令和从器件地址信息R/W 位置零给从器件在从器件产生应答信号后主器件发送24LC16的字节地址主器件在收到从器件的另一个应答信号后再发送数据到被寻址的存储单元24LC16再次应答并在主器件产生停止信号后开始内部数据的擦写在内

12、部擦写过程中24LC16不再应答主器件的任何请求4.读操作对24LC16 读操作的初始化方式和写操作时一样仅把R/W 位置为1 有三种不同的读操作方式立即地址读选择读和连续读是否否否否否否否中断返回键入P3.3红灯修改状态键入P3.2进入中断中断入口重新初始化是是是是是否否是否减为0黄灯减1秒是否减为0绿灯减1秒否是否减为0红灯减1秒绿灯是否改变黄灯是否改变存在1秒 24LC16写程序24LC16读程序初始化开始否加1键入P3.4是减1键入P3.5是键入P3.3是绿灯修改状态加1键入P3.4是键入P3.5减1是交通灯整体设计电路图(略去电源部分)任务二 秒表功能描述:要求:至少包括4个功能:时

13、间清零;启动计时;暂定计时;继续计时;计时最小单位0.1 秒,最大计时时间999.9秒。硬件个子电路分析:- 同交通灯设计软件设计:1.秒表可以参考上个学期所做的定时器。在定时器中,是通过两个数码管分别实现时分秒,还要通过除法处理,分别显示在相应的数码管上。我将百分十以及小数点后一位直接分开处理,以十进制满十进一的原则,分别显示在相应的数码管上,显得更加直观方便。2.在暂停问题上更加简单,设置一个外部中断P3.2,在中断代码中不断循环显示当前的数值,考虑的生活常识的问题,电路板刚上电时,秒表并未启动,当按P3.3是启动秒表。也就是说,P3.3兼顾启动秒表和中断返回两个用途。3.在清零的问题上,

14、我通过P3.4在暂停和正常运行中都设置了清零的功能。初始状态初始化开始键入P3.3启动有0.1秒运 行清零数码管1加1是键入P3.4否1秒到否键入P3.2数码管2加1否否否暂停10秒到 键入P3.4 否是数码管3加1否100秒到数码管4加1否999.9到清零秒表整体设计电路图(略去电源部分)任务三 音乐功能描述:要求:利用蜂鸣器播放一段音乐硬件个子电路分析: 蜂鸣器电路模块:通过控制单片机定时器的定时时间产生不同频率的音频脉冲,驱动蜂鸣器发出不同音节的声音。其他模块-同交通灯设计软件设计1. 单片机之所以能放出声音,主要是考两点。音调,表示一个音符唱多高的频率。节拍 表示一个音符唱多长的时间。

15、2. 每个音符都有固定的频率,根据该频率可以算出它的定时初值。假设单片机晶振频率f0=12Mhz,定时器在工作方式1计数脉冲值与频率的关系为:N=FI 2FR 其中N计数值; FI内部计时一次为1us,故其频率为1MHz;FR要产生的频率。其计数值的求法为 T=65536N=65536FI 2FR 节拍走由相应的乐理只是得出。3. (1)建立简谱对应的简谱码、T值及节拍数表,画在草稿纸上。 先对照歌曲的简谱把其中所有出现的音符找出,从低音到高音依次排序,确定各音的数值 对照歌曲的简谱确定各音符的节拍数相对于基准定时单位的倍数,从小到大排列。 (2)把各音符频率对应的定时T值建立在TABLE1表

16、。(3)根据第一步建立的表,建立乐曲对应音符节拍码表TABLE,其中简谱码(音符)在高4位,节拍码(节拍数)在低4位。开始T0返回P3.2 输出重新定时是是否否结束R2=0?调入延时子程序延时常数存R2读取节拍读取音符A=FFH?设置定时器初值存入乐曲代码表初始化 音乐播放器整体设计电路4小结交通灯实验已经并不陌生了,在上个学期,我便用计时器的思路进行修改,实现了交通灯的功能。在此基础下,本次课程设计附加了两个要求。第一个要求,我的思路一开始有写复杂,难以实现。为了实现修改功能,我首先完善了以前的交通灯程序,然后通过外部中断的方法试验修改数据。虽然理论上我觉得可行,但在实际上板后发现了问题。首

17、先是,按键不够的问题,如果有足够的按键的话,我相信会很完美。为此我不得不调整了思路,接下来是,无法实现绿灯修改的问题,我在这上面耗了很多时间,但是最后想到了办法,解决了问题。这是我觉得很欣慰的地方。第二个要求就相对难很多了。首先是关于对24LC16的了解,我是通过网上对该芯片的功能介绍,以及类似的掉电保存的汇编语言才真正搞明白。同时,在实际上板是额遇到恶劣问题,关于读与写,这两段代码应该放在什么地方我反复研究了很长时间,多次尝试,发现不仅实现不了掉电保存,连原来的功能也开始收影响。关于秒表我不想多赘述,因为这相对而言简单的很多,只是我更具相关常识的问题,丰富了对秒表功能的完善。使其更具有实际意

18、义。对于我来说困难的话,就是第二个数码管上点的显示了。这是在请教同学后,才添加上去的。本次单片机觉得最有意思的便是任务三音乐了,我通过相关资料,学习应用汇编语言,对一首音乐进行编码,为此我特意向一个懂音乐的朋友请教关于节拍的判别。了解到,单片机是通过节拍和音调来播放音乐。熟悉了方法后,我编了五首曲子。但是通过该种方法编写音乐也是有局限性的,因为它只能编写15种不同的音符,对节拍的限制更加苛刻,因为音符可以自由编码,但节拍数十固定不变的,所以超过4拍便无法编码了,当然一般的曲子应该够用。本次课程设计,是我对单片机有了更深的认识。特别是对于汇编语言的编写更加地熟练了,只是很遗憾至今还没有通过C语言来编写程序,在网上看到有很多C语言相关的程序。能够通过自己的努力,不断思考与学习,最终实现要求的功能,感到很自豪,同时也增加了对单片机的浓厚兴趣。因为时间问题,无法在规定时间内完成温度测控系统,计算器,频率计以及综合程序的实验要求感到很遗憾,不过今后有时间我会尝试。成绩日期批阅人

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1