- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)