单片机的C语言精选PPT.ppt

上传人:石*** 文档编号:47073487 上传时间:2022-09-29 格式:PPT 页数:110 大小:6.23MB
返回 下载 相关 举报
单片机的C语言精选PPT.ppt_第1页
第1页 / 共110页
单片机的C语言精选PPT.ppt_第2页
第2页 / 共110页
点击查看更多>>
资源描述

《单片机的C语言精选PPT.ppt》由会员分享,可在线阅读,更多相关《单片机的C语言精选PPT.ppt(110页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、单片机的单片机的C51语言语言 关于单片机的C语言第1页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 51汇编语言能直接操作单片机的系统硬件直接操作单片机的系统硬件,指令执行速度快。但其程序可读性差,且编写、移植困难可读性差,且编写、移植困难。第2页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 C51是为51系列单片机设计的一种C语言,其特点:C51语言已成为51系列单片机程序开发的主流软件方法。结构化语言,代码紧凑代码紧凑效率可与汇编语言媲美接近真实语言,程序可读性强程序可读性强易于调试、维护库函数丰富,编程工作量小编程工作量小产品开发周期短机器级控制能力,功

2、能很强功能很强适合于嵌入式系统开发与汇编指令无关,易于掌握易于掌握在单片机基础上上手快第3页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 C51与标准C语言对比相同之处相同之处:语法规则、程序结构、编程方法差异之处差异之处:数据类型、存储模式、中断处理教学安排:教学安排:介绍C51语言的数据结构及C51编程手段;介绍单片机I/O口的初步应用及C51编程方法。第4页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 1 C51的程序结构的程序结构 2 C51的数据结构的数据结构 3 C51仿真开发环境仿真开发环境 4 C51初步应用编程初步应用编程第5页,讲稿共110张

3、,创作于星期日单片机的单片机的C51语言语言 C51单片机软件系统结构Project(可包含若干程序文件)C51(库函数)LIB(库函数)(头文件)Keil C51(Vionsion3)Main(函数)File_1(*.c)Func_k(函数).File_n(*.*)Func_1(函数)Func_n(函数).用户编程编译系统第6页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 程序由函数组成(一个主函数,或一个主函数和若干自定义函数);利用预处理命令对变量或函数进行集中定义或说明;函数和变量都需遵循先定义后使用的基本原则;主函数中的所有语句执行完毕,则程序结束。C51与标准C程序

4、结构完全相同第7页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 举例:LED闪烁控制功能第8页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 预处理命令-函数说明-全局变量定义-主函数-调用函数-局部变量定义-程序体程序体-第9页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 1 C51的程序结构的程序结构 2 C51的数据结构的数据结构 1.C51的变量的变量2.C51的指针3 C51仿真开发环境仿真开发环境 4 C51初步应用编程初步应用编程第10页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 在程序执行过程中,数值可以发生改变的

5、量称为变量变量。变量名与存储单元地址相对应,变量值与存储单元的内容相对应。例如在哈佛结构的存储空间中如何建立变量概念?在哈佛结构的存储空间中如何建立变量概念?第11页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名存储地址存储地址(标准C)作用范围(作用范围(标准C)*方括号项可以缺省C51变量定义的四个要素:存储空间存储空间(C51特有)数据格式数据格式(C51扩充)第12页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 自动变量自动变量(auto)在函数内部定义的变量,退出函数后,分配给该变量的存

6、储单元即自行消失(局部变量)。【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名外部变量(extern)在函数外部定义的变量,可始终保持变量的数值(全局变量)。【强调】一个外部变量只能被定义一次,在定义文件之外的地方使用时需用extern进行声明。静态变量(static)静态局部变量/静态全局变量寄存器变量(register)以寄存器为存储空间的变量*若省略存储种类选项,则变量默认为自动变量 第13页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 数据的不同格式叫做数据类型*有符号数类型可以忽略signed标识符标准C语言的数据类型【存储种类】【存储种类】数据类

7、型数据类型【存储类型】【存储类型】变量名变量名第14页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 C51扩充数据类型:bit、sfr或sfr16、sbitbit 型型用bit定义一个位变量,语法规则如下:bitbit_name=常数01;例如:bitdoor=0;/定义一个叫door的变量且初值为0与标准C的变量定义及初始化用法是一致的,例如:inta=5;unsignedcharsum=0 x10;第15页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 Sfr或或sfr16型型sfr定义特殊功能寄存器SFR,语法规则如下:sfr或sfr16sfr_name=字

8、节地址常数;第16页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 例如,sfrP0=0 x80;/定义P0口地址80HsfrPCON=0 x87;/定义PCON地址87Hsfr16DPTR=0 x82;/定义DPTR的低端地址82H第17页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 sbit型型将SFR范围内的位地址(0 x800 xFF)定义为位变量位变量序号特殊功能寄存器名称符号字节地址位地址第18页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 1)sbitbit_name=位地址常数;将位于SFR字节地址内的绝对位地址定义为位变量名。例如

9、,sbitCY=0 xD7;序号特殊功能寄存器名称符号字节地址位地址第19页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 2)sbitbit_name=sfr_name位位置;将已有定义的SFR的07位定义为位变量名。例如:sfrPSW=0 xD0;sbitCY=PSW7;序号特殊功能寄存器名称符号字节地址位地址第20页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 3)sbitbit_name=sfr字节地址位位置;将SFR字节地址的相对位地址定义为位变量名。例如:sbitCY=0 xD07;序号特殊功能寄存器名称符号字节地址位地址第21页,讲稿共110张,创作

