版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
工作模块1:单片机开发环境搭建工作模块1:目录单片机开发环境搭建任务1-3:STC-ISP软件使用及程序下载任务1-2:ProteusISIS安装及基本使用任务1-1:KeilC51软件安装及使用1.1单片机概述1.2单片机内部结构及外部引脚1.3单片机存储器1.4ProteusISIS安装及基本使用1.5单片机最小系统初始单片机
目录
1.1什么是单片机?
1.2单片机内部结构与外部引脚?
1.3单片机的存储器?任务1-1:KeilC51软件安装及使用1.1单片机概述1.1.1单片机定义1.1.2单片机与通用计算机PC之异同1.1.3单片机应用系统1.1.4单片机特点及应用领域1.1单片机概述
将CPU、存储器、输入和输出接口、定时/计数器和中断系统等集成在一个芯片上的微型计算机称为单片微型计算机,简称单片机(又称微控制器MCU)。
CPU存储器定时/计数器中断系统P0-P3TxDRxD
TINT并行I/O口串行I/O口集成1.1.2单片机与通用计算机PC之异同
相同点:均由CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口等)等组成;
不同点:PC机的上述部件以芯片形式安装在主板上;单片机的上述部件被集成到单芯片中。
通用PC包括:键盘、显示器、鼠标、硬/软/光驱、音箱、打印机、扫描仪等外设。
单片机则只是一片集成电路,依引脚数量,集成不同程度的片上资源。组成功能应用1.1.2单片机与通用计算机PC之异同组成功能应用擅长于数据运算、采集、处理、存储和传输专长是测控,即控制(或受控于)外设。往往嵌入到某个仪器/设备/系统中,使其达到智能化的效果。1.1.2单片机与通用计算机PC之异同组成功能应用单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机,是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专业的硬件和软件。PC机体积大,功耗大,价格高,用途较固定,属通用计算机。易于学习掌握和使用,但用于控制时必须制作或购买专用的接口卡,并编制专门的应用软件。1.1.3单片机应用系统单片机应用系统单片机+接口电路及外设等+软件硬件单片机应用系统由硬件和软件组成硬件是应用系统的基础软件是在硬件的基础上对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可1.1.4单片机应用领域特点:(1)控制性能和可靠性高(2)体积小、价格低、易于产品化单片机的主要应用领域如下:(1)智能仪器仪表1.1.4单片机应用领域单片机的主要应用领域如下:(2)汽车电子1.1.4单片机应用领域单片机的主要应用领域如下:(3)工业检测和控制1.1.4单片机应用领域单片机的主要应用领域如下:(4)机电一体化产品1.1.5单片机发展阶段自
1976年Intel公司推出MCS-48系列单片机以来,单片机发展经历了如下四个阶段:第一阶段(1974年~1976年):单片机初级阶段。第二阶段(1976年~1978年):低性能单片机阶段。第三阶段(1978年~1983年):高性能单片机阶段。第四阶段(1983年~现在):8位单片机巩固发展及16位、32位单片机推出及普及阶段。在20世纪80、90年代,在我国使用最多的8位单片机还是Intel的MCS-51系列单片机以及与其兼容的单片机(称为51系列单片机)。MCS是Intel系列符号,如MCS-48/51、MCS-96系列单片机。
国内外主流51单片机有:151.1.5单片机发展阶段1)Intel的8051系列单片机(早期型号80C31、80C51、87C51,80C32、80C52、87C522)Atmel公司生产的AT89系列单片机(89C51、89C52、89C2051,89S51,89S52)3)STC系列单片机(STC89/90系列、STC12/11系列、STC15系列,如89c51/52、90c516等)4)Philips、华邦、Dallas、Siemens等公司的许多产品。161.1.5单片机STC系列STC(宏晶科技)是深圳的一家8051单片机设计生产公司。目前STC是全球最大的8051单片机设计公司,推出了STC89/90系列、
STC12/11系列、STC15系列等多个系列的单片机,被评为8051单片机全球第一品牌。STC单片机STC89/90系列除具有传统51的标准功能外,还具有32位I/O口线,3个16位定时器/计数器和看门狗定时器、4个外部中断、一个7向量4级中断结构等,最高运行频率35MHz,6T/12T可选。171.1.5其他系列单片机除了51单片机外,某些非51单片机也得到了较为广泛的应用,目前应用较广泛是AVR、PIC与STM32系列单片机,(2)AVR系列单片机AVR单片机是Atmel公司研发出的增强型内置Flash的RISC精简指令集高速8位单片机,其执行速度在相同的振荡频率下是8位MCU中最快的一种单片机,广泛应用于计算机外部设备、工业实时控制、仪器仪表、通信设备、家用电器、宇航设备等各个领域。(3)PIC系列单片机PIC单片机是Microchip(微芯)公司的产品,也是一种精简指令型的单片机,可分为:基本级系列(如PIC16C5X)、中级系列(如PIC12C6XX)、高级系列(如PIC17CXX)。
PIC单片机的主要产品是PIC16C系列和17C系列8位单片机,适用于用量大、价格敏感的产品。在办公自动化设备、智能仪器仪表、汽车电子、工业控制等领域都有广泛应用。181.1.5其他系列单片机除了51单片机外,某些非51单片机也得到了较为广泛的应用,目前应用较广泛是AVR、PIC与STM32系列单片机,(4)16位单片机MSP430美国德州仪器(TI)公司的MSP430。MSP430系列单片机是1996年推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器,一片芯片就可构成一个数据采集系统,设计使用非常方便(5)STM32单片机STM32系列单片机是由意法半导体(STMicroelectronics)公司开发的32位微处理器,性价比超高,其内核是专为要求高性能、低成本、低功耗的嵌入式应用设计的Arm-Cortex架构,功能极其强大。任务1.KeilC51的安装2.KeilC51的注册3.KeilC51的使用第1步:打开Keil编译器,创建工程项目,保存到一个新建的文件夹中,例如test.第2步:找到刚创建的文件夹来放工程相关的文件,给工程项目命名,例如test,点击保存。第3步:选择芯片类型。第4步:点击“创建新文档”图标,或选择菜单File→new来创建工程的C文件。第5步:把C文件添加到工程文件里,第6步:点击之前保存的C文件,然后点击Add,就添加到工程目录中了.第7步:进行工程设置。第8步:按下箭头所指的“编译”按钮,对程序进行编译。1.2单片机内部结构及外部引脚1.2.1单片机内部结构1.2.2单片机外部引脚1.2.1单片机内部结构时钟电路CPUROMRAMT0T1中断系统串行接口并行接口P0P1P2P3TXDRXDINT0INT1定时计数器CPU:8位,具有运算和控制功能。内部ROM:4KB掩膜ROM,用于存放程序、原始数据和表格。内部RAM:共256个RAM单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器占用两个16位的定时/计数器,实现定时或计数功能。并行I/O口:4个8位的I/O口一个中断控制系统:5个中断源可产生时钟脉冲序列,允许晶振频率6MHz和12MHz。TXD和RXD:一个全双工串行口。1.2.2单片机外部引脚1.单片机封装DIP封装PLCC封装TQFP封装1.2.2单片机外部引脚1.单片机封装1.2单片机及外部引脚P3口线的第二功能2、振荡电路:XTAL1、XTAL23、复位引脚:RST4、并行口:P0、P1、P2、P37、ALE:地址锁存允许信号端。用于把P0口输出的低8位地址锁起来,实现低8位地址和数据的隔离。当8051上电正常工作后,ALE引脚不断向外输出正脉冲信号,此频率为振荡器频率fosc的1/61、电源线:VCC(+5V)、VSS(地)5、EA:外部程序存储器地址允许输入端/固化编程电压输入端。当EA=1时,CPU先访问片内程序存储器再访问外部ROM的内容。EA=0引脚接低电平(接地)时,CPU只访问外部外部ROM6、PSEN:程序存储允许输出信号端。低电平时,可实现对外部ROM单元的读操作。1.2.1单片机外部引脚P3口线的第二功能引脚第二功能P3.0RXD(串行口接收数据输入)P3.1TXD(串行口发送数据输出)P3.2INT0(外部中断0输入)P3.3INT1(外部中断1输入)P3.4T0(定时器0的外部计数脉冲输入)P3.5T1(定时器1的外部计数脉冲输入)P3.6WR(片外数据存储器写选通控制输出)P3.7RD(片外数据存储器读选通控制输出)1.3单片机存储器1.3.1片内数据存储器RAM1.3.2片内程序存储器ROM1.3.3外部数据存储器1.3单片机存储器数据存储器——RAM(RandomAccessMemory)程序存储器——ROM(ReadOnlyMemory)闪速存储器——FlashMemoryEPROM——(UV)ErasableProgrammableROMEEPROM/E2PROM——ElectricalErasableProgrammableROM静态存储器SRAM——StaticRAM动态存储器DRAM——DynamicRAM1.3单片机存储器
单片机在存储器的设计上,将程序存储器ROM和数据存储器RAM分开,51系列单片机的存储器从物理上分四个存储空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。
从用户的角度考虑,80C51单片机的存储器又可分三个逻辑空间(如图2-10所示):片内、片外统一编址的64KB(0000H~0FFFFH)程序存储器地址空间;片内256B的数据存储器地址空间(00H~0FFH,其中80H~0FFH内仅有二十几个字节单元供特殊功能寄存器SFR专用);片外可扩展的64KB(0000H~0FFFFH)数据存储器地址空间。1.3单片机存储器1.3.1
片内RAM片内RAM128字节(00H—7FH)数据缓冲区/堆栈区图1-31片内存储器片内RAM前32个单元是工作寄存器区(00H—1FH),分为4组,每组8个单元,符号为R0~R7。CPU通过程序状态字寄存器(PSW)中的RS1和RS0的状态选定选用哪组寄存器组工作。1.3.1
片内RAM片内RAM有128个可按位寻址的位,占16个单元。位地址编号为:00H—7FH,分布在20H—2FH单元(bit,sbit定义的变量存储在此区域)数据缓冲区/堆栈区图1-31片内存储器1.3.1
片内RAM用户RAM区分布在30H~7FH,用于数据缓冲区或堆栈区。数据缓冲区/堆栈区图1-31片内存储器1.3.1
片内RAM片内高128字节RAM表1-4特殊功能寄存器内部数据存储器高128字节单元的地址为80H~0FFH,其间离散分布着若干个特殊功能寄存器(简称SFR)SFR共计21个,其中地址号能被8整除的SFR中的各位也可按位寻址(共11个可以进行位寻址)1.3.1
片内RAM片内高128字节RAM
程序计数器PC:PC是一个16位的计数器,其内容为将要执行的指令地址,寻址范围达64KB。PC有自动加1的功能,以实现程序的顺序执行。PC没有地址,是不可寻址的,因此用户无法对它进行读写。但在执行转移、调用或返回等指令时能自动改变其内容,以改变程序的执行顺序。
累加器ACC及B寄存器:ACC简称A,是所有特殊功能寄存器中最重要、使用频率最高的寄存器,常用于存放参加算术或逻辑运算的两个操作数中的一个及运算结果。B寄存器也主要用于乘法和除法运算,也可作为一般寄存器使用。1.3.1
片内RAM片内高128字节RAM程序状态字寄存器PSW:PSW(8位)是一个标志寄存器,用于存放指令运行结果的状态信息,以供程序查询和判别。有些位在执行中硬件自动设置,而有些位由用户自行设定。详见表1-5。PSW(0D0H)D7D6D5D4D3D2D1D0位定义CyAcF0RS1RS0OV-P位含义进位标志辅助进位标志用户自定义位工作寄存器选择位溢出标志未定义位奇偶标志表1-5PSW的位定义1.3.1
片内RAM片内高128字节RAMI/O口寄存器:单片机内部有4个I/O口寄存器P0、P1、P2、P3,实际上就是P0~P3口所对应的I/O口锁存器,用于锁存通过端口的数据,分别由名为P0、P1、P2、P3的四个SFR代表。
数据指针寄存器DPTR:
DPTR为16位,包括高8位DPH、低8位DPL两部分,用于外部存储器寻址。1.3.2
片内ROM
片内程序存储器ROM主要是用来存放计算机中所事先编制好的程序和表格常数。
51单片机芯片中有4KB的片内程序内存单元,其地址为0000H~0FFFH,其中地址为0003H~002AH的单元在使用时是有特殊规定的。地址为0000H~0002H的3个单元是系统的启动单元,在单片机进入复位后,会自动从0000H单元开始执行指令程序。这3个单元并不能存放任何完整的程序。地址为0003H~002AH的40个单元则被平均分为5段,每段8个单元,分别用作5个中断源的中断地址区。1.3.2
片内ROM1.3.3
片内ROM
外部数据存储器一般由静态RAM芯片组成。扩展存储器容量的大小,由用户根据需要而定,但51单片机访问外部数据存储器可用1个特殊功能寄存器——数据指针寄存器DPTR进行寻址。由于DPTR为16位,可寻址的范围可达64KB,所以扩展外部数据存储器的最大容量是64KB。任务1-2:ProteusISIS安装及基本使用
目录
1.4ProteusISIS基本操作
1.5单片机最小系统任务1-2:ProteusISIS安装及基本使用如何绘制单片机的最小系统?1.4ProteusISIS基本操作1.5.1时钟电路单片机必须在时钟的驱动下才能进行工作。MCS-51单片机内部具有一个时钟振荡电路,只需要外接振荡器,即可为各部分提供时钟信号。典型的时钟电路在电路中,电容通常取30pF,晶振的取值通常为:1MHZ-33MHZ(不同型号的单片机的上限频率可能有差别)。1.5.1时钟电路单片机型号最高时钟频率803112MHz805112MHz875112MHzAT89C205124MHzAT89C5133MHzAT89C5233MHzAT89S5324MHz常用单片机的最高时钟频率1.5.2时序(1)节拍:把振荡脉冲的周期定义为节拍,用P表示,也就是晶振的振荡频率。(2)状态:振荡脉冲经过二分频后,就是单片机时钟信号的周期,定义为状态,用S表示。(3)机器周期:51系列单片机采用定时控制方式,有固定的机器周期。规定一个机器周期的宽度为6个状态,即12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。1个机器周期=6个状态周期=12个时钟周期1.5.2时序(4)指令周期:指令周期是取出一条指令并执行这条指令的时间。一般由若干个机器周期组成,是从取指令、分析指令到执行完所需的全部时间。指令不同,所需的机器周期数也不同。对于一些简单指令一般为单机器周期,对于一些比较复杂的指令一般为双机器周期,只有乘、除指令为4个机器周期。1.5.3复位电路
单片机在重新启动时都需要复位,单片机有一个复位引脚输入端RST。在RST上加一个维持两个机器周期以上的高电平,则单片机被复位。常用51单片机复位电路包括三种:上电自动复位电路、手动复位电路、看门狗复位电路1.5.3复位电路1.阻容上电自动复位电路这种电路利用电容上电压不能突变而是按指数规律上升或下降的特性,产生所需的复位脉冲优点:使用最为普遍且成本低廉的复位电路缺点:在电源出现瞬时跌落的情况下,将无法获得参数符合要求的复位脉冲或根本无法产生复位脉冲。1.5.3复位电路2.手动复位电路在系统运行过程中,有时可能需要对系统进行复位,以避免对硬件经常加电或断电而造成的伤害,我们可以采用手动复位的方式。具体的电路如图所示。按键复位是通过按压键使复位端经电阻与VCC接通得到短时的高电平。1.5.3复位电路3.看门狗复位电路RSTMCS-51R2R1﹠MAX813LPFIMRRESETWDOWDI未稳压电源P1.0外接了自动复位芯片MAX813L1.5.4电源电路电源电路单片机芯片的第40脚为正电源引脚VCC,一般外接+5V电压,第20脚为接地引脚GND。要获得5V的电源方法很多。比如3节1.5V电池串联、稳压电源、5V的手机充电适配器、USB接口提供5V电源。绘制单片机最小系统电路序号元件名称元件型号元件参数1单片机AT89C52
2瓷片电容CAP30pF3电解电容CAP-ELEC22uF4晶振CRYSTAL12MHZ5按键BUTTON
6电阻RES10k、470仿真电路元件明细任务1-3STC_ISP软件的使用及程序下载直接在STC_ISP软件中讲解再
见工作模块2:LED灯显示控制
工作模块1:目录2.4C51的文档结构2.5C语言基本结构LED灯显示控制任务2-1LED灯闪烁任务2-28个LED灯流水控制2.1单片机的并行I/O口使用2.2LED灯显示电路的硬件设计2.3单片机的编程语言2.6数据类型及常量变量2.7C51运算符2.8函数使用任务实施知识链接
目录
2.1.LED灯闪烁控制的电路图
单片机的并行IO口使用。
2.2.LED灯显示电路的硬件设计
2.3.单片机的编程语言2.4.C文档结构任务2-1LED灯闪烁控制任务2.1LED灯闪烁控制电路序号元件名称元件型号元件参数1单片机AT89C52
2瓷片电容CAP30pF3电解电容CAP-ELEC22uF4晶振CRYSTAL12MHZ5按键BUTTON
6发光二极管红LED-RED
7电阻RES10k、4702.1LED灯闪烁控制电路LED闪烁电路所用电子元器件2.1单片机I/O口应用输入/输出端口四个双向并行I/O端口:
P0.0~P0.7P1.0~P1.7P2.0~P2.7P3.0~P3.7共32条线XTAL2
XTAL1EAALEPSEN2.1P0口应用(1)作为通用I/O口使用时,由于P0口内部电路是漏极开路,当需要输出高电平时,需要外接上拉电阻。使用时区分读引脚:需要先在端口写入1,即P0=0xff。读端口:是为了适应对I/O口进行“读-修改-写”操作语句的需要。例如,C51语句:P0=P0&0x0f;//&按位取“与”,将P0口的高4位引脚清零后输出。
读端口是由CPU自行完成的,在编程方面无须做前期处理。(2)在进行单片机系统扩展时,P0可以作为“低位地址/数据”线分时复用,P0口是具有高电平、低电平和高阻抗3种状态的端口。因此,是一个真正的双向端口,简称双向口。
(3)每个引脚能驱动8个TTL负载,2.1P1口应用
通用I/O口:P1端口是一个带内部上拉电阻的8位准双向I/O端口。P1端口的每一位都可驱动4个TTL负载,读引脚时,需要先向端口写入1,即P1=0xff;。小提示:准双向口,是说具备双向工作的能力,由于内部电路的结构,不具备高阻态。
2.1P2口应用
(1)作为通用I/O口使用:P2端口的每一位都可驱动4个TTL负载,读引脚时,需要先向端口写入1,即P2=0xff;。(2)高8位地址线使用:P2端口在访问外部程序存储器或16位地址的外部数据存储器时,P2送出高8位地址数据,与P0口的低8位地址数据共同组成16位地址总线,可寻址64KB地址空间,当P2口作为高8位地址总线口使用时,就不能再作为通用I/O口使用。2.1P3口应用
作为通用I/O口使用:P3端口是一个带内部上拉电阻的8位准双向I/O端口。P3端口的每一位都可驱动4个TTL负载,读引脚时,需要先向端口写入1,即P3=0xff;P3端口除作为一般I/O外,还具有复用功能。2.1P3口应用2.1I/O应用总结任一I/O口都可独立作I/O使用,但P0和P2访问外部存储器时,将不能作通用I/O口用;1I/O口作为输入时,必须通过程序输出1;2P1、P2、P3为“准双向口”,无需外接上拉电阻;3P0口没有内部上拉电阻,作输入时需外接上拉电阻。401021203042.2LED灯显示电路的硬件设计
发光二极管简称LED灯(LightEmittingDiode),主要由红色、绿色、黄色和蓝色,是半导体二极管的一种,具备单向导电性,即正向偏置导通,反向偏置截止。式中
U——LED电路电压,ULED
为LED管压降;推荐值为:R=(5V-1.8V)/10mA=320Ω;
一般选择470Ω~1KΩ电阻。2.2LED灯显示电路的硬件设计51单片机输出低电平时,驱动能力很强,可达20mA~50mA;输出高电平时,驱动能力弱,电流在5mA以下。a图灌电流
b拉电流2.3
单片机编程语言大致分成三类:机器语言、汇编语言、高级语言。机器语言汇编语言高级语言2.4
C文档组成在C语言程序中,子程序的作用是由函数来实现的,函数是C语言的基本组成模块,一个C语言程序就是由若干个模块化的函数组成的。C程序都是由一个主函数main()和若干个子函数构成,有且只有一个主函数,程序由主函数开始执行,主函数根据需要来调用其他函数,其它函数可以有多个。2.2LED灯显示电路的硬件设计//任务2-1点亮一个LED灯
//注解符号#include<reg51.h>//预编译命令sbitP1_0=P1^0;
//定义可寻址位voiddelay();
//函数的声明voidmain()
//主函数{while(1)
{P1_0=0;
//点亮1个LED灯
delay();
P1_0=1;
//LED灯熄灭
delay();}}voiddelay()
//延时子函数{
unsignedinti;
for(i=0;i<50000;i++);}任务2-28个LED灯流水控制2.5C语言基本结构第三步掌握程序架构第二步第一步函数编写语句实现单片机编程技巧任务2-28个LED灯流水控制2.5C语言基本结构2.5C语言基本结构——表达式语句表达式语句是最基本的C语言语句。表达式语句由“表达式”加上分号“;”组成,其一般形式如下:
P1_0=0;//赋值语句
在C语言中有一个特殊的表达式语句,称为空语句。
空语句中只有一个分号“;”,程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。
在C51程序中常常把空语句作为循环体,用于消耗CPU时间等待事件发生的场合。
如:for(j=0;j<255;j++);while(1);程序设计时,通常把该语句作为停机语句使用;2.5C语言基本结构——复合语句把多个语句用大括号{}括起来,组合在一起形成具有一定功能的模块,这种由若干条语句组合而成的语句块称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。{}内部的各条语句都必须以“;”结尾,在“}”之外,不能加“;”。voidmain(){//函数体的复合语句开始while(1){//while循环体的复合语句开始P1_0=0;
delay(10); P1_0=1;
delay(10);//注意:复合语句的各条语句都必须以“;”}结尾,在“}”之外,不能加“;”}2.5C语言基本结构——复合语句把多个语句用大括号{}括起来,组合在一起形成具有一定功能的模块,这种由若干条语句组合而成的语句块称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。{}内部的各条语句都必须以“;”结尾,在“}”之外,不能加“;”。voidmain(){//函数体的复合语句开始while(1){//while循环体的复合语句开始P1_0=0;
delay(10); P1_0=1;
delay(10);//注意:复合语句的各条语句都必须以“;”}结尾,在“}”之外,不能加“;”}2.5C语言基本结构——循环语句while语句用来实现“当型”循环,执行过程:首先判断表达式,当表达式的值为真(非0)时,反复执行循环体。为假(0)时执行循环体外面的语句。循环体循环继续的条件表达式下一条语句非0(真)0(假)循环体语句组while执行过程格式:while(循环继续的条件表达式)
{语句组;}花括号不能丢掉!请问:下述程序实现了什么功能?main(){inti,sum=0;while(i<=5){sum=sum+i;i++;}}2.5C语言基本结构——循环语句do-while语句用来实现“直到型”循环执行过程:先无条件执行一次循环体,然后判断条件表达式,当表达式的值为真(非0)时,返回执行循环体直到条件表达式为假(0)为止。绝对不能少分号!循环体格式:do{循环体语句组;
}while(循环继续条件);花括号不能丢掉!循环继续的条件表达式下一条语句非0(真)0(假)循环体语句组请问:下述程序实现了什么功能?main(){inti,sum=0;do{sum=sum+i;i++;}while(i<=100);}2.5C语言基本结构——循环语句总循环次数已确定的情况下,可采用for语句形式为:for语句的一般形式:
for(循环变量赋初值;循环继续条件;循环变量增值)
{循环体语句组;} 分隔符为分号请问:下述程序实现了什么功能?main(){inti,y=0;for(i=1;i<=10;i++){y=y+i;}}2.5C语言基本结构——选择语句基本if语句的格式如下:if(表达式){ 语句组;}注意:在if语句中,“表达式”必须用括号括起来。在if语句中,花括号“{}”里面的语句组如果只有一条语句,可以省略花括号。2.5C语言基本结构——选择语句if-else语句的一般格式如下:if(表达式) {
语句组1;
} else{
语句组2;
}if-else语句执行过程:当“表达式”的结果为“真”时,执行其后的“语句组1”,否则执行“语句组2”2.5C语言基本结构——选择语句if-else-if语句是多个条件分支的选择,其一般格式如下:if(表达式1){语句组1;}elseif(表达式2){语句组2;}…elseif(表达式n){语句组n;}else{语句组n+1;}图2-14if-else-if语句执行流程2.5C语言基本结构——选择语句多分支选择的switch语句,其一般形式如下:
switch(表达式){ case常量表达式1:语句组1;break; case常量表达式2:语句组2;break; …… case常量表达式n:语句组n;break; default:语句组n+1;}该语句的执行过程是:首先计算表达式的值,并逐个与case后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同,则执行default后的语句组。2.6C51数据类型及常量变量关于数据类型的含义:1.不同类型数据在内存中占不同的存储空间,且采取不同的存储形式。2.不同类型数据对应不同的取值范围。3.数据类型确定了允许对其进行的操作。2.6C51数据类型及常量变量数据类型名称数据类型符占用字节数所占位数数的表示范围无符号(短)整型unsignedint2B160~65535有符号(短)整型signedint2B16-32768~32767无符号长整型unsignedlong4B320-4294967295有符号长整型signedlong4B32-2147483648~2147483647无符号字符型unsignedchar1B80~255有符号字符型signedchar1B8-128~127单精度实型float4B32±1.175494E-38~3.402823E+38位型bit1bit10或1指针型*1~3B8~24对象的地址可寻址位sbit1bit10或1专用寄存器sfr1B80~25516位专用寄存器sfr162B160~655352.6C51数据类型及常量变量例:数据类型变量名
charn1;unsignedcharx;inti;
注意:变量名不能用C语言中关键字表示,如:int、for、char等;写unsigned,默认为是有符号型。2.6C51数据类型及常量变量标识符定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符命名原则:见名知意不宜混淆如l与I,o与0例:判断下列标识符号合法性decDEcM.D.TomDate3daysstudent_name#33chara>b$123_x12.6C51数据类型及常量变量
在程序执行过程中,其值不发生改变的量称为常量。常量区分为不同的类型,有整型常量、实型常量、字符常量和字符串常量。常量类型具体类型表示形式说明整型常量八进制整常数○12八进制数12十六进制整常数0x1A;0X1A十六进制数1A十进制整常数34;34L十进制数34(占16位);长整型数34(占32位)实型常量十进制形式0.0,.25,5.7890~9和小数点组成小数点前面的0可以省略指数形式2E53.7E-2等于2*105等于3.7*10-2字符常量字符型‘b’‘5’字符b,字符5转义字符型\n回车换行,具体见表2.8字符串常量字符串常量"CHINA"在内存中存的是C-H-I-N-A-\02.6C51数据类型及常量变量符号常量:用标识符代表常量定义格式:#define
符号常量常量如#defineNUM30#defineNUM30voidmain(){inttotal;total=NUM*5}2.6C51数据类型及常量变量字符常量:定义:用单引号括起来的单个普通字符或转义字符.
字符常量的值:该字符的ASCII码值转义字符转义字符的意义转义字符转义字符的意义\n回车换行\\反斜线符(\)\t横向跳到下一制表位置\'单引号符\v竖向跳格\”双引号符\b退格\a鸣铃\r回车\ddd1~3位八进制数所代表的字符\f走纸换页\xhh1~2位十六进制数所代表的字符如‘A’——65,‘a’——97,
‘0’——48,‘\n’——102.6C51数据类型及常量变量字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘\0’
作为字符串结束标志(字符串用数组表示)字符常量与字符串常量不同thank\0例字符串“thank”在内存中a
a\0例‘a’“a”例空串“”\0例:charch;ch=‘A’;2.6C51数据类型及常量变量
在程序执行过程中,取值可变的量称为变量。一个变量必须有一个名字,在内存中占据一定的存储单元,在该存储单元中存放变量的值。变量使用时则必须作强制定义即“先定义,后使用”。变量定义的完整形式为:【存储类型】数据类型
【存储器类型】变量名...;(1)存储类型说明符
auto自动变量(动态存储区)register寄存器变量(动态存储区)extern外部变量(CPU的通用寄存器)static静态变量(静态存储区)小贴士:
静态存储变量:在程序执行时,定义时指定的存储单元一直保持不变,直到程序结束。
动态存储变量:在程序执行时候;使用时才分配内存单元,使用完毕后立即释放,再使用再分配。从以上分析可知,静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。2.6C51数据类型及常量变量自动变量
把存储类型符auto加在变量名前,变量就是自动变量。自动变量只能在函数内说明;auto可以省略。在不同函数中说明的自动变量,可以使用相同的名字,它们的类型可以相同,也可以不同。寄存器变量把数据存放在寄存器里,操作起来比内存里快。比如:registerintx;就把变量x定义为一个寄存器型的整型变量,存放在CPU的一个通用寄存器中。现在程序中极少使用寄存器型变量。外部变量
把存储类型符extern加在变量名及其类型前面,该变量就成为一个外部变量。凡是在函数外部定义的变量都是外部变量。静态变量
把存储器类型符static加在变量名及其类型前面,该变量就成为静态变量。例如:staticinti;在整个程序运行期间,静态变量一直占据分配给它的存储区不予归还,直到程序运行结束。2.6C51数据类型及常量变量存储器类型C51编译器支持的存储器类型见表所示。
C51编译器支持的存储器类型存储器类型描述data直接访问内部数据存储器,允许最快访问(128B)bdata可位寻址内部数据存储器,允许位与字节混合访问(16B)idata间接访问内部数据存储器,允许访问整个内部地址空间(256B)pdata“分页”外部数据存储器(256B)xdata外部数据存储器(64KB)code程序存储器(64KB)变量定义的完整形式为:【存储类型】数据类型
【存储器类型】变量名...;2.6C51数据类型及常量变量变量名
变量的名字是一种标识符,它必须遵守标识符的命名规则。习惯上变量名用小写字母表示,以增加程序的可读性。必须注意的是大写字符和小写字符被认为是两个不同的字符。例如:inta,b,c;//定义整型变量a,b.c,自动变量,auto省略了。unsignedchari=‘A’;//定义无符号字符型变量i,同时赋初值字符“A”;说明:1)允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。
2)最后一个变量名之后必须以“;”号结尾。
3)变量定义必须放在变量使用之前,一般放在函数体的开头部分。2.7C51运算符符号说明运算对象个数举例含义+加法运算双目x=y+z;y+z的结果赋值给x-减法运算双目x=y-z;y-z的结果赋值给x*乘法运算双目x=y*z;y×z的结果赋值给x/除法运算双目x=y/z;y÷z的结果赋值给x%取余运算双目x=y%z;y÷z的余数赋值给x,如5%2的结果是1++自增1单目i++;i自身加1--自减1单目i--;i自身减1算术运算符2.7运算符赋值运算符符号说明运算对象个数举例含义=基本赋值双目x=y+z;y与z的和赋值给x+=加赋值双目x+=1;x=x+1;-=减赋值双目x-=1;x=x-1;*=乘赋值双目x*=2;x=x*2;/=除赋值双目x/=2;x=x/2;%=模赋值双目x%=2;x=x%2;<<=左移位赋值双目x<<=1;x变量整体先左移1位,再赋值给x;>>=右移位赋值双目x>>=1;x变量整体先右移1位,再赋值给x;&=位与赋值双目x&=0xf0;做位与操作后赋值|=位或赋值双目X|=0xf0;做位或操作后赋值^=异或赋值双目X^=0xf0;做位异或操作后赋值~=取反赋值双目x~=x;做位取反操作后赋值2.7运算符关系运算符符号说明运算对象个数举例含义<小于双目x<y;x是否小于y;<=小于等于双目x<=y;x是否小于等于y;>大于双目x>y;x是否大于y;>=大于等于双目x>=y;x是否大于等于y;==等于双目x==yx是否等于y!=不等于双目X!=yx是否不等于y2.7运算符逻辑运算符符号说明运算对象个数举例含义!逻辑非单目!a;A为非0时,!a为假;a为0时,!a为真;&&逻辑与双目x&&yx,y都为真时,才为真||逻辑或双目X||yx,y有1个为真时,就为真2.7运算符位运算符符号说明运算对象个数举例含义&按位逻辑与双目0x23&0x0f=0x03;屏蔽0x23的高四位,保留低四位;|按位逻辑或双目0x23|0x0f=0x2f;0x23保留高四位,置1低四位;~按位取反单目x=~0x23;x=0xd2;^按位异或双目0x23^0x0f=0x2c异或运算:相同出0,相异出1<<按位左移双目x<<2;高位丢弃,低位补0若x=0x01,移位后为0x04>>按位右移双目x>>2;高位补0,低位丢弃若x=0x10,移位后为0x042.7运算符指针和地址运算符符号说明运算对象个数举例含义*提取变量的内容单目nx=*a;提取地址a的内容赋值给nx&提取变量的地址单目Ny=&b;提取变量b的地址赋值给Ny2.8函数1.标准库函数由C51编译器提供,用户不必定义可以直接调用。在C51编译环境中,以头文件的形式给出。eg:math.h、stdio.h函数的分类2.用户自定义函数用户根据需要自行编写的函数,它必须先定义之后才能被调用。eg:delay();2.8函数函数定义的一般形式是:函数类型函数名(形式参数表)
{
局部变量定义;
函数体语句;
return语句;}
其中,“函数类型”说明了自定义函数返回值的类型。“函数名”是自定义函数的名字。“形式参数表”给出函数被调用时传递数据的形式参数,形式参数的类型必须要加以说明。圆括号不能省略。“局部变量定义”是对在函数内部使用的局部变量进行定义。“函数体语句”是为完成函数的特定功能而设置的语句。2.8函数函数调用的形式:
函数名(实际参数表);注意:函数调用时提供的实际参数(简称实参)应与被调用函数的形式参数按顺序一一对应,而且参数类型也要一致。2.8函数
(1)delay(200);
(2)c=2*max(a,b);
(3)m=max(a,max(b,c));总结:函数调用可以作为一个独立的语句,也可作为表达式或一个运算量。函数调用方式2.8函数
return语句使用说明(1)reutrn语句格式:return表达式;或return(表达式);(2)return语句功能:返回调用函数,并将“返回值表达式”的值带给调用函数。(3)若不需要带回函数值:将函数定义为void型,否则需要有返回语句。2.8函数#include:有两种方式可以指定插入头文件#include<文件名>:
直接到系统指定的目录下查找该文件;#include"文件名":
先在当前目录查找有无该头文件,有则包含该目录下的头文件,没有则到系统指定的目录下找该头文件。任务2.3调试RST:复位命令;
Run(F5):全速运行。一般与断点配合使用,执行时程序能够从当前行连续运行到断点处,节省调试时间。但无法观察某条语句或某段语句的运行结果。
Stop:停止运行。在无断点设置的程序中,当执行run时,
stop键就会激活。
Step(F11):单步跟踪调试。每按一次,黄色箭头向下移动一句,系统就执行一句。任务2.3调试StepOver(F10):单步运行调试。每按一次,黄色箭头向下移动一句,系统就执行一句。与Step命令的不同是:Step命令可以跟踪到函数内部执行,而StepOver只是把函数作为一个语句执行。
Stepout(ctrl+F11):跳出当前函数。当进入函数内部执行时,按此命令,可以结束当前函数的运行。
Runtocursorline(ctrl+F10):全速运行至光标处。与断点调试相比,断点调试有记忆功能,当再次重复调试程序时,每当程序运行到断点处都会停止在该断点处。此方法特别适用于循环程序的调试。根据需要可以在程序中设置多个断点。再
见工作模块3---数码管显示控制
情境导入
在乘坐电梯时,到了目标楼层,就会有一个电子显示器件显示当前楼层,这个就是数码管,如图3.1所示。在家中或者办公室中,会使用一个电子时钟显示当前时间,这个显示器件也是数码管,如图3.2所示。许多场合,都会用到数码管来显示数字,有时用到1个,有时用到多个。当走上电子技术员或者单片机工程师工作岗位后,也会经常用到数码管,学习单片机控制数码管的显示,有着非常现实的意义。内容图谱任务描述
某电子科技有限公司要生产一批计算器,显示模块采用数码管显示,现在你作为公司技术员,要实现显示模块的开发制作。初期任务是通过单片机控制1位数码管的显示,显示内容是数字从0-9,数字切换的时间间隔是1秒,设计电路原理图,编写程序,并仿真功能。初级能力:实现单片机控制一位共阳极数码管显示的功能。高级能力:能够设计单品机驱动共阳极数码管和共阴极数码管的硬件电路,并编写显示程序。执行思路实施过程3-1-1ProteusISIS设计电路原理图共阳极数码管实施过程3-1-1ProteusISIS设计电路原理图序号元件名称元件型号元件参数1单片机AT89C52
2瓷片电容CAP30pF3电解电容CAP-ELEC22uF4晶振CRTSTAL12MHZ5按键BUTTON
6电阻RES10k、4707排阻Respack-810K8数码管7SEG-MAP1-CA共阳极数码管实施过程3-1-1绘制原理图重点知识链接3-1数码管结构
数码管是一个8字的结构,8字的每个笔划都一个发光二极管,每个笔划称为一个段,因此“8”字一共是7段。在使用过程中还经常会用到小数点,加上小数点,其实是8段的数码管。知识链接3.1数码管的结构
数码管的每个段本质都是一个发光二极管,而每个发光二极管分别有阳极和阴极,因此,数码管根据公共端的不同,可以分成共阴极和共阳极的数码管,如图3.13a,b所示,而且数码管的每个段,都给它一定的编号,分别是a,b,c,d,e,f,g段,外加一个dp点字段。一共是8个段,对应数码管的8个引脚,com端有两个引脚,需要接在一起,如图3.12C所示。知识链接3.2数码管的结构
以共阳极的数码管显示字形2为例,共阳极的数码管,公共端为高电平,需要某个段发光,则需要给相应的段送0,因此如果需要显示2,则可以得到相应的字形码如图3.13所示。知识链接3.2数码管的结构
通过上面的分析,可以很容易得到共阳极数码管对于“2”的字形码为10100100,表示为BCD码即为:0xa4;同理,共阴极数码管的“2”的字形码,即为相应共阳极字形码按位取反得到,即为0x5B,(0xff-0xa4=0x5B)。知识链接表3-2LED数码管显示字型码表静态显示方式每个数码管的段选线必须与一个八位I/O端口相连,公共端恒定接地或电源。静态显示是各位数码管恒定导通或截止。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。静态显示知识链接3.3数组的使用
具有相同类型的一批数据作为一个整体,叫做数组(Array),数组均由连续的存储单元组成,数组可以是一维的,也可以是多维的。知识链接3.3.1一维数组1.一维数组的定义定义形式:类型符
数组名
[常量表达式];intarr[15];//类型符:整型数据类型;数组名:arr,元素个数:15
chararr[20];//类型符:字符型数据类型;数组名:arr,元素个数:20知识链接3.3.1一维数组2.一维数组的初始化数组初始化时,可以先定义数组再给数组赋值,也可以在定义数组的同时赋值,例如:inta[4]={20,45,400,22};
知识链接3.3.1一维数组3.数组的使用先定义数组,才可以引用数组中的每个元素。数组元素的引用方式∶数组名[数组元素下标]。disnum[0]=0xc0;disnum[1]=0xf9;disnum[2]=0xa4
也可以是整型表达式
例如b[i];c[6*i]数组元素下标从0开始,长度为n的数组合法下标取值范围∶0至n-1。知识链接3.3.1一维数组voidmain() //主函数{unsignedchari;intsum,ave,MCU_scores[6]={84,83,89,93,91,60};sum=0;for(i=0;i<6;i++) //变量i,循环6次{sum=sum+MCU_scores[i]; }Ave=sum/15;}}知识链接3.3.2二维数组1.二维数组的定义类型说明符数组名[常量表达式][常量表达式];inta[3][4];
表示定义了3行4列总共有12个元素的数组a。这12个元素的名字依次是:a[0][0]、a[0][1]、a[0][2]、a[0][3];a[1][0]、a[1][1]、a[1][2]、a[1][3];a[2][0]、a[2][1]、a[2][2]、a[2][3]。。知识链接3.3.2二维数组2.二维数组初始化1)分行给二维数组赋初值。inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};2)也可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。比如
inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};3)也可以只对部分元素赋初值。比如:
inta[3][4]={{1,2},{5},{9}};知识链接3.3.2二维数组3.二维数组的使用二维数组有行和列,数组的元素也是一个一个的输出。在一维数组中是用一个for循环进行输出,而二维数组元素的输出要使用两个for循环嵌套。知识链接3.3.3字符数组1.字符数组用来存放字符的数组称为字符数组,chara[10];//一维字符数组charb[5][10];//二维字符数组charc[20]={'c','','p','r','o','g','r','a','m'};//给部分数组元素赋值chard[]={'c','','p','r','o','g','r','a','m'};//对全体元素赋值时可以省去长度知识链接3.3.3字符数组1.字符数组C语言规定,可以将字符串直接赋值给字符数组charstr[10]={"abcdefg"};或者charstr[10]="abcdefg";数组第0个元素为'a',第1个元素为'b',第2个元素为'c',后面的元素以此类推。为了方便,也可以不指定数组长度。知识链接3.3.3字符数组2.字符串数组字符串是一系列连续的字符的组合,字符串总是以'\0'空字符作为结尾,所以'\0'也被称为字符串结束标志,或者字符串结束符。该字符既不能显示,也没有控制功能。例如,"abc123"从表面看起来只包含了6个字符,其实不然,C语言会在最后隐式地添加一个'\0',这个过程是在后台默默地进行的。实施过程3-1-2一位数码管显示参考程序#include<reg51.h>
//头文件#defineucharunsignedchar
//定义常量uchar#defineuintunsignedint
//定义常量uintucharcodedisnum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//code是把数组存储在程序存储区,这是共阳极数码管从0-9的字形编码voiddelay(unsignedinti)//函数定义{
unsignedintj,k;
//定义无符号整型变量j和k
for(k=0;k<i;k++)
//双重for循环语句实现延时
for(j=0;j<125;j++);}voidmain()
//主函数{
uchari;
for(i=0;i<10;i++)
//变量i,循环10次
{
P0=disnum[i];
delay(1000);
}}
P0=disnum[i];语句是把数组disnum中的每一个元素赋值给P0,数码管的每一段是LED灯,把不同位置的LED灯点亮,就会构成要显示的数字。实施过程3-1-2一位数码管显示参考程序#include<reg51.h>
//头文件#defineucharunsignedchar
//定义常量uchar#defineuintunsignedint
//定义常量uintucharcodedisnum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//code是把数组存储在程序存储区,这是共阳极数码管从0-9的字形编码voiddelay(unsignedinti)//函数定义{
unsignedintj,k;
//定义无符号整型变量j和k
for(k=0;k<i;k++)
//双重for循环语句实现延时
for(j=0;j<125;j++);}voidmain()
//主函数{
uchari;
for(i=0;i<10;i++)
//变量i,循环10次
{
P0=disnum[i];
delay(1000);
}}定义数组disnum时,前面加上code,是把数组存储在程序存储区,节省数据存储区,但是定义在程序存储区,数组的元素不能更改。
控制要求:请设计单片机控制共阴极数码管的电路,并编写程序。扩展任务共阴极数码管与共阳极数码管硬件电路区别扩展任务小贴士:单片机驱动共阴极数码管电路图与共阳极电路图对比,区别有:
1.P0口接了上拉电阻后,数码管的控制引脚不用再接限流电阻;
2.共阴极数码管的型号是7SEG-MPX1-CC;
3.共阴极数码管的公共端接地。任务3-2描述
通过单片机控制8位数码管的显示,使8位数码管同时稳定显示数字0-7,设计电路原理图,编写程序,并仿真功能。初级能力:实现本次任务的显示功能。高级能力:能够设计不同方案的硬件电路,并编写显示不同内容的程序。执行思路
思考并设计单片机连接8位数码管的电路,数码管的静态显示无论从电路和程序方面都无法实现8位数码管的控制,探索数码管的动态显示方式,灵活运用C语言的基本语句,编写数码管显示的程序。实施过程3-2-1ProteusISIS设计电路原理图知识链接3.4数码管动态显示原理
每位数码管都有8根段码线,一根位选线(公共端),按照静态显示的原理,一片STC89C51或者STC89C52RC等单片机,最多只能接4位数码管,当需要控制多位数码管的时候,I/O资源就不够。而在实际生产中,多需要控制多位数码管时,一般采用数码管的动态显示控制方式。。知识链接3.4数码管的静态显示
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。知识链接
显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。若数码管的数目不大于8位,则控制显示器公共极电位只需8位口(称为位选口),控制各位显示器所显示的字形也需要一个8位口(段选口)。。3.4数码管的静态显示知识链接补充:在使用电路板时,为了增加引脚的复用,经常使用74HC573数据锁存芯片74HC573是8位数据锁存器。1是低电压激活芯片2~9脚是数据的输入脚从D0到D710脚是接地11脚是高电压激活芯片12~19脚是数据的输出脚20是电源数据锁存:当输入的数据消失时,在芯片的输出端,数据仍然保持;这个概念在并行数据扩展中经常使用到。◆OE:output_enable,输出使能;◆LE:latch_enable,数据锁存使能,atch是锁存的意思;◆Dn:第n路输入数据;◆On:第n路输出数据;知识链接补充:在使用电路板时,为了增加引脚的复用功能,经常使用74HC573锁存芯片74HC573真值表,意思如下:第一行/第二行:当OE=0、LE=1时,输出端数据等于输入端数据;第三行:当OE=0、LE=0时,输出端保持不变;第四行:当OE=1是无论Dn、LE为何,输出端为高阻态;知识链接补充:在使用电路板时,为了增加引脚的复用功能,经常使用74HC573锁存芯片高阻态
就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;但是,这些芯片中只能有一个处于非高阻态状态,否则会将芯片烧毁。高阻态的概念在RS232和RS422通讯中还可以用到。知识链接74HC573芯片高阻态
就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;但是,这些芯片中只能有一个处于非高阻态状态,否则会将芯片烧毁。高阻态的概念在RS232和RS422通讯中还可以用到。实施过程3-2-2数码管动态显示程序实施过程3-2-2数码管动态显示程序P0=~(0x01<<(i-1));<<:按位左移运算符,这条语句的功能是把0x01字节依次左移0位,1位,2位直到7位。实施过程3-2-2数码管动态显示程序
数码管在动态显示时,要点亮一位数码管,段选信号和位选信号要配合,或者同时,或者时间间隔非常短,ms以内。每完成一位数码管显示时,要关一次数码管,可采用对公共端送关显示的信号,即共阳极数码管送0,共阴极数码管送1,否则数码管会将上一个字符显示在下一个字符位置上很短的时间,形成拖影,导致显示效果不好。扩展任务
控制要求:请再设计一款控制4位共阳极数码管动态显示的电路,不考虑单片机的引脚复用,并编写同时稳定显示中秋日期“0815”数字的程序。数码管7SEG-MPX4-CA;添加74LS245缓冲芯片,可进行数据双向传输,一般用于驱动LED灯或其他设备;添加NPN三极管PN2222(实物可以选择9013)74HC245数字芯片引脚图扩展任务数据缓冲:加强驱动能力74LS244/74LS245/74LS373/74LS573都具备数据缓冲的能力。
第1脚DIR(T/R),为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5S现场管理培训试题及详细答案解析
- 1-6岁儿童居家智力自测题(含详细答案)
- 还在高价报养老护理员班?题库 + 配套视频课够用就够了
- 盾构始发与接收端头加固规范
- 存储行业市场前景及投资研究报告:AI推理需求重塑存储范式国产存储产业升级期
- 2026年浙江省人教版初中物理八年级下册第9章热学基础测试题
- 2026年浙江省高中物理光学基础测试卷
- 湖南省娄底市涟源市部分学校2026-2027学年高二上学期开学物理试题(含答案)
- 《汽车营销》-第二章教学用
- 广东省2025-2026学年高二上学期期末物理试题(含答案)
- 喷砂工考试题及答案
- 《石材加工企业职业病危害风险分级管控体系实施指南》
- 2026年黑龙江省法官逐级遴选考试题及答案
- 2026年秋季开学教师教师心理健康培训课件
- 2026重庆科瑞南海制药有限责任公司招聘15人笔试备考题库及答案详解
- 2026年秋季学期小学三年级信息科技教学计划(人教版2024上册)
- 2026-2030改性塑料产业市场发展分析及发展趋势与投资战略研究报告
- 2026小学教科版五年级科学上册全册课堂练习(分课编排附参考答案)
- 2026-2027学年人教版(新教材)小学美术五年级上册教学计划及进度表
- 2026年中医适宜技术三基培训题库(含答案)
- 制氮系统安装调试施工方案及技术措施
评论
0/150
提交评论