单片机课程设计文档.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计 题 目: 简易流水灯 系 别: 信息技术学院 专 业: 计算机科学与技术 班 级: 专升本1班 学 号: 111112003 111112006 姓 名: 朱旭鹤 于晶晶 指导老师: 陈向奎 目 录 摘要: 3 第一章 绪论 4 1、流水灯的设计背景 4 第二章 系统设计 4 1、系统设计要求 4 2、流水灯设计的工作流程图 5 第三章 系统主要工作原理 6 1.时钟设计部分 6 2.复位设计部分 7 3.开关部分 7 4.工作电路部分 8 第四章 软件程序流程图 9 1.单片机详细C51程序代码 9 2. 元器件说明 13 3. 仿真电路图 14 第五章 工作总结和愿望 15 参考文献: 16 致谢 17 摘要: 51单片机是各单片机中最为典型和最有代表性的一种。这次设计是通过对它的学习、、、、当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。Led灯根据相应的信号,灯亮的顺序发生相应变化。 当按下开关k3时,单片机产生有效信号从P2端口输出到led灯。Led灯根据相应的信号,灯亮的频率发生相应变化。 2、流水灯设计的工作流程图 图1总体设计框图 该系统的设计在总体上分为以下几个部分:1单片机控制部分; 2 按键控制部分;3 led灯输出部分。 具体设计步骤如下: (1)按以上要求制定设计方案,并绘制出系统工作框图,绘制程序流程图; (2)按要求设计单片机的外围电路,给出电路原理图; (3)单片机仿真器等元器件正确可靠地连接; (4)利用仿真器进行程序设计与调试; 第三章 系统主要工作原理 1.时钟设计部分 单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。 电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1、C2、晶振提供时钟信号。 2.复位设计部分 滤波电容提供复位,一端与接口9相连,另一端与接口31相连。电阻的作用是用于上电复位的,VCC以上电,由于电容两端电压不能突变,所以RST上为高电平,然后电容放电,RST就为低电平了 3.开关部分 按键输入的防抖设计 按键的触点在闭合和断开时均会产生抖动,这是触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。现在一般采用软件延时的方法来避开抖动阶段。防抖使用了nop指令,Nop指令为单周期指令,有晶振频率决定。 K0控制灯亮的顺序 当余数等于0时,为原始状态。 当余数等于1时,灯亮顺序从上到下。 当余数等于2时,灯亮顺序从下到上。 当余数等于3时,灯亮顺序从中间到两边。 当余数等于4时,灯亮顺序从两边到中间。 K3控制灯亮的频率 时间初值设为250us,开关每按下时间减少50us,当减小到0时,再设置为300us。 4.工作电路部分 1) 工作电路就是根据总的电路的指令,来反应工作情况。本电路的流水灯电路具体的如下: 2)根据各个模块的功能及他们的信号传输,连接电路如下: 第四章 软件程序流程图 1.单片机详细C51程序代码 #include reg51.h //此文件中定义了51的一些特殊功能寄存器 #include intrins.h sbit K0=P0^0; // 闪烁方式 把K0定义为P0^0口 sbit K3=P0^3; //闪烁频率 把K3定义为P0^3口 unsigned int key_num(); //计算按键按下子程序 “unsigned int 为无符号整型 void delayms(unsigned char ms) // 延时子程序 ms决定延时时间的长短,ms值越大,延时时间越长 { unsigned char i; while(ms--) { for(i = 0; i 120; i++); //延时程序,当执行时,每个周期i从零增加到120,所用的时间乘以ms的值,就是要延时的时间 } } void main() { unsigned char LED; //定义无符号字符型LED unsigned int key_m; //定义无符号整型”key_m unsigned int a=250; /

文档评论(0)

kxiachiq + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档