《单片机技术与应用》 课件 项目一 智能车间指示系统设计与制作任务2_第1页
《单片机技术与应用》 课件 项目一 智能车间指示系统设计与制作任务2_第2页
《单片机技术与应用》 课件 项目一 智能车间指示系统设计与制作任务2_第3页
《单片机技术与应用》 课件 项目一 智能车间指示系统设计与制作任务2_第4页
《单片机技术与应用》 课件 项目一 智能车间指示系统设计与制作任务2_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务2指定效果指示灯设计与制作单片机技术与应用项目一智能车间指示系统设计与制作任务2指定效果指示灯设计与制作三诺生物传感有限公司【基础任务要求】模拟合作企业智能车间指示灯控制,利用单片机控制发光二极管从两边往中间依次点亮。任务2指定效果指示灯设计与制作任务实现四步骤绘制硬件电路图搭接硬件电路硬件设计调试硬件电路调试控制程序功能调试与实现绘制程序流程图指定效果指示灯编程方法程序设计01020304重点、难点难点绘制系统框图元器件选型分配资源方案设计对接单片机应用系统开发流程任务2指定效果指示灯设计与制作STC89C52单片机时钟电路复位电路电源电路发光二极管电路系统框图硬件设计-绘电路

请问如何连接单片机与8个发光二极管?硬件设计-绘电路电路绘制规范:用统一规定的元件符号尽量避免导线的交叉导线要求横平竖直设置元器件参数元件放在编辑区内细致规范严谨小锦囊任务名:指定效果指示灯设计与制作元件名称图片型号数量Proteus中的名称单片机芯片STC89C521用AT89C51代替晶振12MHZ1CRYSTAL电容22pF2CAP电解电容22μf/16V1CAP-ELEC电阻1KΩ1RES电阻50Ω8RES发光二极管8LED-RED

如何编程实现发光二极管从两边往中间依次点亮?

程序设计1重点、难点控制程序01111110101111011101101111100111P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7控制程序指定效果流水灯程序程序代码编写规范:字母大小写一致代码必须在英文状态下输入不要遗漏分号,括号成对出现;变量名的命名规范;运算符规范;细致严谨规范【知识链接】1.数据类型什么是数据类型?身高:175体重:61显示数据:0xfe,0xfd,0xfb…0x7fπ=3.1415926半径:r=2.5海拔:-100

室外温度:-10.5底下车库:-3延时参数:20000姓名性别出生日期工作单位职务住址身高体重血型张三11993-05-01学校学生宿舍21.87135.5B整型浮点型位类型1表示男,0表示女字符型字符型字符型可变不变不变不变可变可变可变可变可变思考:KeilC51编译器所支持的数据类型【知识链接】1.数据类型#include<reg51.h>#defineLEDP3#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){

unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}(1)位类型bit

它的值是一个二进制位,只有0或1。利用它可定义一个位类型变量,但不能定义位指针,也不能定义位数组。例如:bitm;【知识链接】1.数据类型(2)特殊功能寄存器sfr

MCS-51系列单片机内部定义了21个特殊功能寄存器,它们不连续地分布在片内RAM的高128字节中,地址为80H~FFH。

sfr也是单片机C语言扩展的一种数据类型,占用1B,值域为0~255。

利用它可以访问单片机内部的所有8位特殊功能寄存器。用sfr定义特殊功能寄存器地址的格式为:

sfr

特殊功能寄存器名=特殊功能寄存器地址;特殊功能寄存器在reg51.h这个头文件里面都帮我们定义好了,所以平时我们就不要自己去定义寄存器的名字。【知识链接】1.数据类型(3)可寻址位sbit

sbit类型也是单片机C语言的一种扩充数据类型,利用它可以访问芯片内部RAM中的可寻址位或特殊功能寄存器中的可寻址位。

sbit定义的格式如下:

sbit

位名称=位地址;在给某个引脚取名的时候经常会用到。例如:

sbitled=P1^0;//led表示P1中的P1.0引脚【知识链接】1.数据类型voiddelay(unsignedchari){unsignedcharj,k;for(k=0;k<i;k++)for(j=0;j<255;j++);}#include<reg51.h>sbitled=P1^0;voiddelay(unsignedchari);voidmain(){while(1){led=0;delay(10);led=1;delay(10);}}【知识链接】2.变量姓名性别出生日期工作单位职务住址身高体重血型可变不变不变不变可变可变可变可变可变性别出生日期血型不变姓名工作单位职务住址身高体重可变常量变量变量是在程序运行过程中,其值可以被改变的量。30.8℃变量相当于一个存放数据的容器【知识链接】2.变量#include<stdio.h>intmain(){