10、于星期日单片机的单片机的C51语言语言 C51编译器在头文件“reg51.h”中定义了全部sfr/sfr16和sbit变量。用一条预处理命令#include 把这个头文件包含到C51程序中,无需重定义即可直接使用它们的名称。第22页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 应用举例:第23页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 51系列单片机有三个逻辑存储空间:【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名片内数据存储器,片外数据存储器和程序存储器。第24页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 建立C51

11、存储类型存储类型与存储空间存储空间的对应关系data区xdata区code区bdata区第25页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 C51的存储类型与存储空间对应关系表第26页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 C51编译器指定了三种默认存储类型默认存储类型:【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名C51编译器的三种编译模式编译模式:小编译模式(SMALL)、紧凑编译模式(COMPACT)和大编译模式(LARGE)第27页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 变量名可以由字母、数字和下划线三

12、种字符组成,且第一个字符必须为字母或下划线,变量名长度随编译系统而定。变量名具有字母大小写的敏感性,如SUM和sum代表不同的变量。强调:头文件中定义的变量都是大写的【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名第28页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 C51扩展的若干关键字一览表变量名不得使用标准C语言和C51语言的关键字。第29页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 unsignedchardatasystem_status=0;/定义system_status为无符号字符型自动变量,该变量位于data区中且初值为0

13、。数据结构定义举例变量名为system_status位与片内RAM区无符号字符型自动型初值为零第30页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 unsignedcharbdatastatus_byte;unsignedintcodeunit_id2=0 x1234,0 x89ab;staticcharm,n;/定义status_byte为无符号字符型自动变量,该变量位于bdata区/定义unit_id2为无符号整型自动变量,该变量位于code区中,是长度为2的数组,且初值为0 x1234和0 x89ab。/定义m和n为2个位于data区中的有符号字符型静态变量。第31页,讲

14、稿共110张,创作于星期日单片机的单片机的C51语言语言 1 C51的程序结构的程序结构 2 C51的数据结构的数据结构 1.C51的变量 2.C51的指针的指针3 C51与汇编语言的混合编程与汇编语言的混合编程 4 C51仿真开发环境仿真开发环境 5 C51初步应用编程初步应用编程第32页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 C51的指针与标准C的指针几乎是一样的,都可以简单理解为“存储地址的变量”,例如:2.C51的指针的指针int*b=&a;取变量a的地址指针变量inta;/定义一个整型变量a/定义一个整型指针变量b,其初值为a的地址第33页,讲稿共110张,创作

