Keil C51自学课件_第1页
Keil C51自学课件_第2页
Keil C51自学课件_第3页
Keil C51自学课件_第4页
Keil C51自学课件_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

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

文档简介

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

2、机的单片机的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初步应用编程初步应用编程 . 程

3、序由函数组成(一个主函数,或一个主函数和若干自定义函数); 利用预处理命令对变量或函数进行集中定义或说明; 函数和变量都需遵循先定义后使用的基本原则; 主函数中的所有语句执行完毕,则程序结束。 单片机的单片机的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语言语言预处理

4、命令-函数说明-全局变量定义- 主函数-自定义函数-局部变量定义- 程序体 程序体-.单片机的单片机的C51语言语言1.1 C51的程序结构的程序结构 1.2 C51的数据结构的数据结构 1.3 C51与汇编语言的混合编程与汇编语言的混合编程 1.4 C51仿真开发环境仿真开发环境 1.5 C51初步应用编程初步应用编程 .单片机的单片机的C51语言语言1. C51的变量的变量 在程序执行过程中,数值可以发生改变的量称为变量变量。 变量名与存储单元地址相对应,变量值与存储单元的内容相对应。例如在哈佛结构的存储空间中如何建立变量概念?在哈佛结构的存储空间中如何建立变量概念? .单片机的单片机的C

5、51语言语言【存储种类存储种类】数据类型数据类型【存储类型存储类型】 变量名变量名(标准C)(标准C)* 括号项可以缺省(但需有缺省值)C51变量定义的四要素:(C51特有)(标准C+C51).单片机的单片机的C51语言语言【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名共有4个说明符:1、auto(自动型)变量的作用范围在定义它的函数体或语句块内。执行结束后,变量所占内存即被释放。2、extern(外部型) 在一个源文件中被定义为外部型的变量,在其它源文件中需要通过extern说明方可使用。3、static(静态型) 利用static可使变量定义所在的函数或语句块执行结束

6、后,其分配的内存单元继续保留。4、register(寄存器型) 将变量对应的储存单元指定为通用寄存器,以提高程序运行速度。缺省存储种类为auto (自动)型变量.单片机的单片机的C51语言语言数据的不同格式叫做数据类型 * 有符号数类型可以忽略signed标识符标准C语言的数据类型【存储种类存储种类】数据类型数据类型 【存储类型存储类型】变量名变量名.单片机的单片机的C51语言语言C51扩充扩充数据类型:bit、sfr或sfr16、sbit bit 型型关键词bit用于定义一个位变量个位变量,语法规则:bit bit_name = 0或1;例如:bit door = 0 ; /定义一个叫doo

7、r的位变量且初值为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;

8、/定义DPTR的低端地址82H注意:注意:C语言中十六进制整数是数值前加语言中十六进制整数是数值前加0 x或或0X前缀前缀.单片机的单片机的C51语言语言sbit型型部分SFR具有位地址,如何定义与这些位地址相关的变量?CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PCYCYACACF0F0RS1RS1RS0RS0OVOVF1F1P PD07D7HD6HD5HD4HD3HD2HD1HD0HD0HD0HPSWPSWD06D05D04D03D02D01D00绝对位地址绝对位地址相对位地址相对位地址字节地址两种位地址表达形式:相对位地址、绝对位地

9、址.单片机的单片机的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

10、和sbit变量。单片机的单片机的C51语言语言用一条预处理命令#include 把这个头文件包含到C51程序中,无需重新定义即可直接使用它们的名称。.单片机的单片机的C51语言语言应用举例:.单片机的单片机的C51语言语言【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名 51单片机的 3个逻辑存储空间:片内数据存储器,片外数据存储器和程序存储器。.建立C51存储类型存储类型与存储空间存储空间的对应关系data区code区xdata区bdata区pdata区idata区.单片机的单片机的C51语言语言C51的存储类型与存储空间对应关系表 SMALL系统COMPACT系统LAR

11、GE系统编译模式编译模式【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名.3种编译模式分别对应于3种缺省存储类型缺省存储类型:单片机的单片机的C51语言语言【存储种类存储种类】数据类型数据类型【存储类型存储类型】变量名变量名C51编译器可根据当前采取的编译模式自动认定默认的存储类型约定约定:若无特殊声明,一般均为“SMALL编译模式”.变量名可以由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,变量名长度随编译系统而定。 变量名具有字母大小写的敏感性,如SUM和sum代表不同的变量。强调强调:头文件中定义的变量都是大写的,若程序采取小写变量则需要重新定义。单

12、片机的单片机的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; uns

