项目13.ppt
《项目13.ppt》由会员分享,可在线阅读,更多相关《项目13.ppt(93页珍藏版)》请在三一文库上搜索。
1、项目一 指示灯控制系统设计与调试,任务3 装饰灯控制模块,2,内容提要,日常生活中有哪些用途的装饰灯? 举出几个典型的装饰灯工作形式 分析装饰灯工作形式与单片机资源之间的联系 自己选择一个主题设计一款装饰灯,3,项目效果图,4,主要内容,5,设计步骤,1,2,3,5,4,任务分析,确定方案,硬件设计,软件设计,系统调试,装饰灯控制模块,6,设计要求,7,硬件电路设计 具体可分为,硬件电路设计,系统方案设计,具体电路方案设计,总电路原理图设计,8,软件设计,9,系统方案设计,10,具体案例分析,两盏灯交替闪烁 跑马灯 多彩霓虹灯,11,两盏灯交替闪烁,设计要求,P1口作输出口,编写程序控制P1.
2、0和P1.1口外接的两个发光二极管轮流交替点亮,每次点亮的时间为0.5S。,设计思路,要实现两个发光二极管轮流交替点亮,可以参考前面任务二中的转向指示灯闪烁的控制,只是这次是两个发光二极管交替闪烁,它们初始的状态刚好相反。,12,两盏灯交替闪烁仿真电路图,13,两盏灯交替闪烁流程图,14,跑马灯,设计要求,P1口作输出口,编写程序控制P1口各发光二极管依次轮流点亮,每次点亮的时间为0.5S。,设计思路,由于设计要求中各发光二极管是依次轮流点亮,考虑此点亮规律刚好和循环移位相匹配,所以我们可以使用移位运算。,15,跑马灯仿真电路图,16,跑马灯流程图,用C语言的位运算符中的移位指令来实现移位。,
3、循环次数为8次,可以 通过FOR循环来实现。,17,左移运算符“”是双目运算符,其功能是把“ ”左边的运算数的各二进制位全部左移若干位,由“”右边的数指定移动的位数。其中,移位过程中,高位丢弃,低位补0。 例如,a4是指把a的各二进制位向左移动4位。如果a=00000011(十进制3),左移4位后为00110000(十进制48)。,“左移”运算,运算符,18,右移运算符“”是双目运算符,其功能是把“ ”左边的运算数的各二进制位全部右移若干位,“”右边的数指定移动的位数。 例如,取a=15,则a2表示把00001111右移为00000011(十进制3)。 应该注意的问题是,对于有符号数,在右移时
4、,符号位将随同移动。当为正数时, 最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。,“右移”运算,运算符,19,参考程序,main( ) unsigned char i; i = 0xfe; while(1) i = i1; ,i的变化规律是: fe-7f-3f-1f-0f-07,i是无符号整数,20,参考程序,main() char i; i=0xf7; while(1) i=i1; ,i的变化规律是: f7-fb-fd-fe-ff,i是有符号的8位整数,且给他符的初值是最高位为1。,21,跑马灯流程图,在此数据变化的趋势是
5、: 11111110-11111101-11111011-11110111-11101111-。,循环次数为8次,可以 通过FOR循环来实现。 比如:for(i=0;i8;i+),如何用移位运算来实现数据的这种变化规律呢?,22,跑马灯程序设计,main( ) unsigned char n,temp; while(1) temp=0x01; for(n=0;n8;n+) P1=temp; temp=temp1; delay(); ,Temp的变化规律是: 00000001- 00000010- 00000100- 00001000- 该值取反后正是 我们需要的数据,思考: 当指示灯要从P1口
6、的高位亮到 低位时程序该如何修改?,23,思考,能够实现8位LED的跑马灯了,如何实现16位甚至是24位LED灯的流水点亮呢?,24,C语言的数据类型,C语言提供有丰富的数据类型,其数据类型及其分类关系如图2-1所示。 C语言中的数据有常量数据和变量数据之分,它们分别属于上述这些类型。本章将介绍基本类型中的整型、实型和字符型三种数据类型,其他类型在单片机编程中很少用到,所以不作介绍。,25,图2-1 C语言数据类型及分类关系图,C语言的数据类型,26,标识符、常量和变量,2.2.1 标识符 1标识符的概念 标识符是给程序中的变量名、数组名、自定义类型名(结构类型,共用类型和枚举类型)、自定义函
7、数、标号和文件等所起的名字。简单地说,标识符是由系统指定或由程序设计者指定的名字。,27,2标识符的命名规则 (1) 字符规则:标识符以字母或下划线开头,只能是由字母、数字和下划线组成的字符序列。 例如,下面的变量名都是合法的: sum,average,student_1,name,sex,age,lotus123,_tatol 下面的变量名都是不合法的: a+b,234,exe-1,student 2,$ab.c,a.b.c,28,(2) 长度规则:标识符长度随系统而异,在TC V2.0中,标识符的有效长度为132个字符,缺省值为32。如果超长,则超长部分被舍弃。但无论哪个系统,至少前8个字
8、符有效。例如,由于student_name和student_number的前8个字符相同,有的系统认为这两个变量是相同的而不加以区别。在C51编译器中,只支持标识符的前32位为有效标识。,29,3标识符的分类 C语言中,标识符可分为三类,即关键字标识符、预定义标识符和用户自定义标识符。 1) 关键字标识符 C语言中的关键字共有32个,他们已有专门的含义,不能用作其他标识符。根据关键字的作用,可将其分为数据类型关键字、控制语句关键字、存储类型关键字和其他关键字四类。,30, 数据类型关键字(12个):char,double,enum,float,int,long,short,signed,str
9、uct,union,unsigned,void。 控制语句关键字(12个):break,case,continue,default,do,else,for,goto,if,return,switch,while。 存储类型关键字(4个):auto,extern,register,static。 其他关键字(4个):const,sizeof,typedef,volatile。,31,2) 预定义标识符 预定义标识符是指C语言提供的库函数名和预编译处理命令等,如:scanf,printf,include,define等。C语言允许将这些标识符另作它用,但这些标识符将失去系统所规定的原意。为了编程方
10、便、可靠,防止误解,建议用户避免将这些标识符另作它用。,32,3) 用户自定义标识符 用户在编程时,要给一些变量、函数、数组、文件等命名,将这类由用户根据需要自己定义的标识符称为用户自定义标识符。如下列程序段中的i1和i2、max、score均为用户自定义标识符。 int i1,i2; (i1和i2为变量名) float max(int a,int b) (max为函数名) float score20; (score为数组名),33,说明: (1) C语言中的标识符区分英文字符的大小写,即同一字母的大小写被认为是两个不同的字符。所以在使用标识符时,务必注意大小写。习惯上,变量名和函数名中的英文
11、字母用小写,以增加可读性。 (2) 给变量命名时,应遵循“见名知意”这一基本原则。所谓“见名知意”,是指通过变量名就能知道变量值的含义。通常应选择能表示数据含义的英文单词(或其缩写)或汉语拼音字头作变量名。例如,name/xm(姓名),sex/xb(性别),age/nl(年龄),salary/gz(工资)等。,34,2.2.2 常量 1常量的概念 在程序运行过程中,其值不能被改变的量称为常量。如:5,3.14,a,“abc123“等。 2常量的分类 根据常量的取值对象,C语言将常量分为以下5种类型: (1) 整型常量。例如:16,0,-3等。 (2) 实型常量。例如:3.14159,-3.6等
12、。 (3) 字符常量。例如:A,5,#等。 (4) 符号常量。例如:“#define PI 3.14159”中的PI等。 (5) 字符串常量。例如:“Abc“,“6estghj“,“45+35“等。,35,2.2.3 变量 1变量的概念 在程序运行过程中,其值可以被改变的量称为变量。如:“float x,y;”中的x与y。 2变量的两个要素 变量有两个要素:变量名和变量值。 (1) 变量名。每个变量都必须有一个名字,即变量名。变量命名应遵循标识符的命名规则。,36,(2) 变量值。在程序运行过程中,变量值存储在内存中;不同类型的变量,占用的内存单元(字节)数不同。在程序中,通过变量名来引用变量
13、的值。 3变量的定义与初始化 在C语言中,要求对所有用到的变量,必须先定义后使用。在定义变量的同时,进行赋初值的操作称为变量初始化。,37,变量定义的一般格式如下: 存储类型 数据类型 变量名1,变量名2,; 例如: int i,j,k; /*定义i,j,k为整型变量*/ long m,n; /*定义m,n为长整型变量*/ float r,l,area;/*定义r,l,area为实型变量*/ char ch1,ch2; /*定义ch1,ch2为字符型变量*/,38,提高源程序可读性建议:可在分隔符逗号“,”后面加一个空格。例如,将上述的变量定义语句“float r,l,area;”改为:flo
14、at r,l,area; 注意:本书使用方框“”符号作为空格的描述符,以下相同。,39,变量初始化的一般格式如下: 存储类型 数据类型 变量名1=初值1, 变量名2=初值2,; 例如: float r=2.5,l,area; 该语句定义了r,l,area三个实型变量,同时初始化了变量r。,40,整 型 数 据,2.3.1 整型常量 1三种表示形式 在C语言中,整型常量有三种表示形式: (1) 十进制。例如50,-365,153,0等。 (2) 八进制(以数字0开头)。例如016,0165等。 (3) 十六进制(以数字0加小写字母x开头)。例如0x336,0x2af等。,41,2分类 (1) 基
15、本整型。在16位操作系统中,用2字节存储,其数据范围与int型变量一样。 (2) 长整型(在数值后面加“L”或“l”)。例如12l,215L等。对超出基本整型变量的整型常量,可使用长整型常量表示,其取值范围可达-231231-1。,42,3类型匹配规则 将一个整型常量赋给一个整型变量时,其数据类型的匹配规则为:一个整型常量,可以赋给能容纳下其值的整型变量。 例如,其值在-215215-1范围内的整型常量,可以赋给int型变量和long int型变量;其值在-231231-1范围内的整型常量,就只能赋给long int型变量。 注意:常量无unsigned型,但一个非负整型常量,只要它的值不超过
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 13
链接地址:https://www.31doc.com/p-3376878.html