15、于星期日单片机的单片机的C51语言语言 在C51里定义指针,还需要额外指明两个问题:1)指针变量自身位于哪个存储区域;2)该指针的值代表的是哪个存储区域里的地址。以SMALL编译模式(默认data区存储类型)为例:例1charxdataa=A;/定义xdata区里的变量a,初值Achar*ptr=&a;解:ptr是一个char型的指针变量,它本身位于data存储区,它的初值是位于xdata区里变量a的地址。【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名第34页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 解:unsignedcharidataa=A;例例2

16、若ptr是一个unsignedchar型指针变量,它本身位于idata存储区,它的初值是位于idata存储区里的unsignedchar型自动变量a(初值为A)的地址。试据此完成相关变量的定义和初始化。unsignedchar*idataptr=&a;第35页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 C51提供两种指针:通用指针和具体指针通用指针 占用3字节 而对于data idata pdata 数据类型,实际只需要2字节。通用指针代码比具体指针代码的执行速度要慢。具体指针 使用者规定指针指向存储区段的指针:Char data*str;指针指向data区中的char型数据

17、 1字节 int xdata*prt;指针指向xdata区中的int型数据 2字节 使用具体指针可节省存储空间,代码执行速度快。第36页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 1 C51的程序结构的程序结构 2 C51的数据结构的数据结构 3 C51仿真开发环境仿真开发环境 1、Keil的编译环境的编译环境 Vision32、Vision3的基本使用方法4 C51初步应用编程初步应用编程第37页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 Keil是德国KeilSoftware公司的51单片机开发软件包,包括C编译器、宏汇编、连接器、库管理及仿真调试器,通

18、过一个集成开发环境(uVisoin3)组合起来。第38页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 Vision3的软件界面包括四大组成部分,即菜单工具栏,项目管理窗口,文件窗口和输出窗口。第39页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 Vision3中共有11个下拉菜单。工具栏的位置和数量可以通过设置选定和移动。第40页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 项目管理窗口用于管理项目文件目录,它由五个子窗口组成,可以通过子窗口下方的标签进行切换,它们分别是:文件窗口,寄存器窗口,帮助窗口,函数窗口,模版窗口。项目管理窗口:第41页

19、,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 输出窗口:输出窗口用于编译过程中的信息交互作用,由三个子窗口组成,可以通过子窗口下方的标签进行切换,它们分别是:编译窗口,命令窗口,搜寻窗口。第42页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 信息窗口:观察窗口(Watch&CallStatckWindows)输出窗口(OutputWindows)存储器窗口(MemoryWindow)反汇编窗口(DissamblyWindow)串行窗口(SerialWindow)第43页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 1 C51的程序结构的程序结构

20、2 C51的数据结构的数据结构 3 C51仿真开发环境仿真开发环境 1、Keil的编译环境Vision3 2、Vision3的基本使用方法的基本使用方法4 C51初步应用编程初步应用编程第44页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 输入源程序建立工程对工程进行详细设置将源程序变为目标代码运行调试。使用方法第45页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言(1)源文件的建立点击新建文件按钮打开一个新的文本编缉窗口,输入程序源代码,以*.c保存该文件。第46页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言(2)建立工程文件点击“Project

21、-NewProject”菜单,在编缉框中输入一个名字(设为exam1),无需扩展名。第47页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 选择目标CPU(Intel系列的80C51BH)第48页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 添加源程序(右击“SourceGroup1”点击“AddfiletoGroup”SourceGroup1”添加生成的.c文件)第49页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言(3)工程设置右击Project窗口的Target1选择“Project-Optionfortargettarget1”工程设置对话框