13、igned 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语言指针的一般定义形式为: 数据类型数据类型 *指针变量名指针变量名 = &被指向变量名被指向变量名;其中,指针变量指向一个由“数据类型”说明的变量。

14、被指向变量和指针变量都位于C编译器默认的存储区中。 例如: int a =A; int *p1= &a;这表示p1是一个指向int型变量的指针变量,此时p1的值为int型变量a的地址,而a和p1两个变量都位于C编译器默认的内存区域中。.单片机的单片机的C51语言语言对于C51来讲,指针定义应包括以下信息: 1)指针变量的存储类型(自身位于哪个存储区中)? 2)被指向变量的数据类型和存储类型?C51指针的一般定义形式:数据类型数据类型 存储类型存储类型1 * 存储类型存储类型2 变量名变量名 =&被指向被指向 变量名变量名;数据类型数据类型被指向变量的类型,如int型或char型

15、存储类型存储类型1被指向变量所在的存储区,缺省时由地址赋值关系决定存储类型存储类型2指针变量所在的存储区,缺省时为编译器默认的存储区.单片机的单片机的C51语言语言例1若采用SMALL编译模式,试解释下述定义的含义。 char xdata a = A; char *ptr = &a;解:ptr是一个指向char型变量的指针,它本身位于SMALL编译模式默认的data存储区里,此时它指向位于xdata存储区里的char型变量a的地址。 .单片机的单片机的C51语言语言例2试解释下述定义的含义 char xdata a = A;char *ptr = &a;char idata b

16、 = B;ptr = &b;解:以char *ptr形式定义的指针变量,既可指向位于xdata存储区的char型变量a的地址,也可指向位于idata存储区的char型变量b的地址(由赋值操作关系决定)。 前两句与例1相同 char xdata a = A;char *ptr = &a;.单片机的单片机的C51语言语言例3:试解释以下指针定义的含义char xdata a = A;char xdata *ptr = &a;【解】ptr是位于data存储区且固定指向xdata存储区的char型变量的指针变量,此时ptr的值为变量a的地址(不能像例2那样再将idata存储区的

17、char型变量b的地址赋予ptr)。 .单片机的单片机的C51语言语言例4:试解释以下指针定义的含义char xdata a = A;char xdata *idata ptr = &a;【解】ptr是固定指向xdata存储区的char型变量的指针变量, 它自身存放在idata存储区中,此时ptr指向位于xdata存储区中的char型变量a的地址。.单片机的单片机的C51语言语言1.1 C51的程序结构的程序结构 1.2 C51的数据结构的数据结构 1.3 C51与汇编语言的混合编程与汇编语言的混合编程 1.4 C51仿真开发环境仿真开发环境 1.5 C51初步应用编程初步应用编程 .

18、单片机的单片机的C51语言语言C51语言编程可胜任单片机的基本测量与控制任务。对于某些特殊的I/O 接口处理、中断处理、强调程序执行速度等场合,仍希望采用汇编程序。C51 编译器提供了与汇编语言程序的接口规则,可方便地实现C51 与汇0编语言程序的相互调用。本节仅讨论在C51中调用汇编函数和在C51中嵌入汇编代码两种方法。 概要.单片机的单片机的C51语言语言1. 在在C51中调用汇编程序中调用汇编程序 1)程序的寻址,main.c中调用的max函数,如何与汇编文件中的相应代码对应起来; 2)参数传递,main.c中传递给max()函数的参数a和b,存放在何处可使汇编程序能够获取到它们的值;

19、3)返回值传递,汇编语言计算得到的结果,存放在何处可使C语言程序能够获取到。C51程序中调用汇编语言,需要解决三个问题:.单片机的单片机的C51语言语言举例:在两个数据中选出较大的数据,并赋值给变量c。其中,要求选数任务采用汇编子程序完成。. 1)程序的寻址问题 单片机的单片机的C51语言语言通过在汇编文件中定义同名的“函数”来实现。 .单片机的单片机的C51语言语言 2)参数传递问题 .单片机的单片机的C51语言语言 3)返回值传递问题.2. C51中嵌入汇编代码中嵌入汇编代码 在C51 函数内嵌入汇编代码,可以有三种不同方法。方法一方法一 直接在函数体内的每个汇编语句前加“asm”预编译指

20、令,例如:单片机的单片机的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 So

21、ftware公司的51单片机开发软件包,包括C编译器、汇编编译器、连接器、库管理及仿真调试器,通过一个windows下的集成开发环境(uVisoin3)组合起来。 .单片机的单片机的C51语言语言Vision3的软件界面包括4大组成部分,即菜单工具栏,工程管理窗口,文件窗口和输出窗口。菜单工具栏工程管理窗口文件窗口输出窗口.单片机的单片机的C51语言语言Vision3中共有11个下拉菜单。工具栏的位置和数量可以通过设置选定和移动。 .单片机的单片机的C51语言语言工程管理窗口用于管理工程文件目录工程文件目录,它由5个子窗口组成:文件窗口,寄存器窗口,帮助窗口,函数窗口,模版窗口。工程管理窗口:

