欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    趣味电子产品设计与制作教案.doc

    • 资源ID:4297504       资源大小:1.27MB        全文页数:24页
    • 资源格式: DOC        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    趣味电子产品设计与制作教案.doc

    教 案【首页】课程名称趣味电子产品设计与制作授课专业班级课程编号课程类型必修课校级公共课( );基础或专业基础课( );实验课()选修课限选课();任选课()授课方式课堂讲授();实践课()考核方式考试();考查()课程教学总学时数32学 分 数2学时分配课堂讲授 16 学时; 实践课 16 学时教材名称单片机的C语言应用程序设计(第4版)作 者马忠梅等出版社及出版时间北京航空航天出版社2007指定参考书基于Proteus的8051单片机实例教程 单片机C程序设计及应用实例基于C语言编程MCS-51单片机原理与应用Protel99高级应用作 者李学礼胡伟张培仁赵晶出版社及出版时间电子工业出版社人民邮电出版社2003清华大学出版社2003人民邮电出版社2000授课教师明显诚 汪科职 称工程师单 位工程训练中心授课时间注:表中( )选项请打“”教 案【理、工科】第一章 8051单片机基础结构与内部资源一、教学目的和要求 通过对单片机的基础特点、内部结构、外部硬件扩展、指令系统和简单的程序介绍,让同学们对8051单片机有个基础了解,同时由浅入深,进一步学习运用8051内部资源的C语言实现,包括中断、定时器/计数器以及串口等等。二、教学重点2.1 8051的内部基础结构2.2 8051的内部资源使用三、教学难点 8051单片机独特的内部结构3.2 8051中断、定时器/计数器和串行口的使用1.1 8051的内部结构单片机是在一块硅片上集成了各种部件的微型计算机,这些部件包括中央处理器CPU,数据存储器RAM,程序存贮器ROM,定时器/计数器和多种IO接口电路。8051是MCS-51系列单片机的一个产品。MCS-51系列单片机是Intel公司推出的通用型单片机。它的基本型产品是8051、8031和8751.这三个产品只是片内程序存储器的制造工艺不同。8051片内程序存储器为掩膜型,在制造芯片时已将应用程序固化进去了,使它具有某种专用功能;8031片内无ROM,使用时需外接ROM,8751片内ROM是EPROM型的,固化的应用程序可以方便的改写。8051单片机内部结构可划分为CPU、存贮器、并行口、串行口、定时器/计数器、中断逻辑几部分。中央处理器核心单元,算术逻辑单元ALU(算术运算,逻辑运算),操作数存于累加器ACC或暂存器中。控制器执行程序指令过程,程序存贮器中取指令,进入指令寄存器IR,指令译码器ID译码,微操作信号用于控制单片机各部分动作。时钟包括内部时钟和外部时钟。内部时钟,晶振和微调电容组成的并联谐振电路构成稳定自激振荡器。外部时钟,引入外部脉冲信号。基本时序周期,微操作信号在时间上有严格的先后次序。振荡周期是振荡源周期;时钟周期是振荡周期的2倍;机器周期包括6个时钟周期;而指令周期指完成一条指令所占用的全部时间。指令部件包括程序计数器PC,指令寄存器IR,指令译码器ID,数据指针DPTR,16位地址寄存器,寻址外部RAM,也可寻址外部ROM中表格数据。8051的存储器组织将程序存贮器和数据存贮器分开,并各自有寻址机构和寻址方式(哈佛型结构单片机)。8051单片机物理上有4个存贮空间,片内ROM,片外ROM,片内RAM,片外RAM,可在片外扩展RAM和ROM,各有64Kb的寻址范围。8051有256B数据存贮器RAM,4KB程序存贮器ROM。4KB的ROM,片内ROM和片外ROM公用,地址为0000H-0FFFH,1000H-FFFFH地址为片外ROM专用。控制信号EA=1时,先片内ROM(4KB),指令地址超过0FFFH,自动转向片外ROM。EA=0,只从片外ROM取指令。程序存储器ROM的某些单元仅供系统使用,0000H-0002H所有执行程序的入口地址,0003H-002AH均匀分为5段,5个中断服务程序的入口,用户不应进入上述区域。RAM在地址上和ROM重叠,8051通过不同信号选通ROM,RAM。从外部ROM取指令时用选通信号PSEN,而从外部RAM读写数据采用RD和WR选通。8051内部256B的RAM字节,00H-7FH,真正的RAM区;80H-FFH,专门用于特殊功能寄存器(SFR)。低128字节分三个区域(00H-7FH),00H-1FH四组工作寄存器,每组占用8个RAM字节,记为R0-R7,某一时刻,CPU只能使用其中一组工作寄存器。20H-2FH共16个字节,128位,除做一般RAM读写外,还可对每一个字节的每一位进行操作。30H-7FH,80个字节,一般的用户RAM区域。8051单片机特殊功能寄存器中包含有堆栈指针SP。8051单片机复位后,堆栈指针SP总是初始化到内部RAM的07H位置。8051堆栈属于向上生长型,数据压入堆栈,SP内容自动加1作为本次进栈的地址指针,然后存信息。8051并行接口P0-P3,P0口采用总线复用技术,P2口作地址的高8位,P1口只作IO口,P0,P2,P3有第二功能。8051的内部资源包括串行口,定时器/计数器,中断。8051的工作方式包括复位方式,程序执行方式,单步执行方式,低功耗操作方式,EPROM编程和校验方式。8051的系统扩展主要包括外部程序存储器的扩展和数据存储器的扩展。8051的寻址方式,指令中给出的地址寻找真实操作数地址的方式。8051包括7种寻址方式,寄存器寻址。直接寻址、寄存器间接寻址、立即寻址、变址寻址、相对寻址和位寻址。8051指令系统包括数据传输指令、转移指令、算术运算指令和逻辑运算指令等。1.2 8051的内部资源一、中断8051有5个中断源,有两个中断优先级,每个中断优先级可以编程控制,中断允许受到CPU开中断和中断源开中断的两级控制。5个中断源包括:外部中断请求0、外部中断请求1、片内定时器/计数器0溢出中断请求、片内定时器/计数器溢出中断请求1、片内串口发送/接收中断请求。为了了解每个中断源的是否产生了中断,中断系统对应设置多个中断请求触发器实现记忆。这些触发器包括定时器/计数器控制寄存器TCON,串口控制寄存器SCON,中断优先级寄存器IP,中断允许寄存器IE。中断响应,8051单片机的每个机器周期采样各中断源的中断请求标志位,如果没有下述阻止条件:1. CPU正在处理同级或更高级的中断;2. 现行机器周期不是所执行指令的最后一个机器周期;3. 正在执行的是RETI或是访问IE或IP的指令。将在下一个机器周期响应被激活了的最高级中断请求。CPU在中断响应后完成如下操作:1. 硬件清除相应的中断请求标志;2. 执行一条硬件子程序,保护断点,并转向中断服务程序入口;3. 结束中断时执行RETI指令,恢复断点,返回主函数。同一优先级设置时,优先级由高至低的顺序是:INT0-T/C0-INT1-T/C1-Serial。寄存器组切换,当一个特定的任务正在执行,可能有更紧急的任务需要CPU处理,在一个具有优先级的系统里,CPU不是等待第一个任务完成,而是假定前一个任务已经完成,立即处理新任务。若程序流程立即转向新任务,新任务使用的各寄存器破坏了第一个任务使用的中间信息。当第一个任务重新执行时,寄存器的值可引起错误发生,解决的方法每次发生任务变化时执行一些指令,被称为上下文切换。高优先级的中断可以中断正在处理的低优先级程序,因而必须注意寄存器组。最好给每个优先级程序分配不同的寄存器组。因此,中断服务函数的完整语法如下:返回值 函数名(参数)模式重入interrupt n using n当调用中断函数时,SFR中的ACC、B、DPH、DPL、PSW入栈。二、定时器/计数器(T/C)8051系列单片机至少有两个16位内部定时器/计数器,8052有三个定时器/计数器,两个基本定时器/计数器是T/C0和T/C1。它们既可以编程为定时器使用,也可以编程为计数器使用。若做定时器用,计数内部晶振驱动时钟;若做计数器使用,计数输入管脚的脉冲信号。定时器实际上也是工作在计数方式下,只不过对固定脉冲计数,由计数值可计算出时间,有定时功能。T/C作定时器用时,对振荡源12分频的脉冲计数,每个机器周期计数值加1,1/12fosc=计数率,每2us计数值加1。T/C作计数器用时,计数脉冲来自外部脉冲输入管脚T0、T1,当T0/T1脚上出现负跳变时,计数值加1,识别管脚上的负跳变需要2个机器周期,24个振荡周期,可计数最高外部脉冲频率为1/24fosc。高于此计数率,计数出错。与T/C有关的特殊功能寄存器包括计数寄存器TH和TL,控制寄存器TCON,方式控制寄存器TMOD,定时器/计数器2控制寄存器(T/C2)。定时器/计数器的工作方式如下:1. 方式0,为13位T/C,由TH提供高8位,TL提供低5位的计数器,满计数值为2,但启动前可以预置计数初值;2. 方式1,方式1与方式0基本相同,唯一区别在于计数寄存器的位数是16位,由TH和TL寄存器各提供8位,满计数值为2;3. 方式2,是8位可自动重装载的T/C,满计数值为2。4. 方式3,只适用于T/C0,当T/C0工作在方式3时,TH0和TL0成为两个独立的8位计数器。只有将T/C1用作串口的波特率发生器时,T/C0才能工作在方式3,相当于增加了一个定时器。5. T/C2的工作方式,T/C2包含一个16位重装载方式,计数溢出后,自动在瞬间重装载。T/C2还有捕获方式,它把瞬时计数值传到另外的CPU可读取的寄存器对。定时器/计数器的初始化,包括编程TMOD,置初值TH和TL,编辑TE,启动T/C。计数初值计算,定时器工作方式下:T/C对机器周期脉冲进行计数,根据晶振频率算出机器周期,一个机器周期为12/fosc。那么自然可算出需要的计数初值。计数器工作方式下,由于计数器向上计数,所以可置负数。三、串行口8051单片机片上有UART(通用异步接收/发送)用于串行通信,发送时数据由TXD端送出,接收时数据由RXD端输入。有两个缓冲器SBUF,一个作发送缓冲器,另一个作接收缓冲器。它是可编程的全双工的串行口。短距离的机间通信可使用UART的TTL电平,使用驱动芯片可接成RS232C和通用微机进行通信。波特率时钟必须从内部定时器1或定时器2获得。与串行口有关的SFR包括串口控制寄存器SCON和电源控制寄存器PCON。串行口的工作方式包括:1. 方式0,为移位寄存器输入/输出方式,串行数据通过RXD输入输出,TXD则用于输出移位时钟脉冲;2. 方式1,是10位异步通信方式,1位起始位(0),8位数据位和1位停止位(1),其中的起始位和停止位是在发送时自动插入;3. 方式2和方式3,都是11位异步接收/发送方式,不同在于波特率不同。串行口的初始化包括,定时器1工作方式,T/C1置初值,T/C1启动,串行口控制SCON,开CPU中断和源中断。第二章 8051的C语言编程一、教学目的和要求 要求学生通过本章学习,了解8051的编程语言,掌握C51的数据与运算、流程控制语句、构造数据类型、函数以及模块化程序设计。二、教学重点2.1 8051编程语言和C51程序结构2.2 C51的数据以及运算2.3 C51的构造数据类型2.4 函数的使用和模块化程序设计三、教学难点 C51的程序结构和相关的编写规则 C51数据与运算一、数据与数据类型数据,具有一定格式的数字或数值叫做数据。数据类型,数据的不同格式叫做数据类型。数据结构,数据按一定的数据类型进行的排列、组合、架构称为数据类型。数据类型分为基本类型、构造类型、指针类型和空类型。基本类型分为位型、字符型、整型、长整型、浮点型和精度浮点型。构造类型分为数组类型、结构体类型、共用体和枚举。二、C51运算符、表达式以及规则常量,在程序运行的过程中,其值不能改变的量。与变量一样,常量也有不同的数据类型。变量,在程序运行过程中,其值可以改变的量。一变量主要由两部分组成,一是变量名,一是变量值。每一个变量都有一个变量名,在内存中占据一定的存储空间,并在该内存单元存放该变量的值。在程序编制中使用大量不必要的变量类型,会导致C编译器相应的增加所调用的库函数的数量,以处理大量增加的变量类型。最终会使程序变得过于庞大,运行速度减慢,甚至会在连接时,出现因程序过大装不进代码区的情况。通常使用的数据变量包括位变量、字符变量、整型变量、长整型变量、浮点型变量。地址为00H-7FH的低128字节片内RAM区被划分为3个区域。通用寄存器区,可位寻址区,用户RAM区。通用寄存器区被划分为4组寄存器,0组(00H-07H),1组(08H-0FH),2组(10H-17H),3组(18H-1FH);每组含8个通用寄存器R0-R7,共32个通用寄存器。寻址采用寄存器名寻址;字节地址寻址。当用寄存器名来寻址时,程序状态字中的PSW的RS1和RS0两位的值来决定寄存器组。RS1(PSW.4)RS0(PSW.3)3组112组101组010组00 可位寻址区包括20H-2FH;用户RAM区30H-7FH;编译器会通过将变量、常量定义为不同的存贮类型,将它们定位在不同的存贮区中。 data/bdata,定义常量和变量时,编译器会将它们定义在片内RAM区,片内RAM区存放临时性传递变量或使用频率较高的变量。 Code存贮数据类型时,编译器将其定位在ROM或EPROM中,这里存放指令代码或其它非易变信息。如果定义数据和变量时缺省存贮类型标识符,编译器会自动选择默认的存贮类型,有SMALL、COMPACT和LARGE指令限定。8051单片机片内有21个特殊功能寄存器(SFR),它们分散在片内RAM区的高128字节中,地址80H-0FFH,对SFR的操作,只能用直接寻址方式。 C51与标C不同之处之一在于引入关键字“sfr”Sfr SCON=0x98;Sfr16 T2=0xcc;需经常单独访问SFR中的位时,使用关键字“sbit”。8051单片机芯片内带有4个8位的并行口,共32根I/O口线。每个口主要由4部分组成:端口锁存器,即SFR中的P0口-P3口;输入缓冲器;输出缓冲器;引致芯片外的端口引脚。其中P1-P3口为准双向口,P0口为双向3态口。8051单片机芯片引脚中没有专用的地址总线和数据总线,向外扩展存贮器和接口时,由P2口输出地址总线的高8位(A15-A8)。由P0口输出地址总线的低8位(A7-A0);同时对P0口采用总线复用技术,P0口又兼作8位双向数据数据总线D7-D0,即由P0分时输出低8位地址或输入输出8位数据。在不做总线扩展时,P0口和P2口可以作为普通的IO口使用。除8051芯片上的4个I/O口以外,还可以在片外扩展硬件I/O口。8051没有专用的I/O指令,其口地址与数据存贮器地址是统一编址的,即把一个口当作数据存贮器中的一个单元来看待。8051的内部口是可以位寻址的,而大部分外部口是字节寻址的。在给口指定硬件扩展电路时,可以在内部口中设置I/O控制线和信号线,而将外部口定义为字节宽度I/O口,这样在编程时可大大简化寻址,并避免使用许多逻辑屏蔽位。在使用C51进行编程时,8051片内I/O口与片外扩展的I/O口可以统一在头文件中定义,也可在程序中定义。对于片外扩展I/O口,根据硬件译码地址,将其视为片外数据存贮器的一个单元,使用“#define”语句进行定义。位变量的C51定义的语法和语义。函数课包含类型为“bit”的参数,也可将其作为返回值。位变量不能定义为一个指针,不存在位数组,在位定义中允许定义存贮类型,位变量都被放入一位段中。但存贮类型被限制为data或idata。可位寻址对象指可以字节或位寻址的对象,该对象应位于8051片内可位寻址的RAM区。C51算术运算符包括+,-,×,/,。乘除,求余运算符优先级大于加减。可以用强制类型转换运算符改变运算优先级。C51关系运算符包括<,>,<=,>=,=,!=,前4个优先级相同大于后2个。关系运算符低于算术运算符,高于赋值运算符。C51逻辑运算符包括&&,|,!。C51位操作运算符,&和|。自增减运算符+i,-i,i+,i-。 C51流程控制语句一、C51程序的基本结构及流程图C51程序基本架构包括顺序结构,选择结构,循环结构。选择结构又包括串行多分支和并行多分支。顺序结构是一种基本的,简单的编程结构。这种结构中,程序由低地址向高地址顺序执行指令代码。选择结构中,程序首先对一个条件语句进行测试。当条件为“真”时,执行一个方向上的程序流程。所有的分支结构都使程序流程一直向前执行而使用循环结构可使分支流程重复地执行。二、选择语句选择语句之一if语句的三种形式: if(表达式)语句; if(表达式)语句1else语句2; if(表达式1)语句1 else if(表达式2)语句2else语句m;if语句嵌套: if() if()语句1 else 语句2 else if()语句3 else语句4switch/case语句 switch() case 常量表达式1:语句1break; case 常量表达式2:语句2break; Default :语句nbreak;三、循环语句作为构成循环结构的循环语句,一般是由循环体及循环终止条件两部分组成。一组被重复执行的语句成为循环体,能否继续执行下去取决于循环终止条件。实体循环语句包括以下三种,while语句,do-while语句,for语句。 while语句的一般形式:while(表达式) 语句/循环体/ do-while语句的格式:do 执行语句/循环体/While(表达式)for循环语句的一般形式: for(表达式1;表达式2;表达式3) 执行语句 C51构造数据类型一、数组C语言具有使用户能够定义一组有序数据项的能力。这组有序的数据即数组。数组是一组具有固定数目和相同类型成分分量的有序集合。其成分分量的类型为该数组的基本类型。如整型变量的有序集合称为整型数组,字符型变量的有序集合称为字符型数组。这些整型或字符型变量是各自所属数组的成分分量,称为数组元素。一维数组的定义方式:类型说明符,数组名整型表达式例如 int idata a6= ;二维数组的定义方式: 类型说明符,数组名常量表达式1常量表达式2存取方式,顺序,按行存取,先存取第一行,依次下来。字符数组的存储两种方式:一种方式例如:char a10=B,E,I, ,J,I,N,G,O;另一种方式例如:char a10=“BEI JING”;C编译器会自动在字符末尾加上结束符O(NULL),因此,字符数组的元素数目一定要比字符多一个。二维字符数组,第一下标是字符串个数,第二个下标是每个字符串长度。如,uchar code msg17= ;第二个下标个数必须指定。二、指针指针是C语言中的一个重要概念,也是C语言的重要特色之一。C语言区别于其他高级设计语言的主要特点就是它在处理指针时所表现出的能力和灵活性。使用指针可以有效地表示复杂的数据结构,有效而方便的使用数组;动态的分配存贮器,直接处理内存地址,在调用函数时还能输入或返回多于1个的变量值。使用指针可以使程序简洁、紧凑、高效。为了了解指针的基本概念,必须了解数据在内存中是如何存贮和读取的。一旦程序中定义了一个变量,C编译器在编译时就给这个变量在内存中分配相应的内存空间。通常C语言系统对一个整型变量分配两个字节的内存空间单元,对一个字符型变量分配一个字节内存单元,一个浮点型变量分配4个字节内存单元。对于变量需要区分变量名和变量值的概念。前者是一个数据的符号,后者是一个数据的内容。对于内存单元区分两个概念,一个是内存单元地址,一个是内存单元内容。前者是内存对该单元的编号,它表示着该单元在整个内存中的位置。后者指在该内存单元中存放着的数据。在变量和内存单元的对应关系中,变量的变量名与内存单元的地址相对应,变量的变量值与内存单元的内容相对应。内存中变量名a,b,c是不存在的,对于变量值的存取通过地址进行。两种访问方式,直接访问和间接访问。直接访问找地址,取变量值。间接访问,找存放变量a的地址的内存单元的地址。取出变量a的地址,然后从找到的a的地址中再取数据变量值。对于指针弄清两个概念,变量的指针和指向变量的指针变量(指针变量)。变量的指针就是变量的地址,指向变量的指针变量,一个变量专门用来存放另一个变量的地址。指针变量的定义:类型识别符 *指针变量名例如 int *ap; float *pointer指针变量的赋值,指针变量的引用是通过取地址运算符&来实现。ap=&a;(ap为指针变量,a为变量,&为取地址运算符)通过指针和指针变量来对内存进行间接访问,就需要用到指针运算符“*”。“*”在指针变量定义和指针运算所代表的含义不同。当定义时,*ap中的“*”是指针变量类型说明符;当x=*ap时,“*”是指针运算符。例如:int *ap, int a, ap=&a; *ap=a; &*ap=&a; *&a与a等价。*ap+=a+。uchar data *xdata zz,外部RAM指针指向内部RAM数据。数组指针和指向数组的指针变量,数组的指针=数组的起始地址,指向数组的指针变量。例如:int a10;int *app; app=&a0;app=a(数组名a可以代表数组a10的首地址)。合起来定义:int *app=&a0; int *app=a;当定义完后,app=&a0;通用指针引用数组元素:app=&a0,则app+i=a+i是数组元素ai的地址。*(app+i)或*(a+i)是app+i或a+i所指向的数组元素,即ai;指针变量可带下标appi=*(app+i);app+1是指向数组首地址的下一个元素。指针变量的运算:p+,p指向下一个单元 *p+=*(p+) *p+,*+p (*p)+,指向的元素值加1,而非指针变量加1。指向多维数组的指针和指针变量:pa34,p=a,p+1=a+1;p+2=a+2;指向第几行首址。*(p+1)+3=&a13,指向a13的地址;*(*(p+1)+3)=a13,表示a13的值;*(p+i)+j相当于&aij,第i行第j列地址;*(*(p+i)+j)相当于aij;“基于存贮器的”指针和“一般”指针,两种类型“基于存贮器的”指针以存贮器类型为参量,存贮器类型定义即可放在定义的开头,也可直接放在定义的对象名之前。例如:char xdata *data pdx data char xdata *pdx两者等价。一般指针(包含3个字节,2个字节偏移和1个字节存贮器类型);将常数值0x41写入地址为0x8000的外部数据存贮器。#define XBYTE(char *)0x20000l) XBYTE0x8000=0x41三、结构C语言的重要特点之一,是具有构造数据类型的能力,它可以在诸如字符,整型,浮点型等简单数据类型的基础上,按层次产生各种构造数据类型,如数组、指针、结构和共用体等。前面已经讨论了数组和指针两种构造数据类型,但是仅有这些是不够的,有时还需将不同类型的数据组成一个有机的整体,这些组合在一起的数据就是结构。C语言中的结构,就是把多个不同类型的变量结合在一起形成的一个组合型变量,称为结构变量。这些不同类型的变量可以是基本类型、枚举类型、指针类型、数组类型或其它结构类型的变量。这些构成一个结构的各个变量称为结构元素,它们定义规则与变量名相同。结构类型的一般形式为:struct 结构名 结构成员说明;结构成员说明的格式为:类型标识符 成员名;例如:struct date int month; int day; int year;定义一个结构的变量的方法有三种:1. 先定义结构的类型,再定义该结构的变量名struct date int month; int day; int year; ;date date1,date2;/定义结构的变量名/2. 在定义结构类型的同时定义该结构的变量struct date int month int day; int year;date1,date2;3. 直接定义结构类型变量struct int year; int month; int day;date1,date2,date n; 结构类型变量的引用,对于结构类型变量的引用遵守如下规则:结构不能作为一个整体参加赋值、存取和运算,也不能整体的作为函数的参数,或函数的返回值。 对结构所执行的操作,只能用&运算符取结构的地址,或对结构变量的成员分别加以引用。引用的方式:结构变量名.成员名; 如果结构类型变量的成员本身又属于一个结构类型变量,则要用若干个成员运算符“.”,一级一级的找到最低一级成员,只有最低一级成员才能参加赋值、存取或运算。“->” 和“.”符号等同。结构数组的定义,当数组中的每个元素都具有相同的结构类型的结构变量,则称该数组为结构数组。结构数组与变量数组不同之处,就在于结构数组的每一个元素,都是具有同一个结构类型的结构变量,它们都具有同一个结构类型,都含有相同的成员项。例如:struct date int month; int day; int year;struct date date110;指向结构类型数据的指针,一个指向结构类型数据的指针,就是该数据在内存中的首地址。我们也可以设一个指针变量,把它指向一个结构数组,此时该指针变量的值就是结构数组的起始地址。指向结构体变量的指针变量的一般形式为:struct 结构类型名 *指针变量名;或struct 结构成员说明*指针变量名;指向结构变量的指针变量的一个实际的应用例子就是对信息进行传输,一个任务使用“传送一条信息”的方法与另一个任务进行通信。这个传送操作包括传送信息结构变量的指针变量,这个指针变量是向接收任务传递的信息或指针。指向结构数组的指针变量的一般形式:struct 结构数组名 *结构数组指针变量名;或:struct 结构成员说明*结构数组指针变量名 ;共用体和枚举在这不做重点讲解。 函数一、函数的调用函数调用的一般形式为:函数名(实际参数列表);对于有参数函数,若包含多个实际参数,应将各参数之间用逗号分隔开。主调用函数的数目与被调用函数的形式参数的数目应该相等。实参和形参按照实际顺序一一对应传递数据。如果调用的是无参数函数,则实际参数表可以省略,但函数名后面必须有一对空括号。函数调用的方式有以下三种:1函数调用语句,即把被调用函数名作为主调用函数中的一个语句。此时并不要求被调用函数返回结构数值,只要求函数完成某种操作。2函数结果作为表达式的一个运算对象,此时被调用函数以一个运算对象的身份出现在一个表达式中,就要求被调用函数带有return语句,以便返回一个明确的数值参加表达式的运算。3. 函数参数。即被调用函数作为另一个函数的实际参数。对被调用函数的说明:1. 被调用函数必须是已经存在的函数(库函数或用户自定义函数)2. 如果函数中使用了库函数,或不在同一个文件中的另外自定义函数,则应该在程序的开头处用#include进行包含语句,将所需要的函数信息包含到程序中来。3. 如果程序中使用了自定义函数,则该函数与调用函数同在一个文件里面,则应根据主调用函数和被调用函数在文件中的位置,决定是否对被调用函数作出说明。用函数指针变量调用函数,一个函数在编译时,C编译器会给它分配一个入口地址。这个入口地址被称为函数的指针。我们可用一个指针变量指向函数,然后通过该指针变量调用函数。例如:int (*p)( );函数指针变量定义 int factorial(n) p=factorial /函数指针变量指向函数的入口地址/使用时直接用指针变量调用函数即可: C=factorial(j); C=(*p)(j);如果一个函数指针变量不对他进行赋值,是不能固定指向某个函数的,它是专门用来存放函数的入口地址的。给函数指针变量赋值时,只需给出函数名,不必给出参数。二、数组、指针作为函数的参数当用数组名作为函数的参数时,应该在调用函数和被调用函数中分别定义数组。只有这样,作为调用函数的实际参数数组全部元素,才能顺利地传递到被调用函数的形式参数数组中。实参数组和形参数组的类型应该一致,否则导致结果出错。实参和形参的大小可以一致也可以不一致,形参数组不应大于实参数组。用指向函数的指针变量作为函数的参数。函数指针变量常用途之一就是把指针作为参数传递给其他函数。例如:主函数:main() sub(f1,f2);子函数:sub(x1,x2) int (*x1)( ), (*x2)( ); a=(*x1)(i); b=(*x2)(i,j);形参被定义为指向函数的指针变量。用指向结构的指针变量作为函数的参数。用指向结构变量的指针变量作为实际参数,将结构变量的地址传递给被调用函数的形式参数。例如:struct record ;void show(p) struct record *p main() struct record note; show (&note);第三章 EDA软件一、教学目的和要求 通过本章节的讲解要求学生掌握电子产品设计研发所必备的软件。具体包括KEIL编程编译调试软件、Proteus电路仿真设计软件、PROTEL99SE印制电路板设计软件等。二、教学重点2.1 KEIL编程编译调试软件学习2.2 PROTEUS电路仿真设计软件学习2.3 PROTEL99SE印制电路板设计软件学习三、教学难点 如何将KEIL与PROTEUS结合搭建仿真平台 KEIL uVision3编程、编译、调试软件KEIL uVision3是德国KEIL Software公司针对51系列单片机推出的基于32位windows环境,高效率的C语言开发平台。它是一个功能强大的单片机集成开发环境,主要包括:C51交叉编译器、A51宏汇编器、BL51连接/重定位器、LIB51库管理器、OH51 Intel HEX格式文件转换器、RTX-51实时操作系统以及单片机软件仿真器Dscope51。uV3将项目管理、源代码编辑、程序调试等集成到了一个功能强大的windows32平台中。其C编译工具在产生代码的准确性和效率方面达到了较高的水平,对C语言的编译支持几乎达到了完美的程度,当然它也同样支持A51宏汇编。uV3内嵌多种灵活的控制选项,作为大项目的开发尤其理想。我们将通过上机实践来讲授KEIL软件的使用,如何在编辑器模块里面建立项目,编写、编译、调试应用程序,同时会结合PROTEUS仿真软件,搭建仿真平台,再不接触到任何硬件的前提下完成电路原理图的仿真,检验编写程序的效率和可行性。基于8051的C语言编程的Proteus仿真软件一、Proteus概述Proteus是一款集单片机仿真和SPICE分析于一身的EDA仿真软件,于1989年由英国Labcenter Electronics Ltd研发成功。除具备和其他EDA工具一样的原理图设计、PCB自动生成及电路仿真的功能外,最大特点是Proteus VSM实现了混合模式的SPICE电路仿真,他将虚拟仪器、高级图标仿真、微处理器软仿真器、第三方的编译器和调试器等有机结合起来,实现了在硬件物理模型搭建成功之前,即可在计算机上完成原理图设计、电路分析与仿真、处理器代码调试及实时仿真、系统测试、以及功能验证。二、KEIL与Proteus结合搭建仿真平台KEIL本身带有调试、软件仿真,但并没有跟硬件结合起来,因此,即使软件调试运行的再好,也没办法跟验证是否适合于硬件,因此将KEIL软件与Proteus仿真软件结合,搭建仿真平台,通过绘制硬件原理图,调用实际的仿真工具,通过在KEIL中对程序的调试,直接就可以输出测试在硬件原理图中的运行效果,观测输出结果的正确与否来判断我们编写的应用程序的可行性和硬件电路的可行性,做到完全未接触到物理硬件器件时就已经完成了仿真调试工作。为后续搭建硬件平台,测试硬件电路打下良好的基础。在调试过程中我们会讲解具体的仿真器件的使用,调试方法和步骤,让同学们做到有的放矢,轻松自如的学习、实践和操作这两款软件。 PROTEL99SE印制电路板设计软件印制电路板为硬件电路的实现搭建了一个良好的平台,因此一款印制电路板设计的好坏直接关系到我们是否能实现硬件原理图的功能。以下是整个印制电路板的设计流程。我们的任务就是让同学们一天时间学会PROTEL99SE专业级的原理图绘制和印制板设计,做到游刃有余,轻松自如。第一课:元件库制作1. 创建相关工作目录;2. 下载安装软件;3. 制作SCH元件库;4. 制作PCB元件库。第二课:原理图和PCB制作1. 设计原理图的准备工作;2. 添加元件库;3. 页面设置,图纸设置;4. 设计原理图(层次原理图设计)5. 自动编号; 6. DRC功能; 7. 全局更改功能添加封装; 8. 输出原件清单; 9. PCB设计准

    注意事项

    本文(趣味电子产品设计与制作教案.doc)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开