22、第50页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 设置对话框中的OutPut页面(勾选“CreatHexfile”)第51页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言(4)编译、连接产生目标代码(hex文件)点击F7或工具按钮启动编译、连接功能。完成后将在命令窗口中显示编译结果第52页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 若有语法错误,双击出错提示可指出错误所在行号第53页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言(5)一般调试过程启动调试过程Ctrl+F5、Debug-Start/StopDebugSession

23、开始调试详见下页结束调试、Debug-StopRunning第54页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 调试工具栏复位运行到光标行执行完当前子程序过程单步单步暂停运行调试菜单栏快捷键指向下条运行行第55页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 基本调试手段:1、运行到光标行从当前行运行到光标所在行(Ctrl+F10)2、严格单步运行遇到函数时亦单步进行(F11)3、跨函数单步运行遇到函数时将其视作一行语句(F10)4、断点运行全速运行到断点行停止(双击设置/解除断点)5、监视输出端口打开IO窗口(Peripherals-I/O-Ports)6、监

24、视运行变量打开Watch#1窗口(点击)第56页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 将调试通过的*.hex文件加载到*.DSN文件中后即可运行第57页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 Keil与Proteus的联合仿真运行(需要关联设置)第58页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 1 C51的程序结构的程序结构 2 C51的数据结构的数据结构 3 C51仿真开发环境仿真开发环境 4 C51初步应用编程初步应用编程1 IO端口的简单应用端口的简单应用 1.1 基本输入输出单元与编程基本输入输出单元与编程 1.2 LE

25、D数码管原理与编程数码管原理与编程2IO端口的进阶实践第59页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 基本输入输出单元与编程 输出单元:发光二极管(LED)作为输出显示设备输出显示设备具有电路简单、功耗低、寿命长、响应速度快等特点。低电平驱动限流电阻R=1001k高电平驱动灌电流拉电流第60页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 输入单元:输入单元:按键或开关是最基本的输入设备输入设备。【强调】P0口为漏极开路结构需要外接上拉电阻P0P3为准双向IO口读引脚前需先写1第61页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 实例实例1

26、独立按键识别【要求】开机时LED全熄,然后根据按键动作使相应灯亮,并将亮灯保持到下次按键动作时为止。独立按键独立按键每个按键都彼此独立,且各占有一根I/O口线。第62页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 按键的闭合电平为0,但LED的驱动电平为1,故不能直接将P0口的状态送到P1口,而应使其先取反再送出;为使按键抬起后LED能保持先前的点亮状态,需要在按键都未压下期间禁止向P1送出P0状态值。【分析】为避免P0口未使用端口产生的不利影响,应对其高4位清零。第63页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 参考程序如下参考程序如下“取反”操作的优先级

27、高于“与”操作第64页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 编程界面和运行界面分别如下图编程界面和运行界面分别如下图 第65页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 第66页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 实例实例2 键控流水灯【要求】K1为“开始键开始键”,可使K3和K4有效,初值为“自下向上”运动;K2为“停止键停止键”,可使K3和K4失效,并使全灯关闭;K3和K4为“方向键方向键”,分别对应“自上向下”和“自下向上”运动。第67页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 分析分析整体关系设置方

28、向和启停标志,且赋初值0获取按键状态值启停标志=0?根据键值修改方向和启停标志值方向标志=0?关闭LEDLEDYLEDYNN第68页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 分析分析局部关系(获取按键状态)(P0&0 x0f)=0 x0f?读P0口键值=P0&0 x0f键值=0Y结束N第69页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 分析分析局部关系(修改状态标志)对应功能:启停=1,启停=0,方向=1,方向=0switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default:语句n+1;1#