22、.单片机的单片机的C51语言语言输出窗口:输出窗口用于编译过程中的信息交互作用,由3个子窗口组成:编译窗口,命令窗口,搜寻窗口。.单片机的单片机的C51语言语言信息窗口:观察窗口观察窗口(Watch & Call Stack Windows)输出窗口(Output Windows)存储器窗口(Memory Window)反汇编窗口(Dissambly Window)串行窗口(Serial Window).单片机的单片机的C51语言语言建立工程输入源程序工程设置 程序编译运行调试 2、Vision3的基本使用方法的基本使用方法举例:LED闪烁控制功能.单片机的单片机的C51语言语言(1)

23、建立工程 点击“Project-New Project ”菜单,在编缉框中输入一个名字(设为exam1),无需扩展名。.单片机的单片机的C51语言语言选择目标CPU(Intel系列的80C51BH) .单片机的单片机的C51语言语言(2)输入源程序点击新建文件按钮打开一个新的文本编缉窗口.单片机的单片机的C51语言语言输入程序源代码,以以*.c保存该文件保存该文件。 .单片机的单片机的C51语言语言(3)添加源程序 (右击“Source Group1” 点击“Add Group”Source Group1” 添加生成的.c文件).单片机的单片机的C51语言语言(4)工程设置右击Project

24、窗口的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语言语

25、言1、将Keil编译形成的*.hex文件加载到*.DSN文件中,通过proteus控制仿真运行(无法在运行过程中进行调试)程序运行的两种方法:.单片机的单片机的C51语言语言2、在Keil软件里控制Proteus仿真运行(可以在运行过程中进行调试)步骤步骤:下载( ) 运行( ) 停止( ).单片机的单片机的C51语言语言(6) 一般调试过程启动调试过程Ctrl+F5、 、 Debug-Start/Stop Debug Session 开始调试详见下页 结束调试 、Debug-Stop Running.单片机的单片机的C51语言语言调试工具栏复位运行到光标行执行完当前子程序过程单步单步停止运行

26、调试菜单栏快捷键指向下条运行行.单片机的单片机的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仿真开

27、发环境仿真开发环境 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 独

28、立按键识别【要求】采用独立按键方式实现下述功能:开机时LED全熄,然后根据按键动作使相应灯亮,并将亮灯状态保持到按压其它键时为止。单片机的单片机的C51语言语言独立按键独立按键每个按键都彼此独立地各占有一位I/O口线。特点是电路简单,但占用I/O口线较多。.单片机的单片机的C51语言语言 按键的闭合电平为0, 但LED的驱动电平为1,故不能直接将P0口的状态送到P1口,而应使其先取反再送出; 为使按键抬起后LED能保持先前的点亮状态,需要在按键未压下期间禁止向P2输出P0状态值。【分析】.参考程序如下:参考程序如下: 单片机的单片机的C51语言语言“取反取反”操作的优先操作的优先级高于级高于“

29、与与”操作操作void main( ) char key = 0; /定义按键变量 P2=0; /初始状态为灯全灭 while(1) key = P0 & 0 x0f; /读取按键状态,高4位清零 if (key != 0) P2 = key; /有按键动作时,P0状态值送P2 .单片机的单片机的C51语言语言编程界面和运行界面分别如下图编程界面和运行界面分别如下图 .单片机的单片机的C51语言语言实例1运行效果.实例实例2 键控流水灯 单片机的单片机的C51语言语言【要求】 K1为“启动键启动键”,首次按压K1可产生“自下向上” 的流水灯运动; K2 为“停止键停止键”,按压K2可终

30、止流水灯的运动; 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获取按键状态获取按键状态.单片机的单片机

31、的C51语言语言修改方向和启停标志值修改方向和启停标志值.单片机的单片机的C51语言语言亮灯亮灯P2输出码输出码:xxxx 0001xxxx 0010 xxxx 0100 xxxx 1000D1D4循环方向控制循环方向控制 char led = 0 x01,0 x02,0 x04,0 x08;for (i=0; i=0; i- ) P2 = led i; /移动.单片机的单片机的C51语言语言.单片机的单片机的C51语言语言实例2原理图与程序界面图.程序运行效果视频.单片机的单片机的C51语言语言实例实例3 混合编程混合编程将实例2中C51的delay函数改用汇编语言实现,并完成系统的混合编程