inta,b,c; a=10; b=20; c=a+b;

printf("%d",c);return0;}程序例中的a、b、c都是变量。什么是变量呢?

a

10b

20c

30变量——盒子,可保存数据盒子的名字——变量名a、b、c盒子里的内容——变量的值10、20、30同一个盒子可先后存放不同的东西,变量的值也可在程序运行过程中发生变化,故称变量。变量实际是内存中的一块存储区域,存储区域的名称就是变量名,所存储的内容就是变量的值。【知识链接】2.变量变量的类型变量名变量的值变量类型不同名字不同内容不同a 合法$sum 非法Student_name

合法_temperature 合法int 非法2names 非法测一测合法非法合法合法非法非法①有效字符:只能由大写字母、小写字母、数字和下划线组成,且以字母或下划线开头。②C语言的关键字不能用作标识符名。变量命名遵循标识符命名规则标识符名很简单,字母数字下划线。字母区分大小写,非数打头非关键。口诀【知识链接】2.变量③标识符命名的软件工程要求──见名知意

所谓“见名知义”是指,通过标识符名就知道标识符所代表的含义。方法:英文单词(或缩写),或汉语拼音字头。例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。变量命名遵循标识符命名规则尽量做到

见名知意细致规范严谨小锦囊【知识链接】2.变量#include<reg51.h>#defineLEDP3#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){

unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}unsignedinti,count=1000;//定义整型变量charled=0x7f;

//定义字符型变量bitflag=0;//定义位变量变量必须先定义、后使用。变量定义格式:[存储类型]数据类型变量名[,变量名2…];【知识链接】2.变量

内部变量(局部变量):在函数内部定义的变量。

作用域仅限于函数内。

不同函数的内部变量是可以重名的。#include<reg51.h>#defineLEDP1#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){

unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}进行变量定义时,应注意以下几点:1.允许在一个数据类型标识符后,说明多个相同类型的变量,各变量名之间用逗号隔开;2.数据类型标识符与变量名之间至少用一个空格隔开;3.最后一个变量名必须以分号“;”结尾;4.变量定义必须放在变量使用之前,一般放在函数体的开头部分;5.在同一个程序中变量不允许重复定义为不同类型。例如:unsignedint

x,y,z;inta,b,x;【知识链接】2.变量变量的初始化在定义变量的同时可以给变量赋初值,称为变量的初始化。变量初始化格式:数据类型变量名[=初值][,变量名2[=初值2]……];

例如:inti=4,j,s=5;

floatx=0,y=0,z=0;charch='a';longinta=1000,b;【知识链接】2.变量姓名性别出生日期工作单位职务住址身高体重血型张三11993-05-01学校学生宿舍21.87135.5B整型浮点型位类型1表示男,0表示女字符型字符型字符型可变不变不变不变可变可变可变可变可变【知识链接】3.常量姓名性别出生日期工作单位职务住址身高体重血型可变不变不变不变不变可变可变可变可变性别出生日期血型不变姓名工作单位职务住址身高体重可变常量变量【知识链接】3.常量常量是指在程序运行过程中,其值不能被改变的量。常量整型常量实型常量字符型常量字符串常量【知识链接】3.常量数据格式示例十进制88、-192十六进制0x58、-0xc0长整型88L、0x58L、o130L整型常量举例【知识链接】3.常量#include<reg51.h> voiddelay(unsignedintc);voidmain(){ while(1) { P1=0x00;

delay(100);

P1=0x01;

delay(100);

}}浮点常量举例数据格式示例小数0.888、345.3指数8.88e-1、3.453e2数据格式示例英文单引号:’’‘A’、’9’ASCII码65、57字符常量举例【知识链接】3.常量字符串型常量是用双引号括起来的若干字符。如”test”、”OK”、””等。【知识链接】3.常量位类型常量sbitLED=P1^0;LED=0;LED=1;【知识链接】3.常量运算符是完成某种特定运算的符号【知识链接】4.运算符位运算-在二进制位的级别上进行的一系列运算。C语言提供了六种位运算符,&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移)和<<(左移)。位运算的一般形式为:变量1位运算符变量2位运算符也有优先级,从高到低依次是:~→<<→>>→&→^→|。(1)位运算符

1)左移运算符(<<)左移运算符用来将参与运算的一个数的各位全部向左移(高位方向)若干位,每移动1位,最高位丢弃,最低位补0。

其表达式的一般形式为:变量<<移动的位数00000001例如:w=0x01;

w<<=1;00000010(1)位运算符2)右移运算符(>>)右移运算符用来将参与运算的一个数的各位全部向右移(低位方向)若干位,每移动1位,最高位补0,最低位丢弃。其表达式的一般形式为:变量>>移动的位数例如:w=0x80;