29、4#的键值:0 x0e,0 x0d,0 x0b,0 x07第70页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 分析分析局部关系(LED循环控制)建立LED显示码数组=01,02,04,08循环4次?N结束延时YLED环节自右向左循环输出状态码循环4次?N结束延时YLED环节自左向右循环输出状态码第71页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 参考程序如下参考程序如下 if(P0&0 x0f)=0 x0f)return0;return(P0&0 x0f);第72页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 Keil项目和程序界面如下图所示

30、项目和程序界面如下图所示 第73页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言.1 C51的程序结构的程序结构 2 C51的数据结构的数据结构 3 C51仿真开发环境仿真开发环境 4 C51初步应用编程初步应用编程1 IO端口的简单应用端口的简单应用 1.1 基本输入输出单元与编程基本输入输出单元与编程 1.2 LED数码管原理与编程数码管原理与编程2IO端口的进阶实践第74页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 LED显示元件人机交互输出设备,其作用是指示中间运行结果与运行状态。点式点式字段式字段式LED光柱式光柱式LED 的的类型类型第75页,讲稿共

31、110张,创作于星期日单片机的单片机的C51语言语言 com为公共端共阳极LED共阴极LED引脚配置七段式LED显示器(7-SegmentDisplay)第76页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 LED的亮暗组合(显示码)能形成不同的显示字符以共阴极为例,部分字符的显示码(字模)为:七段LED数码管的标准显示字符为0-9,A-F第77页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 实例实例3 LED数码管显示在P0口连接一个共阴极数码管,使之循环显示0-9数字。第78页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 分析:分析:将显示码

32、循环输出到P0口即可实现循环显示。但由于数字09的显示段码没有规律可循,需要采取查表方式查表方式进行操作:循环10次?N延时循环指针i赋值(10)P0数组iY将显示码按序按序存放在一个数组中,顺序号与代表的显示字符相对顺序号与代表的显示字符相对应。应。(如,charled_mod=x1,x2,.,xn)通过循环变量指定待送出的数组元素第79页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 参考程序参考程序 第80页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 实例实例4 计数显示器对按键动作进行计数和显示,达到99后重新由1开始计数。个位LED接P2口;十位LED

33、接P0口(上拉电阻)第81页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 分析:分析:读P3.7口,进行加1计数和超界处理;拆分计数器数值个位、十位;查找/输出显示码到P0和P2口。计数值拆分:取模运算(%)个位整除10运算(/)十位99?N计数器加1计数器1YP3.7=0?NY查找/输出显示码:按拆分值输出相应数组元素第82页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 参考程序参考程序 第83页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言(接前页)第84页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 程序运行效果第85页,讲稿

34、共110张,创作于星期日单片机的单片机的C51语言语言 1 C51的程序结构的程序结构 2 C51的数据结构的数据结构 3 C51仿真开发环境仿真开发环境 4 C51初步应用编程初步应用编程 1IO端口的简单应用 2 IO端口的进阶实践端口的进阶实践 2.1 数码管动态显示原理与编程数码管动态显示原理与编程 2.2 行列式键盘原理与编程行列式键盘原理与编程第86页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 静态静态显示接口和动态动态显示接口静态显示接口静态显示接口:一个并行口接一个数码管。优点:被显示数据只要送入并行口后就不再需要CPU干预,因而显示效果稳定。缺点:占用资源较

35、多第87页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 动态显示接口动态显示接口:将所有数码管的段码线对应并联起来接在一个8位并行口上,而每位数码管的公共端分别由一位I/O线控制。第88页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 工作原理工作原理:轮流显示,即每一时刻只有一只显示器工作。当时间间隔很小(如10ms)时,人眼的暂留特性无闪烁的连续显示。优点:占用资源较少缺点:占用机时较多(需要CPU随时刷新显示值)第89页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 实例实例5 数码管动态显示采用共阴极动态LED显示原理,实现如下功能:SW1向

