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

    KeilC51自学课件.ppt

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

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

    KeilC51自学课件.ppt

    单片机的C51语言,单片机的C51语言,51汇编语言能直接操作单片机的系统硬件,指令执行速度快。但其程序可读性差,且编写、移植困难。,单片机的C51语言,C51是为51系列单片机设计的一种C语言,其特点:,C51语言已成为51系列单片机程序开发的主流软件方法。,结构化语言,代码紧凑效率可与汇编语言媲美接近真实语言,程序可读性强易于调试、维护库函数丰富,编程工作量小产品开发周期短机器级控制能力,功能很强适合于嵌入式系统开发与汇编指令无关,易于掌握在单片机基础上上手快,单片机的C51语言,C51与标准C语言对比相同之处:语法规则、程序结构、编程方法差异之处:数据结构(数据类型、存储模式)、中断处理、端口扩展本章教学思路:在标准C的基础上学习数据结构(数据类型、存储模式)掌握C51软件开发方法(Keil Vision3软件)在C51的基础上学习单片机I/O口应用(入门与进阶),单片机的C51语言,1.1 C51的程序结构 1.2 C51的数据结构 1.3 C51与汇编语言的混合编程 1.4 C51仿真开发环境 1.5 C51初步应用编程,程序由函数组成(一个主函数,或一个主函数和若干自定义函数);利用预处理命令对变量或函数进行集中定义或说明;函数和变量都需遵循先定义后使用的基本原则;主函数中的所有语句执行完毕,则程序结束。,单片机的C51语言,C51与标准C程序结构完全相同,单片机的C51语言,举例:LED闪烁控制功能,LOOP:CLR P1.0 ACALL DEL50 SETB P1.0 SJMP LOOPDEL50:MOV R7,#200DEL1:MOV R6,#125DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RET END,单片机的C51语言,预处理命令-,函数说明-,全局变量定义-,主函数-,自定义函数-,局部变量定义-,程序体,程序体-,单片机的C51语言,1.1 C51的程序结构 1.2 C51的数据结构 1.3 C51与汇编语言的混合编程 1.4 C51仿真开发环境 1.5 C51初步应用编程,单片机的C51语言,1.C51的变量,在程序执行过程中,数值可以发生改变的量称为变量。,变量名与存储单元地址相对应,变量值与存储单元的内容相对应。,例如,在哈佛结构的存储空间中如何建立变量概念?,单片机的C51语言,【存储种类】数据类型【存储类型】变量名,(标准C),(标准C),*括号项可以缺省(但需有缺省值),C51变量定义的四要素:,(C51特有),(标准C+C51),单片机的C51语言,【存储种类】数据类型【存储类型】变量名,共有4个说明符:1、auto(自动型)变量的作用范围在定义它的函数体或语句块内。执行结束后,变量所占内存即被释放。2、extern(外部型)在一个源文件中被定义为外部型的变量,在其它源文件中需要通过extern说明方可使用。3、static(静态型)利用static可使变量定义所在的函数或语句块执行结束后,其分配的内存单元继续保留。4、register(寄存器型)将变量对应的储存单元指定为通用寄存器,以提高程序运行速度。,缺省存储种类为auto(自动)型变量,单片机的C51语言,数据的不同格式叫做数据类型,*有符号数类型可以忽略signed标识符,标准C语言的数据类型,【存储种类】数据类型【存储类型】变量名,单片机的C51语言,C51扩充数据类型:bit、sfr或sfr16、sbit,bit 型,关键词bit用于定义一个位变量,语法规则:,bit bit_name=0或1;,例如:bit door=0;/定义一个叫door的位变量且初值为0,与标准C的变量定义相似:int a=5;/定义一个初值为5的整形变量a/语法规则:int int_name=常数;,单片机的C51语言,sfr或sfr16型,关键词sfr或sfr16用于定义SFR字节地址变量,语法规则:sfr 或 sfr16 sfr_name=字节地址常数;,51MCU中有21个SFR,如何定义与这些单元相关的变量?,单片机的C51语言,例如,sfr P0=0 x80;/定义P0口地址80Hsfr PCON=0 x87;/定义PCON地址87H sfr16 DPTR=0 x82;/定义DPTR的低端地址82H,注意:C语言中十六进制整数是数值前加0 x或0X前缀,单片机的C51语言,sbit型,部分SFR具有位地址,如何定义与这些位地址相关的变量?,绝对位地址,相对位地址,字节地址,两种位地址表达形式:相对位地址、绝对位地址,单片机的C51语言,1)将SFR的绝对位地址定义为位变量名sbit bit_name=位地址常数;例如,sbit CY=0 xD7;,3)将SFR的相对位位置定义位变量名 sbit bit_name=sfr_name 位位置;例如,sbit CY=PSW7;,2)将SFR的相对位地址定义为位变量名sbit bit_name=sfr字节地址 位位置;例如,sbit CY=0 xD07;,关键词sbit用于定义SFR位地址变量,三种定义形式:,C51编译器在头文件“REG51.H”中定义了全部sfr/sfr16和sbit变量。,单片机的C51语言,用一条预处理命令#include 把这个头文件包含到C51程序中,无需重新定义即可直接使用它们的名称。,单片机的C51语言,应用举例:,单片机的C51语言,【存储种类】数据类型【存储类型】变量名,51单片机的 3个逻辑存储空间:,片内数据存储器,片外数据存储器和程序存储器。,建立C51存储类型与存储空间的对应关系,单片机的C51语言,C51的存储类型与存储空间对应关系表,编译模式,【存储种类】数据类型【存储类型】变量名,3种编译模式分别对应于3种缺省存储类型:,单片机的C51语言,【存储种类】数据类型【存储类型】变量名,C51编译器可根据当前采取的编译模式自动认定默认的存储类型约定:若无特殊声明,一般均为“SMALL编译模式”,变量名可以由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,变量名长度随编译系统而定。,变量名具有字母大小写的敏感性,如SUM和sum代表不同的变量。强调:头文件中定义的变量都是大写的,若程序采取小写变量则需要重新定义。,单片机的C51语言,【存储种类】数据类型【存储类型】变量名,单片机的C51语言,C51扩展的若干关键字一览表,变量名不得使用标准C语言和C51语言的关键字。,unsigned char data system_status=0;,单片机的C51语言,/定义system_status为无符号字符型自动变量,该变量位于data区中且初值为0。,数据结构定义举例,变量名为system_status,位与片内RAM区,无符号字符型,自动型,初值为零,单片机的C51语言,unsigned char bdata status_byte;,unsigned int code unit_id2=0 x1234,0 x89ab;,static char m,n;,/定义status_byte为无符号字符型自动变量,该变量位于bdata区,/定义unit_id2为无符号整型自动变量,该变量位于code区中,是长度为2的数组,且初值为0 x1234和0 x89ab。,/定义m和n为2个位于data区中的有符号字符型静态变量。,2.C51的指针,单片机的C51语言,标准C语言指针的一般定义形式为:数据类型*指针变量名=这表示p1是一个指向int型变量的指针变量,此时p1的值为int型变量a的地址,而a和p1两个变量都位于C编译器默认的内存区域中。,单片机的C51语言,对于C51来讲,指针定义应包括以下信息:1)指针变量的存储类型(自身位于哪个存储区中)?2)被指向变量的数据类型和存储类型?,C51指针的一般定义形式:数据类型 存储类型1*存储类型2 变量名=&被指向 变量名;,数据类型被指向变量的类型,如int型或char型存储类型1被指向变量所在的存储区,缺省时由地址赋值关系决定存储类型2指针变量所在的存储区,缺省时为编译器默认的存储区,单片机的C51语言,例1若采用SMALL编译模式,试解释下述定义的含义。char xdata a=A;char*ptr=,解:ptr是一个指向char型变量的指针,它本身位于SMALL编译模式默认的data存储区里,此时它指向位于xdata存储区里的char型变量a的地址。,单片机的C51语言,例2试解释下述定义的含义 char xdata a=A;char*ptr=,解:以char*ptr形式定义的指针变量,既可指向位于xdata存储区的char型变量a的地址,也可指向位于idata存储区的char型变量b的地址(由赋值操作关系决定)。,前两句与例1相同 char xdata a=A;char*ptr=,单片机的C51语言,例3:试解释以下指针定义的含义char xdata a=A;char xdata*ptr=【解】ptr是位于data存储区且固定指向xdata存储区的char型变量的指针变量,此时ptr的值为变量a的地址(不能像例2那样再将idata存储区的char型变量b的地址赋予ptr)。,单片机的C51语言,例4:试解释以下指针定义的含义char xdata a=A;char xdata*idata ptr=【解】ptr是固定指向xdata存储区的char型变量的指针变量,它自身存放在idata存储区中,此时ptr指向位于xdata存储区中的char型变量a的地址。,单片机的C51语言,1.1 C51的程序结构 1.2 C51的数据结构 1.3 C51与汇编语言的混合编程 1.4 C51仿真开发环境 1.5 C51初步应用编程,单片机的C51语言,C51语言编程可胜任单片机的基本测量与控制任务。对于某些特殊的I/O 接口处理、中断处理、强调程序执行速度等场合,仍希望采用汇编程序。C51 编译器提供了与汇编语言程序的接口规则,可方便地实现C51 与汇0编语言程序的相互调用。本节仅讨论在C51中调用汇编函数和在C51中嵌入汇编代码两种方法。,概要,单片机的C51语言,1.在C51中调用汇编程序,1)程序的寻址,main.c中调用的max函数,如何与汇编文件中的相应代码对应起来;,2)参数传递,main.c中传递给max()函数的参数a和b,存放在何处可使汇编程序能够获取到它们的值;,3)返回值传递,汇编语言计算得到的结果,存放在何处可使C语言程序能够获取到。,C51程序中调用汇编语言,需要解决三个问题:,单片机的C51语言,举例:在两个数据中选出较大的数据,并赋值给变量c。其中,要求选数任务采用汇编子程序完成。,1)程序的寻址问题,单片机的C51语言,通过在汇编文件中定义同名的“函数”来实现。,单片机的C51语言,2)参数传递问题,单片机的C51语言,3)返回值传递问题,2.C51中嵌入汇编代码,在C51 函数内嵌入汇编代码,可以有三种不同方法。,方法一 直接在函数体内的每个汇编语句前加“asm”预编译指令,例如:,单片机的C51语言,单片机的C51语言,方法二 把asm 作为关键字,后续汇编用大括号括起来即可,例如:,单片机的C51语言,方法三在C 模块内通过语句“#pragma”嵌入汇编代码,例如:,单片机的C51语言,1.1 C51的程序结构 1.2 C51的数据结构 1.3 C51与汇编语言的混合编程 1.4 C51仿真开发环境 1.5 C51初步应用编程,单片机的C51语言,1.Keil的编译环境 Vision3,Keil是德国Keil Software公司的51单片机开发软件包,包括C编译器、汇编编译器、连接器、库管理及仿真调试器,通过一个windows下的集成开发环境(uVisoin3)组合起来。,单片机的C51语言,Vision3的软件界面包括4大组成部分,即菜单工具栏,工程管理窗口,文件窗口和输出窗口。,单片机的C51语言,Vision3中共有11个下拉菜单。工具栏的位置和数量可以通过设置选定和移动。,单片机的C51语言,工程管理窗口用于管理工程文件目录,它由5个子窗口组成:文件窗口,寄存器窗口,帮助窗口,函数窗口,模版窗口。,工程管理窗口:,单片机的C51语言,输出窗口:输出窗口用于编译过程中的信息交互作用,由3个子窗口组成:编译窗口,命令窗口,搜寻窗口。,单片机的C51语言,信息窗口:观察窗口(Watch&Call Stack Windows)输出窗口(Output Windows)存储器窗口(Memory Window)反汇编窗口(Dissambly Window)串行窗口(Serial Window),单片机的C51语言,建立工程输入源程序工程设置 程序编译运行调试,2、Vision3的基本使用方法,举例:LED闪烁控制功能,单片机的C51语言,(1)建立工程,点击“Project-New Project”菜单,在编缉框中输入一个名字(设为exam1),无需扩展名。,单片机的C51语言,选择目标CPU(Intel系列的80C51BH),单片机的C51语言,(2)输入源程序点击新建文件按钮打开一个新的文本编缉窗口,单片机的C51语言,输入程序源代码,以*.c保存该文件。,单片机的C51语言,(3)添加源程序(右击“Source Group1”点击“Add file to Group”Source Group1”添加生成的.c文件),单片机的C51语言,(4)工程设置,右击Project 窗口的Target 1选择“Project-Option for target target 1”工程设置对话框,单片机的C51语言,设置对话框中的OutPut 页面(勾选“Creat Hex file”),单片机的C51语言,设置对话框中的Debug 页面(选中Use和下拉框“PROTEUS VSM MONITOR”),单片机的C51语言,(5)编译源程序(形成hex文件),点击F7或工具按钮启动编译、连接功能。,完成后将在命令窗口中显示编译结果,单片机的C51语言,若有语法错误,双击出错提示可指出错误所在行号,单片机的C51语言,1、将Keil编译形成的*.hex文件加载到*.DSN文件中,通过proteus控制仿真运行(无法在运行过程中进行调试),程序运行的两种方法:,单片机的C51语言,2、在Keil软件里控制Proteus仿真运行(可以在运行过程中进行调试),步骤:下载()运行()停止(),单片机的C51语言,(6)一般调试过程,启动调试过程Ctrl+F5、Debug-Start/Stop Debug Session 开始调试详见下页 结束调试、Debug-Stop Running,单片机的C51语言,调试工具栏,复位,运行到光标行,执行完当前子程序,过程单步,单步,停止,运行,调试菜单栏,快捷键,指向下条运行行,单片机的C51语言,基本调试手段:1、运行到光标行从当前行运行到光标所在行(Ctrl+F10)2、严格单步运行遇到函数时亦单步进行(F11)3、跨函数单步运行遇到函数时将其视作一行语句(F10)4、断点运行 全速运行到断点行停止(双击设置/解除断点)5、监视输出端口打开I/O窗口(Peripherals-I/O-Ports)6、监视运行变量打开Watch#1窗口(点击),单片机的C51语言,1.1 C51的程序结构 1.2 C51的数据结构 1.3 C51与汇编语言的混合编程 1.4 C51仿真开发环境 1.5 C51初步应用编程 1.5.1 I/O端口的简单应用 1.5.2 I/O端口的进阶实践,单片机的C51语言,输出单元:发光二极管(Light Emitting Diode)基本输出元件,低电平驱动,限流电阻R=1001k,高电平驱动,灌电流,拉电流,1.5.1.1 基本输入输出单元与编程,输入单元:按钮(Button)或开关(Switch)基本输入元件,单片机的C51语言,P0口为漏极开路结构需要外接上拉电阻当按键未按下压时,Px.n端口为高电平;按压按键后为低电平。,实例1 独立按键识别,【要求】采用独立按键方式实现下述功能:开机时LED全熄,然后根据按键动作使相应灯亮,并将亮灯状态保持到按压其它键时为止。,单片机的C51语言,独立按键每个按键都彼此独立地各占有一位I/O口线。特点是电路简单,但占用I/O口线较多。,单片机的C51语言,按键的闭合电平为0,但LED的驱动电平为1,故不能直接将P0口的状态送到P1口,而应使其先取反再送出;,为使按键抬起后LED能保持先前的点亮状态,需要在按键未压下期间禁止向P2输出P0状态值。,【分析】,参考程序如下:,单片机的C51语言,“取反”操作的优先级高于“与”操作,void main()char key=0;/定义按键变量 P2=0;/初始状态为灯全灭 while(1)key=P0/有按键动作时,P0状态值送P2,单片机的C51语言,编程界面和运行界面分别如下图,单片机的C51语言,实例1运行效果,实例2 键控流水灯,单片机的C51语言,【要求】K1为“启动键”,首次按压K1可产生“自下向上”的流水灯运动;K2 为“停止键”,按压K2可终止流水灯的运动;K3和K4为“方向键”,分别产生“自上向下”和“自下向上”运动。,K1K2K3K4,单片机的C51语言,思路分析:根据键值修改标志位,根据标志位控制灯状态,总体关系流程图,单片机的C51语言,键值:按压K1xxxx 1110B按压K2xxxx 1101B按压K3xxxx 1011B 按压K4xxxx 0111B无按键 xxxx 1111B,按键动作判断(P0&0 x0f)是否等于 0 x0f?若是,说明无按键动作,反之则有按键动作。,0 x0e 0 x0d 0 x0b 0 x07 0 x0f,获取按键状态,单片机的C51语言,修改方向和启停标志值,单片机的C51语言,亮灯P2输出码:xxxx 0001xxxx 0010 xxxx 0100 xxxx 1000,D1D4循环方向控制,char led=0 x01,0 x02,0 x04,0 x08;,for(i=0;i=3;i+)P2=led i;/移动,for(i=3;i=0;i-)P2=led i;/移动,单片机的C51语言,单片机的C51语言,实例2原理图与程序界面图,程序运行效果,视频,单片机的C51语言,实例3 混合编程,将实例2中C51的delay函数改用汇编语言实现,并完成系统的混合编程。,程序说明,分别编写汇编语言(delay.asm)与C51语言(实例3.c)两个程序文件,并将其添加到Keil的同一项目中。,单片机的C51语言,C51部分与实例2基本相同,delay函数声明,单片机的C51语言,delay.asm,与实例3.c文件中函数delay同名的子程序,汇编子程序的头部格式,;延时处理函数(汇编语言)PUBLIC _DELAYDE SEGMENT CODERSEG DE_DELAY:MOV R0,#225DEL2:DJNZ R0,DEL2 DJNZ R7,_DELAY RETEND,单片机的C51语言,1.5.1.2 LED数码管原理与编程,LED显示元件人机交互输出设备,其作用是指示中间运行结果与运行状态。,单片机的C51语言,com为公共端,共阳极LED,共阴极LED,引脚配置,七段式LED显示器,(7-Segment Display),不同显示字符采需用不同LED组合关系实现(显示码,字模),单片机的C51语言,以共阴极为例,部分字符的显示码(字模)为:,七段LED数码管的标准显示字符为09,AF,显示字符,显示码(共阴),其它字符:,0011 1000B=0 x38,“L”字符的显示码,“H”字符的显示码,0111 0110B=0 x76,单片机的C51语言,实例4 LED数码管显示,在P0口连接一个共阴极数码管,使之循环显示09数字。,分析:将显示码循环输出到P0口即可实现循环显示。但由于数字09的显示段码没有规律可循,需要采取查表方式进行操作:,单片机的C51语言,将显示码按序存放在一个数组中,顺序号与代表的显示字符相对应。(如,char led_mod=x1,x2,.,xn)通过循环变量指定待送出的数组元素,单片机的C51语言,参考程序,单片机的C51语言,视频,单片机的C51语言,实例5 计数显示器,统计按键次数并以十进制形式显示,按键次数大于99后重新由0开始计数。,个位LED接P2口,十位LED接P0口(共阴型),按钮接P3.7口线,按压时为0电平,单片机的C51语言,编程分析:,问题:按键压下时可能被连续计数,单片机的C51语言,如何避免连续计数?,单片机的C51语言,初始化:P2=P0=table0;,解决办法:取模运算(%10)个位 整除10运算(/10)十位,P2=tablecount%10;,P 0=tablecount/10;,显示输出:如何将计数值拆成两个独立的数?,单片机的C51语言,参考程序,单片机的C51语言,1.1 C51的程序结构 1.2 C51的数据结构 1.3 C51与汇编语言的混合编程 1.4 C51仿真开发环境 1.5 C51初步应用编程 1.5.1 I/O端口的简单应用 1.5.2 I/O端口的进阶实践,单片机的C51语言,1.5.2.1 数码管动态显示原理与编程,两种显示接口:静态显示接口和动态显示接口,静态显示接口:一个数码管的引脚独立占据一根I/O口线。优点:被显示数据只要送入并行口后就不再需要CPU干预,因而显示效果稳定。缺点:占用资源较多,单片机的C51语言,动态显示接口:所有数码管的段码线对应并联接在一个并行口上,而每位数码管的公共端分别由一位I/O线控制;由并口输出的显示码可被所有数码管收到,但只有满足导通条件的数码管可以被驱动。,单片机的C51语言,工作原理:采用快速切换方式(如10ms),每一时刻只有一只数码管导通工作。利用视力暂留特性,可获得连续显示效果。优点:占用资源较少缺点:占用机时较多(需要CPU随时刷新显示值),单片机的C51语言,实例6 数码管动态显示,采用共阴极动态LED显示原理,实现如下功能:SW1向下拨时显示字符“L2”,向上拨时显示字符“H3”。,单片机的C51语言,分析:Proteus中的双联LED数码管相当于两个并联的数码管。,7SEG-MPX2-CC-BLUE,Blue,2 Digit,7-segment Cathode Display,单片机的C51语言,A-G“0 x38”,1#“0”,2#“1”,A-G“0 x5b”,1#“1”,2#“0”,P2led_mode0,P3 xxxx xx10B=2P2led_mode1,P3 xxxx xx01B=1,led_mode=0 x38,0 x5b,单片机的C51语言,如果不考虑开关switch,动态显示“L2”的程序可以如下:,;,/LED“指针”,/显示字模,单片机的C51语言,A-G“0 x76”,1#“0”,2#“1”,A-G“0 x4f”,1#“1”,2#“0”,字符数组 led_mode=0 x38,0 x5b,0 x76,0 x4f,开关状态变量 switch_sta,复合指针变量 led_point+switch_sta,完整的主函数,单片机的C51语言,#include char led_mod=0 x38,0 x5B,0 x76,0 x4F;void delay(unsigned int time);sbit P17=P17;void main()char led_point=0,switch_sta=0;while(1)if(P17=1)switch_sta=2;else switch_sta=0;P3=2-led_point;P2=led_modswitch_sta+led_point;led_point=1-led_point;delay(30);,编程界面,单片机的C51语言,单片机的C51语言,运行效果图,单片机的C51语言,1.5.2.2 行列式键盘原理与编程,独立式键盘的电路简单,易于编程,但占用的I/O口线较多,当需要较多按键时可能产生I/O资源紧张问题。,独立式键盘电路,单片机的C51语言,行列式键盘将I/O口分为行线和列线,按键跨接在行线和列线上,列线通过上拉电阻接正电源。,44行列式键盘,7407六高压输出缓冲器/驱动器,行列式键盘的特点:占用I/O口线少,但软件过程复杂。,单片机的C51语言,键盘扫描,同时将各行电平置1,分别将各列电平置0。,扫描码:key_scan=0 xef,0 xdf,0 xbf,0 x7f;写P3:P3=key_scani;,键盘扫描原理(以P3口接44键盘为例),第一次 1110 1111B 第二次 1101 1111B第三次 1011 1111B第四次 0111 1111B,=0 xef=0 xdf=0 xbf=0 x7f,单片机的C51语言,(P3&0 x0f)=0 x0f 无键压下(P3&0 x0f)0 x0f 有键压下,按键闭合状态判断,0#:1110 1110B0 xee 1#:1101 1110B0 xdeF#:0111 0111B0 x77,按键闭合前后,所在行线端口电平反转;读P3后,若发现其低4位为f,说明无键压下;反之则相反。,键值按键闭合时从引脚读出的数值。,单片机的C51语言,查找闭合键键号,for(j=0;j 16;j+)if(P3=key_buf j)return j;,键值数组key_buf=0 xee,0 xde,0 xbe,0 x7e,0 xed,0 xdd,0 xbd,0 x7d,0 xeb,0 xdb,0 xbb,0 x7b,0 xe7,0 xd7,0 xb7,0 x77;,键号按照一定规则给按键分配的编号,闭合键键号:闭合键值与键值数组相等时的查询号,单片机的C51语言,实例7,功能:开机黑屏;按下任意按键后,数码管上显示该键的键号(0F);若没有新键按下,维持前次按键结果。,行列式键盘+静态数码显示,单片机的C51语言,实例7程序流程图,单片机的C51语言,完整程序,单片机的C51语言,程序运行效果,单片机的C51语言,按键在闭合和断开瞬间会因弹簧开关的变形产生电压波动,软件消抖法:延时10ms后再次扫描按键状态。若仍判为“闭合”说明确有键压下;若为“非闭合”说明是误动作。,按键抖动波形,键盘消抖原理:,单片机的C51语言,消抖实例:,(实例5),本章小结,C51的数据类型与变量的定义,都必须考虑单片机的存储结构。在Keil下进行C51开发的基本步骤是:建立工程输入源程序设置编译参数编译连接下载调试。单片机I/O口基本编程应用包括按键(或开关)状态检测、发光二极管输出控制、数码管动态显示以及行列式键盘扫描编程等内容。,单片机的C51语言,

    注意事项

    本文(KeilC51自学课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开