w>>=1;1000000001000000(1)位运算符控制程序指定效果流水灯程序3)”按位与”运算符(&)按位与运算法则:有0出0,全1出1例如:0000000110000000位与&00000000(1)位运算符4)”按位或”运算符(|)参加运算的2个数据,按二进制的表达方式按位进行逻辑“或”的运算。运算法则:有1出1,全0出0。例如:0000000110000000位或|10000001(1)位运算符例如:0000001001000000位或|0100001001111110101111011101101111100111P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7#include<reg51.h>#defineLEDP3#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}5)”异或”运算符(^)参加运算的2个数据,按二进制的表达方式按位进行逻辑“异或”的运算。运算法则:相同为0,不同为1。例如:0000000110000000位异或^10000001(1)位运算符6)”取反”运算符(~)参加运算的2个数据,按二进制的表达方式按位进行逻辑“非”的运算。例如:10000001位取反~01111110(1)位运算符#include<reg51.h>#defineLEDP3#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}(2)算术运算符

常见的算术运算符包括+、-、*、/、%和++、--。练一练:将两位十进制整数的十位数和个位数分离。#include<stdio.h>intmain(){inta=23,b,c;b=a/10;c=a%10;printf(“a=%d”,a);printf(“十位=%d\n”,b);printf(“个位=%d\n”,c);return0;}除法运算、取余运算有什么用处呢?我们来看一个应用,如果我们需要把一个整数在数码管或者液晶上显示出来的话,那就需要把一个整数的每位拆分开来,一位一位进行显示,例如,要显示25这个数,我们就需要把25这个数的十位和个位拆分开来,分别是2和5,那用什么运算能实现这个结果呢?252525/10=225%10=5378137813781/1000=33781/100%10=73781%100/10=83781%10=1(2)算术运算符有关算术运算符需要说明以下几点:1)除法运算符/,C语言规定:两个整数相除,其商为整数,小数部分被舍弃。如果运算量中有一个是实型,则结果为双精度实型。例如,5/2=2,22.0/4=5.5。2)求余运算符%,要求两个操作数均为整型,结果为两数相除所得的余数。

注:取余运算的两个操作数必须是整数。

例如:8%5=3,25%10=5。(2)算术运算符表达式和算术表达式

表达式是用运算符和括号,将运算对象(常量、变量和函数等)连接起来的、符合C语言语法规则的式子。例如:(x+y)/2–1。

算术表达式是表达式中的运算符都是算术运算符。

例如,3+6*9。(2)算术运算符求表达式的值1)运算符的优先级。在表达式求值时,按运算符的优先级从高到低依次执行。

例如,先乘除后加减:a–b*c。2)如果某个操作数两侧运算符的优先级相同,则按结合性进行:第一是左结合性(先左后右的结合方向)运算符:操作数先与左边的运算符结合。

例如,1-2+3:先执行“1-2”,再“+3”。

第二是右结合性(先右后左的结合方向)运算符:操作数先与右边的运算符结合。

例如,a=b=1:先执行“b=1”,再执行“a=(b=1)”。练一练:自增、自减运算符的应用。例如:inti=100,j;j=++i;j=i++;j=--i;j=i--;//j=101,i=101//j=101,i=102//j=101,i=101//j=101,i=100建议尽量避免++、--和其它运算用在一起,以防出错;单独使用的++i和i++,结果都是把i的值增1。自增自减运算符和表达式①自增(++)、自减(--)的作用

自增(++)使单个变量的值增1(++)

自减(--)使单个变量的值减1(--)②用法及运算规则

前置运算──++变量、--变量

运算规则:先增减、后运算,即先使变量的值增(减)1,然后再以变化后的值参与其它运算。(2)算术运算符后置运算──变量++、变量--运算规则:先运算、后增减,即变量先参与其它运算,然后再使变量的值增(减)1。

自增自减运算符和表达式(2)算术运算符#include<reg51.h>#defineLEDP1#defineTIME30000voiddelay(unsignedinti){while(i--);}voidmain(){

unsignedchari;while(1){

i=0;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);

i++;LED=~((0x01<<i)|(0x80>>i));delay(TIME);}}练一练:分析下面各赋值表达式中变量a的值。a=b=c=3;a=5+(c=7)a=(b=2)+(c=5)a=(b=6)/(c=2)(3)赋值运算符1).赋值运算符

赋值运算符用赋值符号(=)表示,它的作用就是将一个数据赋给一个变量。例如:“t=10;”2).赋值表达式

赋值表达式用于计算右边表达式的值,把右边表达式的值赋给左边的变量。其格式如下:变量(寄存器名或

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论