36、下拨时显示字符“L2”,向上拨时显示字符“H3”。第90页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 分析分析:Proteus中的双联LED数码管相当于两个并联的数码管。第91页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 如果不考虑switch,动态显示“L2”的程序可以如下:第92页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 完整的源程序switch_sta0022led_point 0101switch_sta+led_point0123P3=2-led_point2121需要数码管指针led_point和开关状态标志switch_st

37、a的配合才能实现两个显示值的切换功能。第93页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 运行效果图运行效果图 第94页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 1 C51的程序结构的程序结构 2 C51的数据结构的数据结构 3 C51仿真开发环境仿真开发环境 4 C51初步应用编程初步应用编程 1IO端口的简单应用 2 IO端口的进阶实践端口的进阶实践 2.1 数码管动态显示原理与编程数码管动态显示原理与编程 2.2 行列式键盘原理与编程行列式键盘原理与编程第95页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 独立式键盘的电路简单,易于编

38、程,但占用的IO口线较多,当需要较多按键时可能产生IO资源紧张问题。独立式键盘独立式键盘与行列式键盘第96页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 行列式键盘将IO口分为行线和列线,按键跨接在行线和列线上,列线通过上拉电阻接正电源。行列式键盘特点:占用IO口线较少,但软件将较为复杂。键值(按键闭合时的数值),键模(按键代表的数值)第97页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 判断哪一行有键压下写端口(0 xf0):行线电平=0;列线电平=1。读端口进行判断:若P3=0 xf0没有按键压下;若P30 xf0某行有键压下K1键盘扫描原理键盘扫描原理(以

39、P3口为例):第98页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 判断哪一列有键压下写端口(0 x0f):行线电平=1;列线电平=0。读端口进行判断:若P3=0 x0f没有按键压下;若P30 x0f某列有键压下K2第99页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 将K1与K2相“与”并存于K2(形成键值)闭合键所在行、列的状态均为1,其余皆为0。整个键盘的键值:0 x11、0 x21、0 x41、0 x810 x12、0 x22、0 x42、0 x820 x14、0 x24、0 x44、0 x840 x18、0 x28、0 x48、0 x88第一行的键值:

40、00010001、00100001、01000001、10000001第100页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 利用查表比对法求出闭合按键的键模。将各键的键值依次存放在一个数组中,其顺序号就是键模。利用循环变量i控制比对过程,两者相等时的i就是闭合键的键模。第101页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 按键在闭合和断开瞬间会因弹簧开关的变形产生电压波动软件消抖做法:延时10ms后再次扫描按键状态;若仍为“闭合”真有键压下;若为“非闭合”误动作。按键抖动波形键盘消抖原理键盘消抖原理:此法也可用于按键释放处理。第102页,讲稿共110张,创作

41、于星期日单片机的单片机的C51语言语言 行列式键盘扫描流程行列式键盘扫描流程 第103页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 实例实例6 行列式键盘 按下任意按键后,LED显示器上显示该键的键模(0F)。第104页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 分析分析:需要考虑以下三个关键环节:获得按键的键值检测流程图获得闭合按键的键模查表比对获得闭合按键的字模查表思路错误键值?检测键盘显示键值NY延时Main()第105页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 参考程序参考程序/关闭LED数码管第106页,讲稿共110张,创作于星

42、期日单片机的单片机的C51语言语言/消抖处理/行线有键按下/扫描列线/保存行线状态/确信有键按下/键值合成第107页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 程序运行效果程序运行效果 第108页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 本章小结本章小结1.C51的数据类型与变量的定义,都必须考虑单片机的存储结构。2.在Keil下进行C51开发的基本步骤是:建立项目输入源程序设置编译参数编译连接下载调试。3.单片机IO口基本编程应用包括按键(或开关)状态检测、发光二极管输出控制、数码管动态显示以及行列式键盘扫描编程等内容。第109页,讲稿共110张,创作于星期日单片机的单片机的C51语言语言 感感谢谢大大家家观观看看第110页,讲稿共110张,创作于星期日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