32、。程序说明程序说明 分别编写汇编语言(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数码管原

33、理与编程数码管原理与编程 LED显示元件人机交互输出设备,其作用是指示中间运行结果与运行状态。点式点式字段式字段式LED光柱式光柱式LED 的的类型类型.单片机的单片机的C51语言语言com为公共端 共阳极LED共阴极LED引脚配置七段式LED显示器(7-Segment Display).不同显示字符显示字符采需用不同LED组合关系实现(显示码,字模显示码,字模)单片机的单片机的C51语言语言以共阴极共阴极为例,部分字符的显示码(字模)为:七段LED数码管的标准显示字符标准显示字符为09,AF显示字符显示字符显示码(共阴)显示码(共阴)其它字符:0011 1000B = 0 x38“L”字符的

34、显示码“H”字符的显示码0111 0110B = 0 x76.单片机的单片机的C51语言语言实例实例4 LED数码管显示在P0口连接一个共阴极数码管,使之循环显示09数字。.分析:分析:将显示码循环输出到P0口即可实现循环显示。但由于数字09的显示段码没有规律可循,需要采取查表方式查表方式进行操作:单片机的单片机的C51语言语言循环10次 ?N 延时循环指针i 赋值(10)P0 数组i Y将显示码按序按序存放在一个数组中, 顺序号与代表的显示顺序号与代表的显示字符相对应。字符相对应。(如,char led_mod =x1,x2,.,xn)通过循环变量指定待送出的数组元素.单片机的单片机的C51

35、语言语言参考程序参考程序 .单片机的单片机的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 = tablec

36、ount/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 数码管动态显示原理与编程数码管动态显示原理与编程 两种显示接口:静态显示接口和动态显示接口静态显示接口静态显示接口:一个数码管

37、的引脚独立占据一根I/O口线。优点优点:被显示数据只要送入并行口后就不再需要CPU干预,因而显示效果稳定。缺点缺点:占用资源较多 .单片机的单片机的C51语言语言动态显示接口动态显示接口:所有数码管的段码线对应并联段码线对应并联接在一个并行口上,而每位数码管的公共端分别由一位I/O线控制;由并口输出的显示码可被所有数码管收到,但只有满足导通条件的数码管可以被驱动。 .单片机的单片机的C51语言语言工作原理工作原理:采用快速切换方式(如10ms),每一时刻只有一只数码管导通工作。利用视力暂留特性,可获得连续显示效果。优点优点:占用资源较少缺点缺点:占用机时较多(需要CPU随时刷新显示值) .单片

38、机的单片机的C51语言语言实例实例6 数码管动态显示采用共阴极共阴极动态LED显示原理,实现如下功能:SW1向下拨时显示字符“L2”,向上拨时显示字符“H3”。 .单片机的单片机的C51语言语言分析分析:Proteus中的双联LED数码管相当于两个并联的数码管。7SEG-MPX2-CC-BLUEBlue,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 xxx

39、x xx01B =1led_mode =0 x38,0 x5bled_point=0P2=led_modeled_pointled_point=1-led_pointP3 =2 - led_point.单片机的单片机的C51语言语言如果不考虑开关switch,动态显示“L2”的程序可以如下:;/LED “指针”/显示字模led_point=0P2=led_modeled_pointled_point=1-led_pointP3 =2 - led_point.单片机的单片机的C51语言语言A-G “0 x76”, 1#“0”,2# “1”A-G “0 x4f”, 1#“1”,2# “0”字符数组

40、 led_mode =0 x38,0 x5b,0 x76,0 x4f开关状态变量 switch_sta复合指针变量 led_point + switch_sta显示字符L2H3switch_sta+led_point0123led_point 0101switch_sta0022P3 = 2 - led_point2121led_point=0P2=led_modeled_point +switch_staled_point=1-led_pointP3 =2 - led_pointswitch_sta=0,2.完整的主函数 单片机的单片机的C51语言语言#include char led_mo

41、d = 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);led_point=0P2=led_modeled_point +switch_staled_point=1-led_pointP3 =2 - led_pointswitch_sta=0,2.编程界面 单片机的单片机的C51语言语言.单片机的单片机的C51语言语言运行效果图运行效果图 .单片机的单片机的C51语言语言1.5.2.2 行列式键盘原理与编程行列式键盘原理与编程 独立式键盘的电路简单,易于编程,但占用的I/O口线较多,当需要较多按键时可能产生I/O资源紧张问题。独立式键盘电路独立式键盘电路.单片机的单片机的C51语言语言行列式键盘行列式键盘将I/O口分为行线和列线,按键跨接在行

温馨提示

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

评论

0/150

提交评论