项目二霓虹灯控制系统.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
项目二霓虹灯控制系统.doc

项目二 霓虹灯控制系统 2.1 项目说明 项目任务 城市的霓虹灯为美化城市夜景作出了不可磨灭的贡献。本项目的任务是利用51单片机驱动8个发光二极管模拟霓红灯控制系统。 项目目标 知识培养目标 掌握C51变量的定义、运算符的应用 掌握延时的实现及应用 掌握基本程序设计方法 掌握C51库函数的使用 掌握数组的定义及应用 掌握字节寻址与位寻址的应用 能力培养目标 培养单片机控制系统的硬件分析与设计能力 培养元器件的计算与选择能力 培养C51的程序设计能力 培养分析问题与解决问题的能力 培养团队协作能力 主要内容  TOC \o 1-3 \n \p \h \z \u  HYPERLINK \l _Toc322245022 2.2 基础知识  HYPERLINK \l _Toc322245023 2.2.1 一个发光二极管闪烁  HYPERLINK \l _Toc322245024 2.2.2 流水灯  2.2.1 一个发光二极管闪烁 1 闪烁原理 控制一个发光二极管点亮→延时→熄灭→延时→点亮,就会形成闪烁的效果。发光二极管点亮或熄灭的时间一般控制在100ms~1s之间。 延时由软件延时或定时/计数器实现。 软件延时由C51中的循环语句实现。由for构成的延时语句为: unsigned int i; for(i=0;i1827;i++); 通过keil C仿真后可知当晶振为12MHz时,for循环1827次时,约延时10ms,需要修改延时时间时,以1827为基准进行调整。 2.2.2 流水灯 流水灯是霓虹灯中最简单的一种闪烁效果,要求每次只点亮一个发光二极管,轮流点亮所有的发光二极管,点亮时间为500ms;轮流点亮所有发光二极管时,即可从高位至低位,也可从低位至高位,还可在高位与低位之间往复。 1 顺序结构 顺序结构是最简单的程序结构,执行时单片机按照程序中指令的顺序逐条进行。在实现复杂的功能时,顺序结构常常用于实现一些基本功能或用作循环结构的循环体。 顺序结构的特点是简单、直观,缺点是书写量较大、源程序较长。 2 循环结构 C51中提供了三种循环结构语句:while语句、do-while语句、for语句,循环结构使程序具有了重复处理能力。在编程时,先总结出需要反复执行的某种操作,再将其编写为一个可重复执行的程序段,每次执行该程序段时会得到新的结果,该程序段就是循环结构的循环体。 利用C51自带的库函数中的循环移位函数_crol_也可以实现流水灯,而且比用左移运算“”更为简单。 循环移位函数_crol_包含在头文件intrins.h中,也就是说,如果在程序中要用到这个函数,就必须在程序的开头处用include命令包含intrins.h头文件。 在头文件intrins.h中函数_crol_的声明为: unsigned char _crol_(unsigned char val,unsigned char n); 函数_crol_的前面没有void,取而代之的是unsigned char,这表示它是一个有返回值的函数,返回值的类型是unsigned char;括号内有两个形参unsigned char val、unsigned char n,形参val用于表示循环左移操作的对象、形参n表示循环左移的位数,调用该函数时,必须要给出对应类型的两个实参,执行完该函数后,通过函数内部的某种运算而得到一个新的unsigned char类型的数值,并将这个新值返回给调用它的语句。 “crol”中的c表示移位的对象是unsigned char类型,r表示循环移位,l表示移位的方向是向左。 循环左移函数可以将一个变量的最高位移入最低位,其它各位依次左移一位。 函数_crol_应用举例: unsigned char a=0x88; a=_crol_(a,2); 首先定义一个unsigned char类型的变量a,初值为88H,语句“a=_crol_(a,2);”的作用是将a连续循环左移2位后,再送给a,执行后a为22H。 循环右移函数可将一个变量的最低位移入最高位,其它各位依次右移一位,如 REF _Ref315222483 \h \* MERGEFORMAT 表2-5所示。 函数_cror_应用举例: unsigned char a=0x66,b; b=_cror_(a,2); 在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按一定顺序排列的同类数据的集合称为数组。在C51中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型,根据数组元素的类型,数组可分为数值数组、字符数组、指针数组、结构数组等各种类别。 在C51中,使用数组前必须先进

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档