版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目1 控制一个LED项目1 控制一个LED促成目标知道AT89S52单片机结构和引脚功能;会AT89S52单片机最小系统电路设计;知道C语言基本构成和基本语句;会利用单片机I/O口实现点亮一个LED和控制LED闪烁。终极目标能完成单片机最小系统和输出电路设计与制作;能应用C语言程序完成单片机输入输出控制,实现对LED控制的设计、运行及调试。教学目标任务1 控制一个LED的第一个Proteus仿真电路任务描述AT89S52单片机P1.0引脚接发光二极管LED的阴极;通过C语言程序控制,从P1.0引脚上输出低电平,使发光二极管LED点亮。 认识PROTEUSProteus 8.6 Profess
2、ional是英国Labcenter Electronics公司开发的多功能EDA软件。PROTEUS不仅是模拟电路、数字电路、模数混合电路的设计与仿真平台,也是目前较先进的单片机和嵌入式系统的设计与仿真平台。PROTEUS实现了在计算机上完成从原理图与电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证到形成PCB的完整的电子设计、研发过程。 单片机控制一个LED电路分析按照任务描述,点亮一个LED电路是由AT89S52单片机最小系统和1个LED电路构成。AT89S52单片机是美国ATMEL公司生产的低电压、高性能8位单片机,具有丰富的内部资源, 使用AT89S52单片机无须外
3、部存储器。AT89S52单片机的P1.0引脚接LED的阴极,LED的阳极通过220限流电阻后连接到5V电源上,限流电阻在这里起到了限流的作用,使通过LED的电流被限制在十几个毫安左右。根据二极管单向导电性,当单片机的P1.0引脚输出低电平时,由于P1.0引脚接LED的阴极,使得LED点亮。当单片机的P1.0引脚输出高电平时,使得LED熄灭。简而言之,LED加正向电压点亮,反之熄灭。任务实施新建Proteus工程在设计原理图之前,必须新建一个Proteus工程。由于本书没有涉及PCB绘制内容,在这里新建一个带有原理图和无PCB的Proteus工程。设置图纸设置图纸尺寸、设置网格。添加元器件添加A
4、T89C52、CRYSTAL(晶振)、CAP(电容)、CAP-ELEC(电解电容)、RES(电阻)、LED-RED等元器件。任务实施绘制电路图放置元器件调整元器件位置放置终端连线属性设置电气规则检测认识单片机单片机实质上是一个芯片,单片机芯片上主要集成了如下部件:中央处理器CPU;数据存储器RAM;程序存储器ROM;定时器/计数器;中断系统;输入/输出接口电路。单片机的发展 第一阶段(1974-1976年)为单片机初级阶段由于受工艺及集成度的限制,单片机采用双片形式,且功能比较简单。第二阶段(1976-1978年)为低性能单片机阶段单片机采用单芯片形式,是“小而全”。第三阶段(1978-198
5、2年)为高性能单片机阶段是单片机普及阶段,如:MCS-51系列单片机第四阶段(1982年以后)为16位单片机阶段是16位CPU,如:MCS-96系列单片机单片机的特点 由于单片机芯片上集成了CPU、存储器、输入/输出部件和时钟电路等。因此它具有如下特点。体积小、重量轻,价格低、功能强,电源单一、功耗低,可靠性高、抗干扰能力强;使用方便灵活、通用性强;目前大多数单片机采用哈佛(Harvard)结构体系;突出控制功能的指令系统;较低的处理速度和较小的存储容量。单片机的应用 单片机主要应用在以下几个方面: 家用电器智能卡智能仪器仪表网络与通信工业控制单片机的分类单片机可分为通用型单片机和专用型单片机
6、两大类。通用型单片机是把可开发资源全部提供给使用者的微控制器。这就是我们通常所说的单片机,即指通用型单片机专用型单片机则是为过程控制、参数检测、信号处理等方面的特殊需要而设计的单片机。51系列单片机51系列单片机有51子系列型和52子系列型51子系列是基本型产品片内带有4KBROM/EPROM(8031、80C31除外)、128BRAM、2个16位定时器/计数器、5个中断源等。52子系列则是增强型产品片内带有8KBROM/EPROM(8032、80C32除外)、256BRAM、3个16位定时器/计数器、6个中断源等。51系列单片机一览表AT89系列单片机在MCS-51系列的基础上,Atmel公
7、司开发的AT89系列单片机,具有较低廉的价格和独特的程序存储器(快闪存储器)。Flash程序存储器可以用电擦除方式瞬间擦除、改写, 写入单片机内的程序还可以进行加密。AT89S52单片机结构 一个8位CPU;一个片内振荡器及时钟电路;8K字节可重复擦写的Flash闪速存储器三级加密程序存储器;2568字节内部RAM;3个16位定时器/计数器;32条可编程的I/O线(四个8位并行I/O端口);一个可编程全双工串行口;具有6个中断源、两个优先级嵌套中断结构。 AT89S52引脚功能 电源线:VCC(+5V)、VSS(地)振荡电路:XTAL1、XTAL2复位引脚:RST并行口:P0、P1、P2、P3
8、EA:访问程序存储控制信号PSEN:外部ROM读选通信号ALE:地址锁存控制信号P3口线的第二功能AT89S52引脚功能电源引脚(2根) VCC(40脚):电源端,接+5V电源。VSS(20脚):接地端。时钟引脚(2根) XTAL1(19脚):接外部晶振和微调电容的一端。XTAL2(18脚):接外部晶振和微调电容的另一端。STC89C52引脚功能控制引脚(4根)RST/VPD(9脚):复位信号当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作。ALE/PROG (30脚):地址锁存控制信号系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位
9、地址和数据的隔离。EA/VPP(31脚):访问程序存储控制信号当信号为低电平时,对ROM的读操作限定在外部程序存储器;当信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。PSEN(29脚):片外ROM读选通信号端读片外ROM时,PSEN为低电平有效,实现对片外ROM的读操作。AT89S52引脚功能P0口(引脚32-39)普通I/O口P1口(引脚1-8) 普通I/O口P2口(引脚21-28)普通I/O口P3口(引脚10-17)普通I/O口,或作为其他第二功能口P3口各引脚与第二功能表引脚 第二功能 功能说明 P3.0RXD串行口输入P3.1TXD串行口输出P3.2I
10、NT0外部中断0输入P3.3INT1外部中断1输入P3.4T0定时器/计数器0计数输入P3.5T1定时器/计数器1计数输入P3.6WR片外RAM写选通信号(输出)P3.7RD片外RAM读选通信号(输出)任务2 用Keil C51设计第一个程序控制一个LED任务描述使用Keil C51,设计一个C语言程序,控制AT89S52单片机P1.0引脚输出一个低电平,使LED点亮。 认识KEIL C51Keil C51 是德国Keil软件公司开发的基于8051 内核的微控制器软件开发平台。Keil C51 是51系列单片机C语言软件开发系统,是目前开发8051 内核单片机的主流工具。Keil C51软件提
11、供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。Keil C51 具有集成开发环境,可以完成从工程建立和管理、编译、连接、目标代码的生成、软件仿真和硬件仿真等完整的开发流程。 单片机控制一个LED实现分析P1.0引脚接发光二极管(LED)的阴极,P1.0引脚输出低电平时,发光二极管点亮。 问题:为什么P1.0引脚输出低电平,发光二极管点亮?通过程序控制,使P1.0引脚输出低电平,使发光二极管点亮。问题:程序怎么使P1口的引脚输出低电平? 在下面我们可以找到答案。单片机控制一个LED实现分析在图1-1中,AT89S52单片机的P1.0引脚接LED的阴极,LED的阳极通过220限
12、流电阻后连接到5V电源上。当单片机的P1.0引脚输出低电平时,LED点亮。sbit LED=P10; /定义LED为P1.0引脚LED=0; /P1.0引脚输出低电平,LED点亮当单片机的P1.0引脚输出高电平时,LED熄灭。sbit LED=P10; /定义LED为P1.0引脚LED=1; /P1.0引脚输出高电平,LED熄灭任务实施建立第一个Keil C51工程项目新建工程并保存在“任务2 控制一个LED”的文件夹中;在CPU类型中,单击左侧列表框中“Atmel”项前面的“+”号,展开该层,单击选中列表中的“AT89S52”;不添加启动文件。建立“点亮一个LED”源文件“点亮一个LED.c
13、”与工程文件放在同一文件夹中。添加源文件到工程项目文件中将“点亮一个LED.c”添加到工程项目中任务实施“点亮一个LED”源文件#include /包含AT89X52.H头文件sbit LED=P10; /定义LED为P1.0引脚void main (void) LED=0; /P1.0引脚输出低电平点亮LED while(1);任务实施工程配置与编译在“Target(目标)”标签页的晶振频率栏中,建议初学者修改成12MHz,因为12MHz方便计算指令时间;在“Output”标签页中,选中“Greate HEX File(生成HEX文件)”选择框,使编译器输出单片机需要的HEX文件;其余采用默
14、认配置。用Proteus仿真运行调试加载“控制一个LED.hex ”目标代码文件仿真运行调试单片机最小系统单片机最小系统只是单片机能满足工作的最低要求,它不能对外完成控制任务,不能实现人机对话。要进行人工对话还要一些输入、输出部件,作控制时还要有执行部件。常见的输入部件有开关、按钮、键盘等,输出部件有指示灯LED、数码管等,执行部件有继电器、电磁阀等。一般来说,单片机最小系统主要包括单片机、晶振电路、复位电路和电源4个部分。时钟电路时钟电路为单片机产生时钟脉冲序列。系统允许的晶振频率一般为6 MHz和12 MHz,电容C1和C2取30 pF左右。晶体振荡频率高,则系统的时钟频率也高,单片机运行
15、速度也就快。时序的概念 单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。 单片机的时序定时单位从小到大依次为:振荡周期、时钟周期(状态周期)、机器周期和指令周期。振荡周期是指晶体振荡器直接产生的振荡信号的周期,是振荡频率fosc的倒数,用P表示。 状态周期(或状态S)是振荡周期的两倍,它分为P1节拍和P2节拍。1个机器周期是由6个状态构成。执行一条指令所需的时间称为指令周期。各种周期的相互关系 复位电路单片机复位引脚RST出现2个机器周期以上的高电平时,单片机就执行复位操作。 常见复位操作有上电自动复位和按键手动复位两种方式 。上电自动复位是
16、通过外部复位电路的电容充电来实现的。按键手动复位是通过复位端经电阻与电源VCC接通而实现的,它兼备上电复位功能。复位功能复位是单片机的初始化操作。是把PC初始化为0000H,使CPU从0000H单元开始执行程序;同时还对其他一些寄存器有影响,但内部RAM的数据是不变的。 除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动。C语言程序的构成 一个语言程序,是由一个main()函数(又称主函数)和若干个其它函数结合而成的,或仅由一个main()函数构成。函数是语言程序的基本单位。最简单的程序只有一个main函数 。C语言程序总是从ma
17、in()函数开始执行。函数的构成 任何函数都是由函数说明和函数体两部分组成函数一般结构如下:函数类型 函数名(函数参数表) /* 函数说明部分 */声明语句部分 执行语句部分 /* 函数体部分 */ 函数体,即函数首部下面的大括号“”内的部份。函数体一般包括: 声明部份:定义所用到的变量,如void Delay()中的unsigned char i, j;。执行部份:由若干个语句组成。 标识符 C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。变量名、常数名、数组名、函数名、文件名与类型名等统称为标识符。标识符分为预定义标识符和用户标识符。 说明:C语言中大
18、写字母与小写字母被认为是两个不同的字符。标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。 关键字 关键字则是编程语言保留的特殊标识符它们具有固定名称和含义,在程序编写中不允许标识符与关键字相同。在Keil C中的关键字除了有ANSI C标准的32个关键字外,还根据51单片机的特点扩展了相关的关键字。在Keil C的文本编辑器中编写C程序,系统把保留字以不同颜色显示,缺省颜色为天蓝色。 C语言基本语句 C语言的程序是由一个或多个函数组成的,而函数又是由若干个语句组成的。语句是由一些基本字符和定义符按照C语言的语法规定组成的,每个语句以分号“;”结束,分号是C语句的必要组成部份。C语言的
19、语句可分为以下5种类型:表达式语句函数调用语句控制语句复合语句空语句 表达式语句表达式语句是由一个表达式加一个分号构成一个语句,其作用是计算表达式的值或改变变量的值。它的一般形式是: 表达式;即在表达式末尾加上分号,就变成了表达式语句。最典型的表达式语句是:在赋值表达式后加一个分号构成赋值语句。例如:a=3 是一个赋值表达式a=3; 是一个赋值语句函数调用语句由一个函数调用加一个分号构成函数调用语句,其作用是完成特定的功能。它的一般形式是:函数名(参数列表);例如: mDelay(100); /调用延时函数,参数是100 控制语句控制语句用于完成一定的控制功能,以实现程序的各种结构方式。C语言
20、有9种控制语句,可分为以下三类。条件判断语句if语句、switch语句。循环语句for语句、while语句、do-while语句。转向语句break语句、continue语句、goto语句、return语句。 复合语句复合语句是用一对大括号将若干条语句括起来的,也称为分程序,在语法上相当于一条语句。例如main() t=x; x=y; y=t; /复合语句 空语句只有一个分号的语句称为空语句它的一般形式是: ; 空语句是什么操作也不执行,常用于作为循环语句中的循环体,表示循环体什么也不做。 注释 注释内容可以单独写在一行上,也可以写在一个语句之后可以用/*.*/的形式为 C 程序的任何一部份作
21、注释;Keil C也支持 C+风格的注释,就是用“/”引号后面的是注释例如P1_0=!P1_0; /取反 P1.0这种风格的注释,只对本行有效,书写比较方便,所以在只需要一行注释的时候,我们往往采用这种格式。 技能训练1-1 开关控制LED点亮 单片机最小系统只是单片机能满足工作的最低要求,它不能对外完成控制任务,实现人机对话。 开关控制LED点亮电路设计 程序设计 开关控制LED点亮程序#include /包含AT89X52.H头文件sbit SW=P30; /定义SW是P3.0位对应的引用符号sbit LED=P10; /定义LED是P1.0位对应的引用符号void main (void)
22、 while(1) if(SW=0) LED=0; /开关闭合SW=0:P1.0=0,LED点亮 else LED=1; /开关断开SW=1:P1.0=1,LED熄灭 任务3 LED闪烁控制任务描述P1.0引脚接LED的阴极,通过程序控制,使P1.0引脚交替输出高电平和低电平,使LED闪烁。任务3 LED闪烁控制任务分析软件实现思路:点亮发光二极管延时(延时子程序)关闭发光二极管延时重复上述动作(循环)电路设计和前面一样任务实施建立第一个Keil C51工程项目新建工程并保存在“任务2 控制一个LED”的文件夹中。建立“LED闪烁控”源文件“LED闪烁控.c”与工程文件放在同一文件夹中。添加源
23、文件到工程项目文件中将“LED闪烁控.c”添加到工程项目中“LED闪烁控制”工程配置与编译LED闪烁控制Proteus仿真运行调试LED闪烁控制程序设计#include /包含AT89X52.H头文件sbit LED = P10; /定义LED是P1.0位的引用符号void Delay() /延时函数 unsigned char i, j; for (i=0;i255;i+) for (j=0;j255;j+);void main () while(1) LED = 0; / P1.0=0,LED点亮 Delay(); /延时 LED = 1; / P1.0=1,LED熄灭 Delay();
24、/延时 【技能训练1-2】LED闪烁控制电路焊接制作LED闪烁控制电路元件清单,如下表所示。元件名称参数数量单片机STC89C521晶振11.0592M1瓷片电容30pF2电解电容10F1IC插座DIP401按键 1电阻10K1电阻2201LED 1程序的3种基本结构 程序由计算机语言组成的语句序列。程序的三种基本结构顺序结构、选择结构、循环结构。结构化程序设计思想任何程序都可以用顺序结构、选择结构、循环结构这3类结构来表示。由这3类基本结构组成的程序称为结构化程序。下面我们用图示的方式来表达3种结构形态。程序的3种基本结构 3种基本结构的传统流程图AaB(a)顺序结构bPAB(b)选择结构a
25、b成立不成立PA成立A成立P不成立(c)当型循环(c)直到循环Proteus能在计算机上完成从原理图与电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证。Keil C51是单片机软件开发系统。可以完成工程建立和管理、编译、连接、目标代码的生成、软件仿真和硬件仿真等完整的开发流程。STC89C52单片机最小系统就是一个基本的、可以工作的单片机系统,主要包括单片机、电源、晶振电路和复位电路。单片机内的各种操作都是在一系列脉冲控制下进行的。各脉冲在时间上是有先后顺序的,这种顺序就称为时序。定时单位有:振荡周期fosc、状态周期、机器周期、指令周期。1个机器周期=6个状态周期=12个
26、振荡周期fosc关键知识点小结Keil C51和PROTEUS软件的主要功能?单片机的组成、主要特点、主要应用领域?如果只使用片外ROM, 引脚应该如何接?为什么?单片机最小系统由哪几部分组成?完成单片机最小系统电路。在工作模块2 中,如果把LED闪烁程序的延时函数Delay()写在main()后面,程序应该如何修改?试一试,把LED的阳极接在P1.0引脚上,完成LED点亮电路和C语言程序设计。试一试,完成用开关控制LED闪烁快和慢两种效果的电路和C语言程序设计。问题与讨论结Thank You !项目3 单片机显示控制项目3 单片机显示控制促成目标知道数码管结构、显示原理和方式;知道C语言的语
27、句结构、数组及函数的相关知识;会数码管动态显示和静态显示的电路和程序设计。终极目标能完成单片机的数码管动态显示和静态显示电路设计与制作;能完成数码管动态显示和静态显示的C语言程序设计、运行与调试。教学目标任务7 LED数码管静态显示设计任务描述利用AT89S52单片机设计一个099计数器。要求使用一个手动计数按钮,实现099的计数,并且通过2个共阴数码管显示计数结果,数码管显示采用静态显示方式。任务分析 LED数码管静态显示电路分析LED数码管显示采用静态显示方式,各位数码管是相互独立的。2个LED数码管是采用共阴LED数码管,这2个共阴LED数码管的公共端必须接地,这样他们才能显示出来;显示
28、计数值十位数的LED数码管接在P0口,显示计数值个位数的LED数码管接在P2口;在任务6中,是使用开关控制跑马灯的,本任务的按键是计数按键,按键接在P1口的P1.0引脚,按键电路同开关电路一样。任务分析 LED数码管静态显示程序分析可以通过字型编码表查找到共阴LED数码管的“0”“9”十个字符的字型编码,然后通过P0口和P2口输出十位和个位数的字型编码。按着数字09 的顺序,把每个数字的字型码按顺序排好,建立的表格。unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;任务分析
29、LED数码管显示实现分析对按键操作进行识别、处理;对按键进行计数;当计数计满时,在从零开始计数;计数结果含有十位和个位,要进行拆分处理;计数结果是十进数,把计数结果对10求余,可得个位数;对10整除,可得到十位数。通过查表方式,分别显示出个位和十位数字。任务实施LED数码管静态显示电路设计按照任务描述,LED数码管静态显示电路是由单片机最小系统、按键电路和采用2个共阴LED数码管组成的静态显示电路构成。在AT89S52单片机P1口的P1.0引脚接一个按键,作为手动计数的按键,用单片机P2口的P2.0P2.6引脚接一个LED共阴数码管,作为099计数的个位数显示,用单片机P0口的 P0.0P0.
30、6引脚接一个LED共阴数码管,作为099计数的十位数显示。任务实施LED数码管静态显示电路设计新建设计文件、保存设计文件选取元器件AT89S52、CRYSTAL、CAP、CAP-ELEC、RES、RESPACK-7、BUTTON和7SEG-COM-CATHODE。放置元器件、编辑元器件、放置终端、连线;属性设置电气规则检测 单击“工具”“电气规则检查”,弹出检查结果窗口,完成电气检测;若检测出错,根据提示修改电路图并保存,直至检测成功。任务实施LED数码管静态显示程序设计建立“LED数码管静态显示”工程项目建立并加载“LED数码管静态显示.c”源文件“LED数码管静态显示”工程配置与编译 跑马
31、灯Proteus仿真运行调试任务实施LED数码管静态显示程序关键代码sbit SW=P15;If(SW=1)/LED一个一个点亮,直至全部点亮else/LED一个一个熄灭,直至全部熄灭LED数码管静态显示程序 定义段码表#include /*定义09十个数字的字型码表*/unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07,0 x7f,0 x6f; unsigned char Count; /定义变量放置计数结果void delay10ms(void) /定义10ms延时函数 unsigned cha
32、r i,j; for(i=20;i0;i-) for(j=248;j0;j-); LED数码管静态显示程序 按键识别、处理if(P1_0=0) /判断按键是否按下 delay10ms(); /延时去抖动 if(P1_0=0) /再一次确定按键是否按下 . /计数处理、显示 while(P1_0=0); /等键释放 LED数码管静态显示程序 计数实现if(P1_0=0) /判断按键是否按下 . Count+; /计数器加1 if(Count=100) /判断计数是否到了100 Count=0; /计数器清0 . LED数码管静态显示程序 计数显示Count=0; /计数变量初始为0P0=tabl
33、eCount/10; /十位数码管显示0P2=tableCount%10; /个位数码管显示0 while(1) . /按键识别和计数程序段 P0=tableCount/10; /显示计数的十位数 P2=tableCount%10; /显示计数的个位数 . 【技能训练3-1】 LED数码管循环显示09焊接制作技能训练要求AT89S52单片机的P1口的P2.0P2.6七个引脚,使其依次连接到一个共阴极LED数码管的ah七个位段控制引脚上,数码管的公共端接地;完成LED数码管循环显示09电路设计、程序设计以及焊接制作,实现在LED数码管上循环显示 09十个数字。【技能训练3-1】 LED数码管循环
34、显示09焊接制作LED数码管循环显示09电路设计LED数码管显示09电路是由单片机最小系统、一片1位的共阴极LED数码管和一片74LS245驱动芯片组成。【技能训练3-1】 LED数码管循环显示09焊接制作LED数码管循环显示09程序设计参考任务7程序设计,在数码管显示程序中,dispcount既用作循环变量使用,又用作数组的下标,其值从0变到9,就能够把数组table中的字符编码一一获得。每获得一个字型码就送于P1口输出,采用的语句为:P1=tabledispcount;LED数码管显示09控制C语言程序见教材。【技能训练3-1】 LED数码管循环显示09焊接制作LED数码管循环显示09电路
35、焊接制作参考数码管循环显示09电路,完成电路板焊接制作,焊接好的电路板如图3-4所示。焊接数码管时,不要用手去折其引角,须紧贴万能板焊接,焊接时温度控制在260度左右,时间不宜过长。硬件检测与调试。软件下载与调试。认识数码管单片机常用LED和LCD两种方式LED数码显示器价格低廉、体积小、功耗低、而且可靠性好,得到广泛使用。单个LED数码管的管脚结构如图所示数码管内部由8个LED(位段)组成;有7个条形LED和一个小圆点LED;当LED导通时,相应的线段或点发光;将这些LED排成一定图形,来显示数字09、字符AF、H、L、P、R、U、Y、符号“”及小数点“.”等。ABCDEFGDP认识数码管L
36、ED数码管可以分为共阴极和共阳极两种结构共阴极结构把所有LED阴极作为公共端(com)连接低电平(接地),通过控制每个LED的阳极电平使其发光或熄灭阳极为高电平LED发光,为低电平熄灭。如显示0时,把a、b、c、d、e、f端接高电平,其他各端接地。共阳极结构是把所有LED的阳极作为公共端(com)连起来,接高电平(如+5V),通过控制每一只LED的阴极电平来使其发光或熄灭,阴极为低电平LED发光,为高电平熄灭数码管引脚及内部结构管脚排列共阳数码管共阴数码管使用数码管注意事项必须注意的是,数码管内部没有电阻,在使用时需外接限流电阻如果不限流将造成发光二极管的烧毁;限流电阻的取值一般使流经发光二极
37、管的电流在1020mA,由于高亮度数码管的使用,电流还可以取得小一些。数码管的字型编码数码管要显示某个字符,必须使它的8个位段上加上相应的电平组合,即一个8位数据,这个数据就叫该字符的字型编码。编码规则如下图所示。共阴极和共阳极数码管的字型编码是不同的,共阴极和共阳极的字型编码是反相的,例如字符“0”:共阴极编码是3FH,二进制形式是00111111;共阳极编码是C0H,二进制形式是11000000,恰好是00111111的反码。D7 D6 D5 D4 D3 D2 D1 D0dpgfedcba数码管的显示方法LED数码管有动态显示和静态显示两种方法静态显示是指数码管显示某一字符时,相应的发光二
38、极管恒定导通或恒定截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或+5V(共阳极)。每个数码管的八个位段分别与一个八位I/O端口引脚相连。I/O端口只要有字型码输出,数码管就显示给定的字符,并保持不变,直到I/O口输出新的段码。数码管的显示方法LED数码管有动态显示和静态显示两种方法动态显示是一种一位一位地轮流点亮各位数码管的显示方式。在某一时段,只选中一位数码管的“位选端”,并送出相应的字型编码,在下一时段按顺序选通另外一位数码管,并送出相应的字型编码。依此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。这一过程称为动态扫描显示。一维数组 在C语言中,数组必须要先
39、定义后使用。一维数组的定义方式为: 类型说明符 数组名整型表达式;类型说明符是数组中各个元素的数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,既数组的长度。例如:int a9; /定义整型数组a,有9个元素,下标从0到8。float b5; /定义实型数组b,有5个元素,下标从0到4。char ch10; /定义字符数组ch,有10个元素,下标从0到9。 注意事项数组的类型是指构成数组的元素的类型;对于同一个数组,其所有元素的数据类型都是相同的数组名的书写规则应符合标识符的命名规则;不能与其它变量同名常量表达式可以是符号常量或常量表达式。常量表达式不能包含变量即
40、不能对数组的大小作动态定义 【技能训练3-2】使用74LS47实现0-99计数显示认识74LS47是由与非门、输入缓冲器和7个与或非门组成的BCD-7段数码管译码器/驱动器;能把4位二进制编码十进制数(BCD码)转化成七段字形码;输出低电平有效的七段字形码,并能驱动一个七段数码管。也就是说:74LS47能直接把数字转换为数码管的显示数字;能简化程序,节约单片机的IO开销。 74LS47输入/输出引脚4位二进制编码十进制数(BCD码),从A、B、C和D引脚输入;译码成七段字形码,从QA、QB、QC、QD、QE、QF和QG引脚输出。输入DCBA=0010 ,输出abcdefg=0010010,显示
41、“2”;输入DCBA=0110 ,输出abcdefg=1100000,显示“6”。0-99计数显示电路设计 采用七段字形译码器74LS47,输出字型码控制显示内容;74LS47的LT、RBI与BI/RBO为无效,接高电平;数码管是共阳极数码管。 0-99计数显示程序 void main(void) Count=0; /计数变量初始为0 P2=0 x0; /十位、个位数码管显示0 while(1) /按键扫描,计数显示处理 /*十位数BCD码(Count/104)和个位数BCD码(Count%10)相或*/ P2=(Count/104)|(Count%10); while(P1_0=0); 任务
42、8 LED数码管动态扫描显示设计任务描述显示是由6个共阴LED数码管构成,使用AT89S52单片机,P0口输出显示段码,经由一片74LS245驱动输出给LED数码管,P1口输出位码(片选)给LED数码管。通过动态扫描程序使6个数码管显示“123456”任务分析 LED数码管动态扫描显示电路分析LED数码管动态扫描显示电路的设计方法如下:将数码管所有位的相同“段选端”都并接起来,由一个8位I/O端口控制(在本任务中采用的是P0口),如:数码管的所有“a” 段都并接;各位数码管的公共端(com端),用作“位选端”,分别接另一个I/O端口的I/O引脚(在本任务中采用的是P1口)。数码管动态扫描显示电
43、路的“段选端”是并接的(公用的),并由“位选端”分别控制各数码管进行显示。任务分析 LED数码管动态扫描显示程序分析动态扫描是采用分时的方法,是轮流点亮各位数码管的显示方式,它在某一时间段,只让其中一位数码管的“位选端”(com端)有效,并送出相应的段码。LED数码管动态扫描过程如下:首先从段选线上送出段码,再控制位选端,字符就显示在指定LED数码管上。其它LED数码管的位选端都无效,LED数码管都处于熄灭状态。持续1.5ms时间,然后关闭所有显示;接下来又送出新的段码,按照上述过程又显示在另外一位LED数码管上,直到每一位LED数码管都扫描完为止。任务分析 LED数码管动态扫描显示程序分析L
44、ED数码管动态扫描显示其实就是轮流依次点亮的,但由于人的视觉驻留效应,因此当每个LED数码管点亮的时间小到一定程度时,人就感觉不出字符的移动或闪烁,觉得每位LED数码管都一直在显示,达到一种稳定的视觉效果。任务实施LED数码管动态扫描显示电路设计按照任务描述,LED数码管静态显示电路是由单片机最小系统、按键电路和采用2个共阴LED数码管组成的静态显示电路构成。在AT89S52单片机P0口输出显示段码,P0口的P0.0P0.6通过一片74LS245依次接段码口ag;P1口输出位码;用单片机P1口的P1口的P1.0P1.5依次接位码口16。任务实施LED数码管动态扫描显示电路设计新建设计文件、保存
45、设计文件选取元器件AT89S52、CRYSTAL、CAP、CAP-ELEC、RES、74LS245和7SEG-MPX6-CC。放置元器件、编辑元器件、放置终端、连线;属性设置电气规则检测 单击“工具”“电气规则检查”,弹出检查结果窗口,完成电气检测;若检测出错,根据提示修改电路图并保存,直至检测成功。任务实施LED数码管动态扫描显示程序设计建立“LED数码管动态扫描显示”工程项目;建立并加载“LED数码管动态扫描显示.c”源文件;“LED数码管动态扫描显示”工程配置与编译; 跑马灯Proteus仿真运行调试。数码管动态显示程序设计定义段码表#include unsigned char code
46、 Tab=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C;unsigned char code Col=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf;void Delay() unsigned char i; for(i=0;i250;i+);数码管动态显示程序设计主函数void main() /同时显示123456 unsigned char j; while(1) for(j=1;j0;Delay-) 函数中Delay就是一个形式参数,而在主函数中调用时写的: mDel
47、ay(1000); 函数的返回值 在C中,一般使用return语句由被调函数向主调函数返回值,该语句有下列用途:它能立即从所在的函数中退出,返回到调用它的程序中去;返回一个值给调用它的函数。 返回语句一般有如下的形式: return; return 表达式; return(表达式); 任务9 LCD液晶显示信息牌设计任务描述为了进一步掌握LCD1602液晶显示模块的使用和编程方法,设计一个基于LCD1602的信息显示牌。要求信息显示牌显示的格式为:第1行显示:G10 arrival time(G10到站时间)第2行显示:14:08(居中显示时间,由左向右分别为:时、分)任务分析 LCD液晶显示
48、信息牌电路分析LCD液晶显示信息牌电路是由单片机最小系统、驱动电路和LCD液晶显示模块组成。任务分析 LCD1602关键函数LCD1602关键函数主要有写指令函数WrOp()、写数据函数WrDat()和LCD1602初始化函数LCD_Init()。LCD液晶显示模块如何显示信息确定每行第一个字符的显示地址第1行第一个字符的显示地址是:00H+80H=80H;第2行第一个字符的显示地址是:40H+80H=C0H。如何确定每行显示起始字符的显示位置。每行第一个字符的显示地址+右移n个字符任务实施LCD液晶显示信息牌电路设计如图3-13所示,8位双向数据线D0D7接P0口;寄存器选择RS、读写信号线
49、R/W、控制液晶模块执行命令的使能端E(或EN)分别接P1口的P1.0、P1.1和P1.2引脚。考虑到P0口驱动能力,所以在P0口与LCD1602液晶显示模块之间增加1个八双向总线收发器74LS245。任务实施LCD液晶显示信息牌电路设计新建设计文件、保存设计文件选取元器件AT89C52、CRYSTAL、CAP、CAP-ELEC、RES、74LS245、和LM016L(LCD1602液晶显示模块)。放置元器件、编辑元器件、放置终端、连线;属性设置电气规则检测 单击“工具”“电气规则检查”,弹出检查结果窗口,完成电气检测;若检测出错,根据提示修改电路图并保存,直至检测成功。任务实施LCD液晶显示
50、信息牌程序设计建立“LCD液晶显示信息牌”工程项目;建立并加载“LCD液晶显示信息牌.c”源文件;“LCD液晶显示信息牌”工程配置与编译; LCD液晶显示信息牌Proteus仿真运行调试。LCD液晶显示信息牌详细代码,见教材【技能训练3-4】按键控制LCD1602信息牌换屏显示 技能训练要求在任务9的基础上,增加2个按键,完成LCD1602信息牌能换屏显示不同高铁车次和到站时间。按键控制LCD1602信息牌换屏显示电路设计根据技能训练要求,使用2个按键控制LCD1602信息牌能换屏显示,其电路主要由单片机最小系统、按键控制电路、驱动电路和LCD液晶显示模块组成。在LCD液晶显示信息牌电路图基础
51、上增加2个按键,SW1按键接P1.4,SW2按键接P1.7。【技能训练3-4】按键控制LCD1602信息牌换屏显示 【技能训练3-4】按键控制LCD1602信息牌换屏显示 按键控制LCD1602信息牌换屏显示实现分析按键控制LCD1602信息牌能换屏显示不同高铁车次和到站时间,实现过程如下:当SW1按键按下时,LCD1602信息牌显示G10到站时间;当SW2按键按下时,LCD1602信息牌显示G10到站时间。按键控制LCD1602信息牌换屏显示详细代码,见教材数码管可以分为共阴极和共阳极两种结构,使数码管上显示某个字符,必须使它的8位段选线上加上相应的电平组合,既段码。单个数码管可以采用静态显
52、示;多位数码管显示有动态扫描显示和静态扫描显示两种方法。当显示位数较多时,采用动态扫描方式;若显示位数较少,采用静态扫描显示方式。选择结构程序控制语句:If语句、switch语句。循环结构程序控制语句:while语句、do-while语句、for语句。数组必须由具有相同数据类型的元素构成。数组必须要先定义,后使用关键知识点小结LED数码管有哪两种结构?是如何实现的?请简要说明LED数码管静态显示和动态显示的特点,实际设计时应如何选择?动态显示的过程是什么?在用共阳极数码管显示的电路中,如果直接将共阳极数码管换成共阴极数码管,能否正常显示?为什么?应采取什么措施?工作模块八中,如果轻触开关改接P
53、1.7,并且要求实现059循环计数,程序应如何修改?工作模块七,数码管动态显示程序设计时如果把延时时间改为1s,会出现什么情况。试一试,完成0999的计数器设计。问题与讨论结Thank You !项目4 单片机键盘设计项目4 单片机键盘设计促成目标知道键盘的接口方法和编程方法;会按键和键盘电路设计的方法;会编写键盘扫描和按键识别控制的C语言程序。终极目标能完成单片机的键盘电路的设计与制作;能完成键盘扫描和按键识别控制的C语言程序设计、运行及调试。教学目标任务10 独立式键盘设计任务描述使用AT89S52单片机,设计一个具有8个按键的独立式键盘,每个按键对应一个LED。功能要求:无键按下时,所以
54、按键所接单片机引脚输出全为“1”,LED全部熄灭;有键按下时,按键所接单片机引脚输出为“0”,其所对应LED点亮。任务分析 独立式键盘电路分析独立式键盘的特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O线的状态。每个按键的一端接地;按键的另一端与P0口的一个引脚相连,同时经上拉电阻接电源(+5V)。其中上拉电阻保证了按键在断开时,I/O线有高电平。当无键按下时,P0的8个I/O口均通过电阻接高电平,信息为“1”;当有键按下时,将使其对应的I/O口通过该键接地,信息为“0”。任务分析 独立式键盘程序分析判断是否有键按下无键按下时,P0的8个I/O口均通过电阻接高电平,信息为
55、“1”;有键按下时,将使其对应的I/O口通过该键接地,信息为“0”。识别按下的按键通过程序来检测单片机P0口的8个I/O口线哪个是“0”,这样就可以知道是否有键按下,并能识别出是哪一个键按下。程序识别了被按下的按键后就可以通过P1口输出,点亮对应的LED。由于LED阳极接高电平,在其阴极所接的端口输出“0”时,LED被点亮,反之熄灭。任务实施独立式键盘电路设计单片机I/O口引脚分配8个按键接P0口;按键一端接地;另一端接P0口引脚,并通过上拉电阻接+5V。8个LED接P1口,LED采用共阳极接法。任务实施独立式键盘电路设计新建设计文件、保存设计文件选取元器件AT89S52、CRYSTAL、CA
56、P、CAP-ELEC、RES、LED-RED和BUTTON。放置元器件、编辑元器件、放置终端、连线;属性设置电气规则检测 单击“工具”“电气规则检查”,弹出检查结果窗口,完成电气检测;若检测出错,根据提示修改电路图并保存,直至检测成功。任务实施独立式键盘程序设计建立“独立式键盘”工程项目;建立并加载“独立式键盘.c”源文件;“独立式键盘”工程配置与编译; 独立式键盘Proteus仿真运行调试。独立式键盘详细代码,见教材任务实施判断是否有按键按下while(x=0 xff) /循环判断是否有键按下 x=P0; /读键盘状态delay10ms(); /延时10ms去抖动x=P0; /再次读键盘状态
57、if(x=0 xff) continue;/如果无键按下则认为是按 /键抖动,重新扫描键盘任务实施根据键值点亮对应的发光二极管switch(x) case 0 x01:P1=0 xfe; break; /点亮第一个发光二极管 case 0 x02:P1=0 xfd; break; /点亮第二个发光二极管 case 0 x04:P1=0 xfb;break; /点亮第三个发光二极管 case 0 x08:P1=0 xf7; break; /点亮第四个发光二极管 case 0 x10:P1=0 xef; break; /点亮第五个发光二极管 case 0 x20:P1=0 xdf; break;
58、/点亮第六个发光二极管 case 0 x40:P1=0 xbf; break; /点亮第七个发光二极管 case 0 x80:P1=0 x7f; break; /点亮第八个发光二极管 default:break;认识键盘键盘是单片机应用系统中人机交流不可缺少的输入设备。键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件。键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换为电气上的逻辑关系(1和0)。常见的键盘种类有:查询(独立)式键盘 矩阵式键盘 键盘分类 按键按照结构原理可分为两类触点式开关按键,如机械式开关、导电橡胶式开关等;无触点开关按键,如电气式按键,磁感应按键等。
59、前者造价低,后者寿命长。按键按照接口原理可分为两类 编码键盘,主要是用硬件来实现对按键的识别,硬件结构复杂;非编码键盘,主要是由软件来实现按键的定义与识别,硬件结构简单,软件编程量大。在这里,我们主要介绍单片机中常用的触点式开关按键、非编码键盘。键盘防抖动措施机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随一定时间的触点机械抖动,然后才能稳定下来。触点抖动过程如右图所示,抖动时间的长短与开关的机械特性有关,一般为510ms。若有抖动,按键按下会被错误地认为是多次操作。 防抖动措施为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。键数较少时,采用
60、硬件去抖;键数较多时,采用软件去抖。 软件去抖的步骤在检测到有按键按下时,执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时程序;再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而消除抖动的影响。软件去抖流程图 在检测到有按键按下时执行一个10ms左右延时程序;再检测该键电平是否仍保持闭合状态。若按键仍保持闭合状态电平,则确认该键是处于闭合状态。 矩阵式键盘的结构原理矩阵式键盘的结构在单片机应用系统中,若使用的按键较多时,通常采用矩阵式键盘。矩阵式键盘是由行线和列线组成的,按键位于行、列的交叉点上,其结构如图4-7所示。矩阵式键盘的结构与原理矩
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 域名及其管理
- 肩关节离断术后护理
- 肘外翻病人的护理
- 2024年幼儿园家长工作总结报告
- 2024年放射科年终工作总结
- EHS管理知识培训
- 2024年度软件开发与维护合同(2024版)
- 氢气安全知识培训
- 玉林师范学院《电子商务概论》2021-2022学年第一学期期末试卷
- 2024年度企业间广告位租赁合同
- 宫颈癌术后基础护理
- 【语文】《老人与海(节选)》课件++2023-2024学年统编版高中语文选择性必修上册
- 认识水稻课件教学课件
- 银行客户投诉处理流程制度
- 2024贵州茅台酒厂(集团)保健酒业销售有限公司招聘20人笔试备考题库及答案解析
- 2024年高考语文二轮复习:语言综合运用新情境新题型(练习)
- 电机制造中的电机加工与装配技术考核试卷
- (统编2024版)道德与法治七上10.2滋养心灵 课件
- DB11∕T 1902-2021 政务服务中心服务与管理规范
- 雅马哈便携式扩声系统STAGEPAS 600i使用说明书
- 2024年河北高中学业水平合格性考试地理试题真题(含答案)
评论
0/150
提交评论