51单片机笔记经典2
C51单片机引脚及其功能.ppt

5. RST/VPD(复位信号)
RST为复位信号输入端,高电平有效。当此输入端 保持两个机器周期的高电平时,就可以完成复位操 作。 VPD为备用电源输入端。当主电源Vcc 发生故障, 降低到低电平规定值时,将+5V电源自动接入该引 脚,为RAM提供备用电源,以保证RAM中的信息 不丢失,使得复位后能继续正常运行。
VSS 20
40 VCC 39 P0.0 38 P0.1 37 P0.2 36 P0.3 35 P0.4 34 P0.5 33 P0.6 32 P0.7 31 EA/VPP 30 ALE/PROG 29 PSEN 28 P2.7 27 P2.6 26 P2.5 25 P2.4 24 P2.3 23 P2.2 22 P2.1 21 P2.0
2. 掉电(停机)工作方式
只有内部RAM单元的内容被保存,其它一切工作都 停止。 在掉电工作方式下,VCC可以降到2V,但在进入掉 电方式之前,VCC不能降低。 掉电工作方式退出: 电源恢复正常,硬件复位信号维持在10ms以上。
RST 1 P3.0/RXD 2 P3.1/TXD 3
XTAL2 4 XTAL1 5 P3.2/INT0 6 P3.3/INT1 7 P3.4/T0 8 P3.5/T1 9
GND 10
20 VCC 19 P1.7 18 P1.6 17 P1.5 16 P1.4 15 P1.3 14 P1.2 13 P1.1/AIN1 12 P1.0/AIN0 11 P3.7
特殊功能寄存器 ACC PSW DPH DPL IP IE TMOD SCON P0-P3
初始态 00H 00H 00H 00H
xxx00000B 0xx00000B
Keil编程软件学习

慧净电子51编程软件学习笔记(基于HJ-1G学习板)一:安装方法1、打开CD光碟找到目录E:\HJ-1G_V5.0光碟\2、应用软件\2、编程软件\慧净_Keil_中文版。
2、打开后目录后,找到并双击一次,会出现下面的画面。
2、请点击上图的Next出现下面的画面。
3、再点击上图中的Next,出现下面画面软件装在C:\Keil目录下面。
4、点击上图中的Next在下图中输入名字,还有邮箱就可以了5、再点一下上图中的Next,软件就可以自动安装了,装好后出现下面的画面,点击Finish 后完成安装。
二:启动软件1、在桌面找到,双击打开K软件。
在文件中打开授权管理,不会的请看下面的图片。
3、打开光碟里的出现下面的画面。
4、请做以下设置,做好后,直接点Generate就可以了5、点Generate后会出现下面的画面请复制图中的WH7X4-FCWM6-Y7FRN-BYCV2-BAC2A-N252E到刚才打开的K软件上6、输入正版授权ID码(LIC)7、把刚才生成的ID码放到下面的位置上,还要点一下尜加授权就可以了9、出现如下画面完成注册本Keil软件网上收集,请24小时试用后删除,购卖正版软件。
三:打开工程项目1、还是看图,找到慧净光碟中的HJ-1G_V5.0光碟\1、实验源码\配套程序\【实验1】点亮第一个发光管,IO输出项目,直接打开就可以了,提示,可以把光碟里的实验程序复制到你的硬盘上,把只读去掉,再打开项目工程。
2、打开后可以在里面修改程序了3、点下面的可以进行编译四:新建立一个工程序项目1、新建一个工程文件,点击“Project->New Project…”.2、选择工程文件要存放的路径,并且输入工程文件名,这里我们用hlmcu作为工程文件名,这里就不用在后面加.c了。
图片如下:3、点击Save后弹出选择CPU及型号的对话框:4、由于HJ-1G学习板所配的单片是STC公司的,而KEIL中并没有STC公司的产品,不过STC公司的单片机和传统的51单片机是兼容的,所以这里我们就选择Atmel公司的AT89S52。
8051的串口波特率的计算(笔记版)

8051的串口波特率的计算1、方式0的波特率,固定为晶振频率的十二分之一。
2、方式2的波特率,取决于PCON寄存器的SMOD位。
PCON是一个特殊的寄存器,吹了最高位SMOD位,其他位都是虚设的。
计算方法如下:SMOD=0,波特率为晶振的1/64;SMOD=1,波特率为晶振的1/32.3、方式1与方式3的波特率都是由定时器的溢出率决定的。
公式为:BR=(2SOMD/32)*(定时器TI的溢出率)通常情况下,我们使用定时器的方式2,即比率发生器,自动重载计数常数。
溢出的周期为:T=(256-X)*12/fosc溢出率为溢出周期的倒数,即T1=1/T所以:式中:SMOD是所选的方式,fosc是晶振频率。
X是初始值。
51单片机模拟串口波特率计算方法1.计算波特率位间隔时间(即定时时间,其实就是波特率的倒数)位间隔时间(us)=10(6)(us)/波特率(bps)2.计算机单片机指令周期:指令周期(us)=12/晶振频率(Mhz)补充问题:做串口通信时,为什么要把晶振频率设为11.0592,为什么要把波特率设为9600?先说波特率。
波特率从300到115200都可以,甚至更高或更低。
一般规范的波特率都是3的倍数,比如9600、19200、38400;但是并不是一定的,波特率也可以是10000或者10001、10002,只要你的设备能产生符合这个要求的频率,尤其是自己用时,波特率都是很随意的,没有限制。
只是多数时候为了和电脑配合,波特率才规范为固定的几个值,且为了传输稳定,用9600。
用11.0592晶振的原因是51单片机的定时器导致的。
通常用11.0592M晶振是为了得到标准的无误差的波特率。
举例说来,如我们要得到的9600的波特率,晶振为11.0592M和12M,定制器1为2SMOD设为1,分别看看那所求的TH1为何值。
代入公式:11.0592M9600=(2/32)*((11.0592M/12)(256-TH1))TH 1=25012M9600=(2/32)*((12M/12)(256-TH1))TH1=249.49。
单片机应用技术项目教程(微课版)

读书笔记
这是《单片机应用技术项目教程(微课版)》的读书笔记模板,可以替换为自己的心得。
精彩摘录
这是《单片机应用技术项目教程(微课版)》的读书笔记模板,可以替换为自己的精彩内容摘录。
感谢观看
3 8.3任务23
LCD1602监控 直流电机运行 设计与实现
4
关键知识点小 结
5
问题与讨论
9.1 RT12864 1
点阵型液晶显 示模块
9.2任务24液 2
晶电子钟电路 设计
3 9.3任务25液
晶电子钟程序 设计
4
关键知识点小 结
5
问题与讨论
10.1
1
DS18B20温度
传感器
10.2任务26 8 2
04
6.4任务18 信号发生器 设计与实现
06
问题与讨论
05
关键知识点 小结
7.2任务20水塔水 位单片机远程监控
系统
7.1任务19单片机 点对点数据传输
7.3任务21单片机 一对多数据传输
关键知识点小 结
问题与讨论
1
8.1单片机产 品开发
8.2任务22
2
LCD1602监控
步进电机运行
设计与实现
单片机应用技术项目教程(微 课版)
读书笔记模板
01 思维导图
03 目录分析 05 读书笔记
目录
02 内容摘要 04 作者介绍 06 精彩摘录
思维导图
本书关键字分析思维导图
教程
技术
单片
项目
知识点
单片
问题
项目
任务
应用 任务
项目
技术
设计
讨论
实现
AltiumDesigner绘制STC89C51单片机原理图的操作说明(精)

AltiumDesigner绘制STC89C51单片机原理图的操作说明在学习AltiumDesigner或者51单片机的过程中,当我们要绘制一个带有STC单片机的电路图或者要制作带有STC单片机的PCB(印制电路板)时,我们会发现在AltiumDesigner 自带的所有库中都没有找到STC的单片机原理图。
所以,在这里呢,小编将结合自己的经历向大家介绍如何用AltiumDesigner软件来绘制自己的原理图库,并绘制STC89C51单片机的原理图,希望能对大家有所帮助。
大家相互学习,共同进步。
一、创建原理图库1.1新建原理图库选择菜单栏上的【文件】即可看到,具体操作如下图所示:1.2新建元器件做完上面的操作后,即可看到新建的原理图库,在新建的原理图库中有一个空的元器件,如下图所示:1.3 按【Ctrl+S】保存原理图库自定义命名并保存到我们的自定义文件夹,以便今后查找。
如下图所示:二、绘制元器件原理图在工具栏上的三角板图标下,选择【放置矩形】图标,从坐标原点开始绘制矩形(STC89C51单片机外形)。
具体操作如下图所示:打开STC89C51资料手册,观察手册中的管脚图,以便接下来的绘制工作,具体情况如图:单击右键,选择【放置】栏下的【引脚】,然后开始严格按照资料手册中的管脚图绘制各个引脚。
具体情况如图:按照资料手册对各个引脚进行相应设置。
如管脚的输入输出属性以及管脚名称,具体操作情况如下图:保存绘制好的原理图,并对其进行重命名为“STC89C51”,具体操作情况如下图:三、在原理图文件中调用自己绘制的元器件打开或者新建一个原理图。
如图所示:在库路径中搜索“STC89C51”,找到并放置芯片。
如图所示:如何用AltiumDesigner绘制STC89C51单片机的原理图,这里已经介绍完了,你学会了吗?是不是很简单啊,学习记得要记笔记哦!。
AVR随堂笔记

因为51单片机的IO端口大部分都是准双向口在复位时全部输出高电平对端口的输入和输出操作也是直接通过IO端口的地址进行的AVR的IO端口是标准的双向口在复位时所有端口处于高阻态 AVR的每个端口对应三个寄存器即DDRx(方向寄存器) PORTx(数据寄存器) PINx(读入 / 输入寄存器)在使用AVR单片机之前一定要根据引脚功能对相应的端口初始化否则端口很可能不能正常工作*DDRx寄存器7 6 5 4 3 2 1 0DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRBR/W R/W R/W R/W R/W R/W R/W R/W*PORTx寄存器7 6 5 4 3 2 1 0PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 PORTBR/W R/W R/W R/W R/W R/W R/W R/W*PINx寄存器7 6 5 4 3 2 1 0PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINBR R R R R R R R作为通用数字IO口使用时每个引脚都具有三个寄存器位: DDRxn PORTxn PINxnDDRxn PORTxn PINxn IO 上拉电阻说明0 0 - 输入无高阻态0 1 - 输入有带上拉的输入1 0 - 输出无输出低电平1 1 - 输出无输出高电平AVR单片机中对IO进行操作之前需要进行相应的初始化设置其设置步骤如下:(1)通过方向寄存器DDRx设置相应的端口为输入或者输出(2)如果设置为输出的话把需要输出的数据送往数据寄存器PORTx(3)如果设置为输入的话从输入寄存器PINx中读取外部的输入值同时可以通过设置PORTx来设置相应的引脚是否需要上拉电阻ICCAVR头文件的形式为: #include<io*v.h> 或 #include<iom*v.h> 若芯片使用的不是mega类则使用#include<io*v.h> 若是mega类则为#include<iom*v.h>在AVR单片机的使用当中有一个重要的头文件 macros.h 该头文件定义了一些常用的宏如BIT(x) 以及看门狗复位开关全局中断等等使用方法:#include<macros.h>如果在程序中要使用BIT(x) 则必须包含该头文件AVR单片机中同样可以对单个IO口进行操作其具体方法如下:(1)PORTA |= (1<<3)(2) PORTA |= BIT(3)(3) PORTA |= BIT(PORTA3)以上三种方法都是让它们第四位置1[0 1 2 3]按位或用于打开某一位或某几位即置位例如: PORTA |= 0X80; // 将端口A的第七位置“ 1 ”不管该位之前是什么状态都会将其置 1按位取反用于关闭某一位或某几位即清位例如: PORTA &= ~0X80; // 将端口A的第七位清零0X80(10000000)按位取反后是0x7f(01111111)不管该位之前是什么状态都会将其清零按位异或用于翻转某一位或某几位例如: PORTA ^= 0X80; // 将端口A的第七位翻转如果原来是“ 1 ”翻转之后是“ 0 ”如果原来是“ 0 ”翻转之后是“ 1 ”按位与用于检查某一位或某几位是否为 1例如: if(PINA & 0X80); // 检查PA.7是否为 1一般用于条件或判断语句中用于检查某一位是否为 1AVR单片机熔丝位简介熔丝位状态为 1 表示未编程熔丝位状态为 0 表示编程因为在AVR的器件手册中是使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的AVR单片机的熔丝位是可以多次编程的AVR单片机芯片加密锁定之后(LB2 / LB1 = 1 / 0 0 / 0)不能通过任何方式读取芯片内部的Flash 和EEPROM的数据的下载编程的正确操作步骤是:下载运行代码和数据配置相关的熔丝位最后配置芯片的加密位芯片加密熔丝位简介加密锁定位保护类型(芯片加密)加密锁定方式 LB2 LB11(出厂设置) 1 1 无任何编程加密锁定保护2 1 0 禁止串 / 并行方式的再编程3 0 0 禁止串 / 并行方式的再编程和校验功能熔丝位简介熔丝位名称 1 0 出厂设置WDTON 看门狗由程序控制看门狗始终工作 1程序只能调节溢出时间SPIEN 禁止ISP串行编程允许ISP串行编程 0JTAGEN 禁止JTAG 允许JTAG 0EESAVE 芯片擦除时同时擦除芯片擦除时时不擦除 1EEPROM数据 EEPROM数据BODLEVEL 低电压检测门限电平低电压检测门限电平 1为2.7v 为4.0vOCDEN 禁止JTAG口的在线调允许JTAG口的在线调 1试功能试功能Bootloader熔丝位简介熔丝位名称 1 0 出厂设置 BootRst 芯片上电后从地址芯片上电后从地址 10x0000开始执行 Boot开始执行Bootloader区域大小设置BooTSZ1 BooTSZ1 BooT区大小起始地址出厂设置0 0 1024 0x1C000 1 512 0x1E001 0 256 0x1F00 四种都是 001 1 128 0x1F80系统时钟源选择熔丝位系统时钟源 CKSEL[3:0]外接石英 / 陶瓷晶体 1111 ~ 1010外接低频晶体 1001(32.768 KHz)外接RC振荡器 1000 - 0101使用可校准的内部RC振荡器 0100 - 0001 (出厂设置0001 1MHz)外部时钟 0使用外部晶体时的工作模式配置熔丝位工作频率范围MHz 适用晶体C1 C2容量 / pFCKPOT CKSEL[3:1]1 101 0.4-0.9(MHz) 注释(pF) 陶瓷晶体1 110 0.9-3.0 12-221 111 3.0-8.0 12-220 101-111 >=1.0 12-22 都是石英晶体当CKPOT = 0时振荡器的输出振幅较大适用于干扰大的场合反之振荡器的输出较小可以降低功耗对外电磁辐射也较小使用外部晶振时唤醒脉冲和延时时间的选择熔丝位掉电和省电复位延时启动时间适合应用条件CKSEL0 SUT[1:0] 模式唤醒 (Vcc=5v)0 00 258CK 4.1ms 陶瓷振荡器快速上升电源0 01 258CK 65ms 陶瓷振荡器慢速上升电源0 10 1K CK ---- 陶瓷振荡器BOD方式0 11 1K CK 4.1ms 陶瓷振荡器快速上升电源1 00 1K CK 65ms 陶瓷振荡器慢速上升电源1 01 16K CK ---- 陶瓷振荡器BOD方式1 10 16K CK 4.1ms 陶瓷振荡器快速上升电源1 11 16K CK 65ms 陶瓷振荡器慢速上升电源C51向ICCAVR快速过度头文件把REG52.H替换成相应的AVR头文件如iom16v.h对C52中的bit sbit的数据类型进行处理因为ICCAVR不支持bit和sbit数据类型可以用位运算和BIT来处理中断系统定时器与单片机结构密切相关的代码需要重新修改和延时定时相关的函数需要进行一些修改因为AVR的运算速度比51单片机要快的很多其余与CPU体系结构无关的代码可以直接使用AVR单片机中断的原理ATmega16单片机具有21个中断源每个中断源都有一个独立的中断向量作为中断服务程序的入口地址而且所有的中断源都有自己独立的使能位如果全局中断和相应的中断使能位都置位则在中断标志位时执行中断服务程序一个中断产生后全局中断使能位将被清零后续的中断被屏蔽用户可以在中断服务程序里面对置位从而开发中断在中断返回后全局中断位将重新位置ATmega16单片机中断向量表介绍向量号程序地址中断源中断定义1 S000 RESET 外部引脚电平引发的复位上电复位掉电检测复位看门狗复位以及JTAG AVR复位2 S002 INT0 外部中断请求03 S004 INT1 外部中断请求14 S006 TIMER2 COMP 定时器 / 计数器2比较匹配5 S008 TIMER2 OVF 定时器 / 计数器2溢出6 S00A TIMER1 CAPY 定时器 / 计数器1事件捕捉7 S00C TIMER1 COMPA 定时器 / 计数器1比较匹配A8 S00E TIMER1 COMPB 定时器 / 计数器1比较匹配B9 S010 TIMER1 OVF 定时器 / 计数器1溢出10 S012 TIMER0 OVF 定时器 / 计数器0溢出11 S014 SPI STC SPI串行传输结束12 S016 USART RXC USART Rx结束13 S018 USART UDRE USART数据寄存器空14 S01A UART TXC USART Tx结束15 S01C ADC ADC转换结束16 S01E EE_RDY EEPROM就绪17 S020 ANA_COMP 模拟比较器18 S022 TWI 两线串行接口 ( IIC )19 S024 INT2 外部中断请求220 S026 TIMER0 COMP 定时器 / 计时器比较匹配21 S028 SPM_RDY 保存程序存储器内容就绪AVR单片机外部中断ATmega16单片机具有3个外部中断分别是INT0 INT1 INT2这三个外部中断都是由单片机的引脚触发的需注意的是如果允许外部中断的话即使是INT0 INT1 INT2这3个引脚都设置为输出方式外部中断也会触发INT0 INT1外部中断可以选择的触发方式有上升沿触发下降沿触发以及低电平触发INT2只有跳变沿触发没有电平触发使用外部中断涉及到的寄存器有 MCU控制寄存器MCUCR MCU控制欲状态寄存器MCUCSR 通用中断控制寄存器CICR 通用中断状态寄存器GIFRMCU控制寄存器MCUCRBit 7 6 5 4 3 2 1 0SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00Read/Write R/W R/W R/W R/W R/W R/W R/W R/Wlnitial Vaiue 0 0 0 0 0 0 0 0为[3:2] - ISC1[1:0]外部中断1触发方式选择ISC11 ISC10 说明0 0 INT1引脚为低电平时产生中断请求0 1 INT1引脚上的任意逻辑电平变化都会产生中断请求1 0 INT1引脚的下降沿产生中断请求1 1 INT1引脚的上升沿产生中断请求MCU控制与状态寄存器MCUCSRBit 7 6 5 4 3 2 1 0JTD ISC2 - JTRF WDRF BORF ECTRF PORFRead/Write R/W R/W R R/W R/W R/W R/W R/Wlnitial Vaiue 0 0 0 see Bit Descriotion位6 -- ISC2 外部中断2触发方式外部中断2由外部引脚INT2激发若ISC2清零则INT2的下降沿激活中断若ISC2置1 则INT2的上升沿激活中断通用中断控制寄存器GICRBit 7 6 5 4 3 2 1 0INT1 INT0 INT2 - - - IVSEL IVCERead/Write R/W R/W R/W R R R R/W R/Wlnitial Vaiue 0 0 0 0 0 0 0 0位7 -- INT1 时能外部中断1请求当INT1为1且状态寄存器SREG的标志置位时相应的外部引脚中断使能只要使能即使INT1引脚被配置为输出一旦引脚电平发生了相应的变化中断就将产生位6 -- INT0 时能外部中断0请求当INT0为1且状态寄存器SREG的标志置位时相应的外部引脚中断使能只要使能即使INT1引脚被配置为输出一旦引脚电平发生了相应的变化中断就将产生位5 -- INT2 时能外部中断2请求当INT2为1且状态寄存器SREG的标志置位时相应的外部引脚中断使能只要使能即使INT1引脚被配置为输出一旦引脚电平发生了相应的变化中断就将产生通用中断状态寄存器GIFRBit 7 6 5 4 3 2 1 0INTF1 INTF0 INTF2 - - - - -Read/Write R/W R/W R/W R R R R Rlnitial Vaiue 0 0 0 0 0 0 0 0位7 -- INTF1 外部中断1标志位 INT1引脚电平发生跳变时触发中断请求并置位相应的中断标志INTF1 如果SREG的位I以及相应的中断使能位INT1为1 MCU立即跳转到相应的中断向量位6 -- INTF0 外部中断0标志位 INT0引脚电平发生跳变时触发中断请求并置位相应的中断标志INTF0 如果SREG的位I以及相应的中断使能位INT0为1 MCU立即跳转到相应的中断向量位5 -- INTF2 外部中断2标志位 INT2引脚电平发生跳变时触发中断请求并置位相应的中断标志INTF2 如果SREG的位I以及相应的中断使能位INT2为1 MCU立即跳转到相应的中断向量状态寄存器SREGBit 7 6 5 4 3 2 1 0I T H S V N Z CRead/Write R/W R/W R/W R/W R/W R/W R/W R/Wlnitial Vaiue 0 0 0 0 0 0 0 0位7 -- I 全局中断使能位置位时使能全局中断单独的中断使能由其他独立的寄存器控制如果I被清零则不论单独中断标识位置位与否都不会产生中断任意一个中断产生之后 I都将被清零而执行RETI指令后I被置位以重新使能中断 I也可以通过SEI指令和CLI指令来置位和清零在使用任何中断之前都必须将全局中断使能位置位使能语句 SREG |= BIT(7);中断服务函数怎么写用ICCAVR编程在C中只要用 #pragma伪指令和中断向量说明中断服务程序入口地址即可语法格式#pragma interrupt_handle < 函数名 >: < 中断向量 >例如定义INT0中断服务程序#pragma interrupt_handle int0_isr: 2void int0_isr(void){// INT0中断服务函数}外部中断使用的步骤设置外部中断的触发模式 ( 寄存器MCUCR )使能外部中断(寄存器GICR )设置中断管脚(是否需要上拉电阻)打开全局中断(寄存器SREG )选择中断号写中断服务程序AVR单片机片内EEPROMAtmega16单片机内部具有512字节的EEPROM 它一个独立的数据空间拥有至少10万次写入 / 擦除寿命地址范围是0x0000 - 0x01ff数据读写一字节为单位通过专用的指令来实现对EEPROM的操作可也可以通过ISP JTAG 并行编程的方式实现EEPROM的写入和读出采用内部RC振荡器的1MHz作为访问的定时时钟其编程使用周期8448个周期时间大约8.5ms操作过程中尽量关闭中断保持时序不被打断EEPROM存储器相关的寄存器EEPROM地址寄存器EEARH EEARLBit 15 14 13 12 11 10 9 8- - - - - - - EEAR8 EEARHEEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EEARL7 6 5 4 3 2 1 0Read/Write R R R R R R R R/WR/W R/W R/W R/W R/W R/W R/W R/Wlnitial Vaiue 0 0 0 0 0 0 0 xx x x x x x x xEEPROM地址寄存器EEAR用于指定某个EEPROM单元的地址 512字节EEPROM线性编址为0x0000 - 0x01ff 地址寄存器EEAR可读可写 EEAR寄存器的初值没有意义在访问EEPROM 之前必须为其指定正确的地址EEPROM存储器相关的寄存器EEPROM数据寄存器EEDRBit 7 6 5 4 3 2 1 0MSB LSBRead/Write R/W R/W R/W R/W R/W R/W R/W R/Wlnitial Vaiue 0 0 0 0 0 0 0 0EEPROM数据寄存器EEDR存放即将写入EEPROM或者从EEPROM读出的某个单元的数据写入或者读出的地址由EEPROM的地址寄存器EEAR给出 EEPROM按字节进行读写 EEPROM数据寄存器EEDR可读可写初始值为0x00EEPROM控制寄存器EECRBit 7 6 5 4 3 2 1 0- - - - EERIE EEMWE EEWE EERERead/Write R R R R R/W R/W R/W R/Wlnitial Vaiue 0 0 0 0 0 0 x 0EEPROM控制寄存器EECR用于控制单片机对EEPROM的操作位3 - EERIE EEPROM中断准备好使能位当EERIE位置1而且全局中断置位时如果EEWE为0 则单片机产生一个中断表示写操作完成EEPROM存储器相关的寄存器位2 - EEMWE EEPROM主写使能位当EEMWE为1时设置EEWE为1将把EEDR中的数据写入EEAR所选择的地址空间中如果EEMWE为0 则EEWE无效 EEMWE在被用户置1后的4个时钟周期后被硬件清零EEPROM存储器相关的寄存器位1 - EEWE EEPROM写使能位当EEPROM的地址和数据准备好之后用户必须设置EEWE为1 才能将数据写入EEPROM中设置EEWE为1之前 EEMWE必须置1 否则写入操作无效EEPROM数据写入操作如下等待EEWE为0把EEPROM的地址写入EEAR把EEPROM的数据写入EEDR置EEMWE为1在置EEMWE为1的4个时钟周期内向EEWE中写入1位0 - EERE EEPROM读使能位 EERE用于对EEPROM的数据读取当EEAR中设置了EEPROM的读取地址后置位EERE将执行读操作当EEPROM中的数据被读取到数据寄存器EEDR中后EERE被硬件清零用户可以通过查询此位来判断读操作是否完成AVR单片机片内ADC简介ATmega16单片机集成了一个10位的逐次逼近型A/D装换器 A/D装换器与一个8位通道多路复用器连接能对来自端口A的8路单端输入电压进行采样8路可选的单端输入通道7路差分输入通道ADC转换结果的读取可设置为左端对齐在最高精度下可达到15KSPS/S的采样速率可选择的内部2.56V的ADC参考电压源自由连接转换模式和单次装换模式ADC自动转换触发模式选择ADC转换完成中断ADC的供电和参考电压ADC功能单元独立的专用模拟电源引脚AVCC供电 AVCC和VCC的电压差别不能大于+_0.3VADC装换的参考电源可采用芯片内部的2.56V参考电源或采用AVCC 也可采用外部参考电源使用外部参考电源时外部参考电源有引脚AREF接入使用内部电压参考源时可以通过在AREF引脚外部并接一个电容提高ADC的抗干扰性能与ADC有关的寄存器ADC多路复用器选择寄存器ADMUX7 6 5 4 3 2 1 0REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0R/W R/W R/W R/W R/W R/W R/W R/W0 0 0 0 0 0 0 0位[7:6] - REFS[1:0]:ADC参考电压选择这两位选择ADC的参考电压如果在装换过程中改变了设置则只有等到当前装换结束之后新的设置才会起作用如果在AREF脚上施加了外部参考电压则内部参考电压不能被选择与ADC有关的寄存器ADC参考电压选择位REFS1 REFS0 参考电压选择0 0 AREF 内部基准源关闭0 1 AVCC AREF外接滤波电容1 0 保留1 1 2.56V内部基准电压源 AVREF引脚外接滤波电容位5 - ADLAR: ADC转换结果对齐位 ADLAR位影响ADC转换结果在ADC数据寄存器中的存放形式 ADLAR置位时转换结果位左对齐否则位右对齐位[4:0] - MUX[4:0]:模拟通道与增益选择位这几位选择连接到ADC模拟输入通道也可以对差分通道增益进行设置如果在转换过程中改变了设置则只有等到当前装换结束之后新的设置才会起作用具体的设置表可以查看数据手册与ADC有关的寄存器ADC控制盒状态寄存器ADCSRA7 6 5 4 3 2 1 0ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0R/W R/W R/W R/W R/W R/W R/W R/W0 0 0 0 0 0 0 0位7 - ADEN: ADC使能位 ADCEN置位即启动ADC 否则ADC功能关闭位6 - ADSC: ADC开始转换在单次转换模式下 ADSC置位将启动一次ADC转换在连续转换模式下 ADSC置位将启动首次转换位5 - ADATE: ADC自动触发使能 ADATE置位将启动ADC自动触发功能触发信号的上升沿启动ADC转换位4 - ADIF: ADC中断标志位 ADC转换结束且数据寄存器被更新后 ADIF置位如果ADIE 及AREG寄存器中的全局使能位I被置位则ADC转换结束中断服务程序将被执行同时ADIF 硬件清零也可以通过软件写“1”清零位3 - ADIE: ADC中断使能位若ADIE及SREG中的I置位则ADC转换结束中断将被使能位2[2:0] - ADPA[2:0]: ADC预分频选择位这3位决定ADC输入时钟与CPU时钟之间的分频系数 ADC分频系数选择如下表:ADPS2 ADPS2 ADPS2 分频系数0 0 0 20 0 1 20 1 0 40 1 1 81 0 0 161 0 1 321 1 0 641 1 1 128ADC数据存储器ADCL及ADCHADC转换结束后转换结果将储存在这两个寄存器中在读取ADCL之后 ADC数据存储器需要等到ADCH也被读出之后才会更新数据寄存器因此如果转换结果为左对齐而只需要8位精度那么仅需要读取ADCH就足够了否则必须ADCH然后再读ADCLADMUX寄存器中的ADLAR及MUXn会影响转换结果在数据寄存器中的存放形式ADC数据存储器ADCL及ADCH当ADLAR = 0;Bit 15 14 13 12 11 10 9 8- - - - - - ADC9 ADC8 ADCHADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 ADCL7 6 5 4 3 2 1 0Read/Write R R R R R R R RR R R R R R R R lnitial Vaiue 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0当ADLAR = 1;Bit 15 14 13 12 11 10 9 8 ADCHADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADCLADC1 ADC0 - - - - - -7 6 5 4 3 2 1 0Read/Write R R R R R R R RR R R R R R R R lnitial Vaiue 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0特殊功能IO寄存器SFIORBit 7 6 5 4 3 2 1 0ADTS2 ADTS1 ADTS0 - ACME PUD PSR2 PSR10 SFIOR Read/Write R/W R/W R/W R R/W R/W R/W R/Wlnitial Vaiue 0 0 0 0 0 0 0 0位[7:5] - ADTS[2:0]: ADC自动触发源选择ADTS2 ADTS1 ADTS0 触发源0 0 0 连续转换模式0 0 1 模拟比较器0 1 0 外部中断请求00 1 1 定时器/计数器0比较匹配1 0 0 定时器/计数器0溢出1 0 1 定时器/计数器比较匹配B1 1 0 定时器/计数器1溢出1 1 1 定时器/计数器1捕捉事件ADC的使用步骤1.ADC输入端口初始化2.基准电压设置数据对齐方式通道选择(寄存器ADMUX)3.AD使能启动转换及中断设置(寄存器ADCSRA)4.触发源选择(寄存器SFIOR)5.选择中断号编写中断服务函数读取ADC转换结果(ADCH ADCL)注意点:从ADCH和ADCL中读到的数据时BCD码格式的ATmega16定时器ATmega16单片机有3个定时/计数器: T/C0 T/C1和T/C2 其中T/C0和T/C2是两个8位的定时/计数器而T/C1是16位的定时/计数器这里以T/C1为例讲解普通模式CTC模式快速PWM模式相位修正PWM模式相位频率修正PWM模式输入捕捉模式普通模式普通模式是最简单的工作模式和51单片机的定时计数器类似根据设定的时钟频率每过一个时钟计数寄存器数值加116位计数器TCNT1一直累加1 当计数到0xFFFF之后由于计数值溢出 TCNT1简单的返回到最小值0x0000重新开始计数普通模式用到的寄存器1.T/C1控制寄存器TCCRIBBit 7 6 5 4 3 2 1 0ICNC1 ICES1 - WGM13 WGM12 GS12 CS11 CS10 TCCR1B读/写 R/W R/W R R/W R/W R/W R/W R/W初始值 0 0 0 0 0 0 0 0位2: 0 - CS1[2:0]: T/C1时钟选择CS12 CS11 CS10 说明0 0 0 无时钟源(T/C停止)0 0 1 CLK i/o /1(无预分频)0 1 0 CLK i/o /8(来自预分频器)0 1 1 CLK i/o /64(来自预分频器)1 0 0 CLK i/o /256(来自预分频器)1 0 1 CLK i/o /1024(来自预分频器)1 1 0 外部T1引脚下降沿驱动1 1 1 外部T1引脚上降沿驱动2.计数存储器TCNT1H和TCNT1LBit 7 6 5 4 3 2 1 0TCNT1[15:8] TCNT1HTCNT1[7:0] TCNT1L3.T/C1中断屏蔽寄存器TIMSKBit 7 6 5 4 3 2 1 0OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE1 TIMSK读/写 R/W R/W R/W R/W R/W R/W R/W R/W初始值 0 0 0 0 0 0 0 0位2 - TOIE1: T/C1溢出中断使能位当该位被置1且状态寄存器中的I位被置1时 T/C1的溢出中断使能一旦TIFR的TOV1置位 CPU即开始执行T/C1溢出中断服务程序普通模式的使用方法1.根据需要选择时钟源(寄存器TCCRIB)2.根据定时时间和时钟源确定定时器的初值(寄存器TCNT1H和TCNT1L)3.设置中断使能位4.选择中断号编写中断服务程序注意在中断服务函数里面需要重新设置定时器初值10-1AVR 8 - 2 程序未写AVR 9 - 2。
基于Proteus的51系列单片机设计与仿真(第4版)

4.3外部中断控制 4.4串行通信控制
5.1 LED数码 管应用
5.2键盘的应用
6.1 DAC的应 用
6.2 ADC的应 用
7.1 LED点阵 的应用
7.2 LCD的应 用
8.1步进电动机 控制
8.2直流电动机 控制
1
9.1数字电子 钟的设计
2
9.2篮球计分 器的设计
3 9.3 DS1302
精彩摘录
这是《基于Proteus的51系列单片机设计与仿真(第4版)》的读书笔记模板,可以替换为自己的精彩内容摘 录。
感谢观看
可调时钟的设 计
4
9.4 24C04开 启次数统计
5
9.5 DS18B20 测量温度
9.6按钮选播电 子音乐
9.7矩阵键盘键 值显示
作者介绍
这是《基于Proteus的51系列单片机设计与仿真(第4版)》的读书笔记模板,暂无该书作者的介绍。
读书笔记
这是《基于Proteus的51系列单片机设计与仿真(第4版)》的读书笔记模板,可以替换为自己的心得。
目录分析
1.2 ISP下载
1.1 Keil C51的使 用
1.3串行调试软件
2.1 Proteus 电路图绘制软
件的使用
2.2 Proteus VSM虚拟系统模 型
3.2拼字与拆字程 序的设计
3.1清零与置数程 序的设计
3.3数据块传送与 排序程序的设计
4.1声光控制
4.2定时器/计数器 控制
基于Proteus的51系列单片 机设计与仿真(第4版)
读书笔记模板
01 思维导图
03 目录分析 05 读书笔记 Nhomakorabea目录
02 内容摘要 04 作者介绍 06 精彩摘录
51单片机第四节数码管

51单⽚机第四节数码管本笔记默认学习者已拥有:1.Keil5和stc 烧写⼯具 等各种软件、驱动、环境;2.有⼀个属于⾃⼰的 51单⽚机开发板及相关零件 ;3.认识C 语⾔的语法;本⼈使⽤的51开发板为 郭天祥C51 TX-1C 增强版开发板 ;本笔记根据B 站up 主:江科⼤⾃化协的教学视频 整理得到ヾ(•ω•)4-1 静态数码管显⽰上图为TX-1C 的 数码管及LED 模块 原理图138译码器和74HC245 都是⽤来控制 数码管显⽰ 的;单数码管1.上图为 ⼀位数码管,数码管有两种连接⽅式(对应 右边上下两幅图);2.右上图的原理图,8个LED的阴极都连在⼀个引脚上,称为共阴极连接;3.右下图的原理图,8个LED的阳极都连在⼀个引脚上,称为共阳极连接;TX-1C 开发板的连接⽅式是 共阴极连接;4.左下⾓的 左边图⽚ ,定义了8个LED的名称;5.左下⾓的 右边图⽚ ,定义了引脚的名称,与右图的引脚名称⼀⼀对应假设数码管连接⽅式为 共阳极连接,观察可以发现,数码管中的 LED 的引脚引出,使⽤的是就近原则;假设数码管连接⽅式为 共阴极连接,如果上数码管显⽰ 数字6 ?1.要让数码管显⽰ 数字6,让要 LED-A、C、D、E、F、G亮起;2.共阴极的公共端 要接地(给数据‘0’,或者是低电平);3.阳极(称为位选端)根据LED的亮灭需求给 数据0或1(1亮、0灭) ,称为 段码(阳码) (1011 1110 即为段码);如果 共阳极连接,共阳极端 要接到 VCC (⾼电平),阴极给 数据0或1 (1灭,0亮),称为 段码(阴码),和共阴极正好是相反关系;共阳极连接→共阳极端接VCC 并选中→阴极(位选端)传递(阴码)段码(1亮、0灭)→数码管显⽰共阴极连接→共阴极端接GND 并选中→阳极(位选端)传递(阳码)段码(1灭、0亮)→数码管显⽰四位⼀体数码管开发板上即为 四位⼀体的数码管,且有两个,正好组成了 ⼋位数码管;⽽TX-1C 上 包含的是六位数码管,⽽⾮⼋位;1.四位数码管 也有 两种连接⽅式,即 共阴极连接 和 共阳极连接 ;{Processing math: 100%2.四位数码管,(每位的公共端 单独引出来,位选端全部连在⼀起(所有A段连在⼀起、所有B段连在⼀起……),总共有12个引脚;假设数码管连接⽅式为共阴极连接,如何在第三位显⽰数字1 ?1.给第三位的公共端 赋值 0(低电平),给其他位的公共端 赋值 1(⾼电平);这样等同于 其他位的公共端(负极)接到了正极上,⽆论如何都亮不了;只有第三位能亮;2.这样给 LED-B、C 的位选端 赋值 1,其他 位选端 赋值0共阳极连接即为公共端赋值 1(⾼电平)亮,其他以此类推;3.发现这样⼀个现象,数码管⽆法在同⼀时间显⽰多个数字,其在同⼀时刻下只能有⼀个显⽰,只有⼀个数码管能被点亮,即使有多个被选中的数码管,显⽰的数字也是相同的;这种共⽤引脚的现象,是为了减少控制数码管IO⼝;(四位数码管有32个LED,如果都采⽤共阴极连接的⽅式,也要32+1(公共端)=33个引脚;)(采⽤这种链接,就只需要12个引脚即可控制四位数码管;)如何让数码管多位显⽰不同数字(动态数码管显⽰)?1.利⽤ ⼈眼视觉的暂留 和 数码管显⽰的余辉 的原理先让第⼀位数码管显⽰1,然后很快地让第⼆位数码管显⽰2,再很快地让第三位数码管显⽰3,让它不断地扫描,重复显⽰1、2、3的过程,这样三个数字就“同时”显⽰了;原理分析138译码器1.观察到 原理图右图 与数码管有关的,有138译码器(74LS138)和74HC245两枚芯⽚;TX-1C的原理图为左图,也有两个74HC573芯⽚与数码管有关;芯⽚名称与功耗、电压、说明符号有关,具体内容不做分析;2.如图,数码管连接⽅式为 共阴极连接,这样传输数据,就能让第三位显⽰ 数字1 了;3.⽽上⾯的 LED1 ~ 8,其实接在了138译码器的输出端,138译码器正好可以实现让LED1 ~ 8输出 0或1;LED1 ~ 8 对应了 TX-1C 六位数码管的SEG DS 1 ~ 6;4.138译码器可将LED 1 ~ 8的⼋个端⼝ 转化为 由 3个端⼝ (P22、P23、P24)控制,⽽G1、G2A、G2B端⼝ 被 称为 使能端;使能端相当于⼀种开关,如果电平有效,它就可以⼯作;如果电平⽆效,它就不⼯作;观察原理图发现,使能端是已经接好 VCC 和 GND 的,也就是说,其上电其实就会⼯作TX-1C的74HC573也是同理,但其并未压缩控制端⼝的数量;5.138译码器也叫“38线译码器”,是由3个线到8个线,其中C是⾼位、A是低位,CBA组成的数符合8进制,控制着Y0 ~ Y7 这8个端⼝;6.所以,138译码器的作⽤就是⽤来选中某⼀位数码管的74HC2451.74HC245是⼀种 双向数据缓冲器,VDD、GND都可视为电源,OE为使能(其 接地 就⼯作);2.DIR(direction),是⽅向的意思,它接到了VCC(⾼电平)上,将数据从左边输出到右边,从右边将数据读取回左边;DIR若接到低电平上,会将数据从右边输出到左边,从左边将数据读取回右边;3.单⽚机的⾼电平 驱动能⼒有限,其输出的最⼤电流不能太⼤;其低电平 驱动能⼒强;因此,LED模块才采⽤了低电平点亮的模式;4.如果⽤⾼电平 直接点亮 数码管,电流会很⼩,灯会很暗;所以其加⼀个缓冲器,缓冲器可以提⾼ 其驱动能⼒,如果直接将 数据 输出 给 数码管,数据就会被视为 驱动数据;现在增加了缓冲器,数据 就变成了 控制信号,控制信号 只需要很微弱,缓冲器 就可以接收到,缓冲器再通过⾃⼰接到的电源,输出 数据 到引脚上,这样控制的电流只需要⾮常⼩,就能驱动数码管 以⽐较亮的形式显⽰;2电容 是⽤来 稳定电源的,叫电源滤波;6.图右有 ⼀ 排阻,阻值为100R(即为100Ω),作⽤为 限流电阻 ,防⽌数码管的电流过⼤;TX-1C既没有电容,也没有排阻;原理总结1.⽤ 138译码器 使 数码管 的某⼀位 被选中;2.再给P0⼝⼀个 段码数据;TX-1C虽然⽤P0⼝控制段码输⼊,但也⽤P0⼝控制位选;需要先⽤ P2.6⼝和P2.7⼝控制输⼊数据是段码还是位选;P2.6⼝控制段码的输⼊;P2.7⼝控制位选的输⼊;例,给P2.6 数据1 (⾼电压)、给P2.7 数据 0 (低电压),就可以确定现在给数据是段码;1.由TX-1C的原理图可知,数码管内 LED灯 与 P0端⼝ 的顺序关系:(1)LED的名称定义是通⽤⽆疑的;(2)数码管本⾝的引脚名称不重要,重要的是 LED与哪个 P0 的 引脚 相连;2.由TX-1C的原理图可知, P0.0引脚 控制 数码管的最左位,P0.5引脚控制 数码管的最右位,剩余引脚是没有控制 数码管 位选 的作⽤的,哪个P0 的 引脚 控制 六位数码管的 哪位 很重要;代码实现静态数码管显⽰(让数码管第三位显⽰3).c#include<reg51.h>sbit D=P2^6; //段码⼝sbit W=P2^7; //位选⼝void main(){D=0;W=1;P0=0xFB;//1111 1011W=0;D=1;P0=0x4F;//0100 1111while(1);}下⾯写出了⼀个通⽤函数,可以让数码管在 第⼏个位置 显⽰ 哪个数#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;void NixieTube(uchar wei,uchar duan){ //NixieTube是数码管的英⽂uchar WEI,DUAN; //(Nixie是⼥⽔妖的意思)D=0;W=1;switch(wei){ //位选部分case 1:WEI=0xFE; break;case 2:WEI=0xFD; break;case 3:WEI=0xFB; break;case 4:WEI=0xF7; break;case 5:WEI=0xEF; break;case 6:WEI=0xDF; break;}P0=WEI;W=0;D=1;switch(duan){ //段码部分case 0:DUAN=0x3F; break;case 1:DUAN=0x06; break;case 2:DUAN=0x5B; break;case 3:DUAN=0x4F; break;case 4:DUAN=0x66; break;case 5:DUAN=0x6D; break;case 6:DUAN=0x7D; break;case 7:DUAN=0x07; break;case 8:DUAN=0x7F; break;case 9:DUAN=0x6F; break;case 10:DUAN=0x77; break; //Acase 11:DUAN=0x7F; break; //Bcase 12:DUAN=0x39; break; //Ccase 13:DUAN=0x3F; break; //Dcase 14:DUAN=0x79; break; //Ecase 15:DUAN=0x71; break; //Fcase 16:DUAN=0x80; break; //.}P0=DUAN;}void main(){NixieTube(3,3);while(1);}运⾏结果如下:4-2 动态数码管显⽰1.如果只是单纯让其显⽰完⼀个再显⽰⼀个,代码如下:#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;uchar Nixiewei[]={0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};uchar Nixiecode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7F,0x39,0x3F,0x79,0x71,0x80};//将两个switch改进为数组void NixieTube(uchar wei,uchar duan){D=0;W=1;P0=Nixiewei[wei];W=0;D=1;P0=Nixiecode[duan];}void main(){while(1){NixieTube(1,1);NixieTube(2,2);NixieTube(3,3);}}运⾏结果如下:2.这是⼀个数码管的常见问题,称为 数码管的消影 ;位选-->段选-->位选-->段选-->位选-->......在这⼀位的段选(输⼊段码)结束,进⾏下⼀位的位选时,很短的时间内,上⼀位的数据会串到下⼀位数据⾥⾯去;所以我们在段选和位选之间,增加⼀个 P0 清零的操作;动态数码管显⽰(数码管同时显⽰123).c#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;uchar Nixiewei[]={0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};uchar Nixiecode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7F,0x39,0x3F,0x79,0x71,0x80};void Delayms(unsigned int x){unsigned int j;for(;x>0;x--) for(j=110;j>0;j--);}void NixieTube(uchar wei,uchar duan){D=0;W=1;P0=Nixiewei[wei];W=0;D=1;P0=Nixiecode[duan];Delayms(1); //让数码管稳定显⽰,⽴刻清零会让数码管显⽰较暗P0=0; //清零操作}void main(){while(1){NixieTube(1,1);NixieTube(2,2);NixieTube(3,3);}}运⾏结果如下:相关知识1.在运⾏某些代码时,TX-1C的LED点阵模块会乱闪2.将左下⾓ DOT-OE旁的跳线帽 拔下来即可 断开LED点阵模块,3.拔下来的跳线帽不要乱丢,可以 只插⼀个脚放在原处,也可以妥善保管在其他地⽅上图即为拔下来的跳线帽1.此元件为电容;2.104的数量规则与 第⼆节 所讲的电容是相同的,其单位是pF1000pF=1nF, 1000nF=1uF, 1000uF=1000mF, 1000mF=1FF 是⼀个很⼤的单位,正常电容都是uF、nF级别的;超级电容能达到1 ~ 2 F,其⼀般作为备⽤电池;3.TX-1C的原理图上,电容的量都是直接⽤单位标记好的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机笔记经典2一、填空题1、A T89S51单片机为8位单片机,共有40个引脚。
2、M CS-51系列单片机的典型芯片分别为8031、8051、8751 。
3、A T89S51访问片外存储器时,利用ALE信号锁存来自P0 口发出的低8 位地址信号。
4、A T89S51的P3 口为双功能口。
5、A T89S51内部提供2个可编程的16位定时/计数器,定时器有4种工作方式。
6、AT89S51有2级中断,5个中断源。
7、AT89S51的P2 口为高8 位地址总线口。
8、设计一个以AT89C51单片机为核心的系统,如果不外扩程序存储器,使其内部4KB闪烁程序存储器有效,那么其EA*引脚应该接+5V9、单片机系统中使用的键盘分为独立式键盘和行列式键盘,其中行列式键盘的按键识别方法有扫描法和线反转法。
10、AT89S51内部数据存储器的地址范围是00H~7FH,位地址空间的字节地址范围是 20H~2FH ,对应的位地址范围是 00H~7FH ,外部数据存储器的最大可扩展容量是 64K 。
11、如果(A)=34H,(R7)=0ABH,执行XCH A, R7;结果(A)= 0ABH,(R7)=34H 。
12、在R7初值为00H的情况下,DJNZ R7, rel指令将循环执行256次。
13、欲使P1 口的低4位输出0,高4位不变,应执行一条ANL P1, #0F0H命令。
14、假设CPU使用的是存放器第1组,R0~R7的地址范围是08H-0FH。
15、单片机进行串行通信时,晶振频率最好选择11.0592MHz 16、当MCS-51执行MOVX A,@R1指令时,伴随着RD*控制信号有效。
17、假设A中的内容为67H,那么,P标志位为1。
18、AT89S51唯一的一条16位数据传送指令为MOV DPTR,data16。
19、LJMP的跳转范围是64K, AJMP的跳转范围是2KB,SJMP的跳转范围是土128 B〔或 256B〕。
20、74LS138是具有3路输入的译码器芯片,其输出作为片选信号时,最多可以选中 8 片芯片。
21、如果(DPTR)=507BH, (SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,那么执行以下指令后: POP DPH POP DPL POP SP那么:(DPH)二 ___3CH___;〔DPL〕二___5FH___;〔SP〕二___50H___; 22、AT89S51 复位后,PC与SP的值为分别为0000H和07H。
23、当单片机复位时PSW=00H,这时当前的工作存放器区是0区,R4所对应的存储单元地址为 04H。
24、当AT89S51执行MOVC A,@A+ DPTR指令时,伴随着PSEN*控制信号有效。
25、当MCS-51执行MOVX A,@R1指令时,伴随着RD*控制信号有效。
第 1 页共 10 页26、MCS — 51指令系统中,ADD与ADDC指令的区别是进位位Cy是否参与加法运算。
27、如果(A)=45H,(R1)=20H,(20H)=12H,执行XCHD A, @ R1;结果(A)= 42H ,(20H)= 15H 。
28、在内部RAM中可位寻址区中,位地址为40H的位,该位所在字节的字节地址为 28H 。
29、关于定时器,假设振荡频率为12MHz,在方式2下最大定时时间为256us30、AT89S51单片机的通讯接口有串行和并行两种形式。
在串行通讯中,发送时要把并行数据转换成串行数据。
接收时又需把串行数据转换成并行数据。
31、假设AT89S51外扩32KB数据存储器的首地址假设为4000H,那么末地址为BFFFH。
32、执行如下三条指令后,30H单元的内容是#0EH M O V R 1,# 30H M O V 40H,#0 E H M O V @R 1,40H33、MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址。
34、一个机器周期等于6个状态周期,振荡脉冲2分频后产生的时序信号的周期定义为状态周期。
35、执行M OVXA,DPTR指令时,MCS-51产生的控制信号是RD* 。
36、ORG 0000H AJMP 0040H ORG 0040HMOV SP, #00H当执行完左边的程序后,PC的值是0042H 37、对程序存储器的读操作,只能使用MOVC指令。
38、当使用慢速外设时,最正确的传输方式是中断。
39、MCS-51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能存放器__SCON _加以选择。
二、判断题I、MOV 55H,@R5〔 X〕R 只能是 0,1 2、INC DPTR〔 V〕3、DEC DPTR 〔 X〕没有数据指针存放器减指令4、CLR R0〔 X〕5、MOV T0,#3CF0H〔X〕T0 是 8 位存放器6、8031与8051的区别在于内部是否有程序存储器。
〔V〕7、内部RAM 的位寻址区,既能位寻址,又可字节寻址。
〔V〕8、串行口工作方式1的波特率是固定的,为fosc/32°〔X〕9. 8051单片机中的PC是不可寻址的。
〔V〕10、MCS-51系统可以没有复位电路。
〔X〕II、某特殊功能存放器的字节地址为80H,它即能字节寻址,也能位寻址。
〔V〕12、PC存放的是即将执行的下一条指令。
〔V〕13、TMOD中的GATE二1时,表示由两个信号控制定时器的启停。
〔V〕第 2 页共 10 页14、特殊功能存放器SCON与定时器/计数器的控制无关。
〔V〕15、各中断源发出的中断请求信号,都会标记在AT89S51的TCON存放器中。
〔X〕16、MCS-51 上电复位时,SBUF=00H°〔 X〕。
17、MCS-51 的相对转移指令最大负跳距是127B。
〔 X〕18. MCS-51的程序存储器只是用来存放程序的。
〔X〕19. MCS-51的串行接口是全双工的。
〔V〕20. MCS-51的特殊功能存放器分布在60H~80H地址范围内。
〔X〕21、MOVC, #00H 的寻址方式是立即寻址〔X〕22.MCS-51的5个中断源优先级相同。
〔X〕三、简答题1、请写出共阴数码管显示数字0~9对应的段码值。
答:共阴3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 2、请写出共阳数码管显示数字0~9对应的段码值。
答:共阳 C0H F9H A4H BOH 99H 92H 82H F8H 80H 90H 3、AT89S51 单片机指令系统的寻址方式有哪些?答:存放器寻址、直接寻址、存放器间接寻址、立即寻址,基址存放器和变址存放器间接寻址,相对寻址。
4、请说明MCS-51单片机的外部引脚EA*的作用?答:当EA*为高电平时,访问内部程序存储器,但当地址大于0FFF时,自动转到外部程序存储器;当EA*为低电平时,只读取外部程序存储器。
5、举例说明指令PUSH和POP的工作原理。
答: PUSH进栈指令;首先将栈指针SP加1然后把direct中的内容送到栈指针SP指示的RAM单元中当〔SP〕=60H,(A)=30H,(B)=70H 时 PUSH A;(SP)+1=60H->SP (A)->61H PUSH B;(SP)+1=62H->SP (B)->62H (SP)=62H (61H)=3OH (62H)=7OHPOP出栈指令;当栈指针SP指示的栈顶(内部RAM单元)内部送入direct字节单元中,栈指针SP减1当〔SP〕=62H,(62H)=70H,(61H)=30H 时POP DPH;((SP))->DPH,(SP)-1->SP POP DPL;((SP))->DPL,(SP)-1->SP (POTR)=7O3OH (SP)=6OH特殊功能存放器中,哪些单元是可以位寻址的? B存放器F7H-F0H累加器AE7H-EOH程序状态字PSW D7H-DOH中断优先级控制IP BFH-B8H第 3 页共 1O 页P3 口 B7H-BOH中断允许控制 IE AFH-A8H P2 口 A7H-AOH 串行控制 SCON 9FH-98H P1 口97H-9OH定时器计数器控制TCON 8FH-88H P0 口 87H-80H7、AJMP指令和LJMP指令的区别?答:AJMP这是2kb范围的无条件跳转指令,为了和MCS-48的JMP指令兼容而设SJMP相对转移指令LJMP长跳转指令8、中断效劳子程序返回指令RETI和普通子程序返回指令RET有什么区别?答:RETI除了将压栈的内容出栈外〔即现场恢复〕,还去除在中断响应时被置1 的AT89S51内部中断优先级存放器的优先级状态。
9、AT89S51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突,为什么?答:AT89S51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突。
这是因为它们的控制信号不同,操作命令不同:(1)外扩程序存储器是PSEN*信号为其控制信号,外扩数据存储器是RD*与WR* 信号为其控制信号(2)指令不同,程序存储器用MOVC读取,数据存储器用MOVX存取。
10、MCS-51 单片机片内256B的数据存储器可分为几个区?分别作什么用?答:〔1〕通用工作存放器区,00H - 1FH,共4组,R0-R7,在程序中直接使用〔2〕可位寻址区,20H-2FH,可进行位操作,也可字节寻址〔3〕用户RAM区,30H-7FH,只可字节寻址,用于数据缓冲及堆栈区〔4〕特殊功能存放器区,80H-FFH,21个特殊功能存放器离散地分布在该区内,用于实现各种控制功能11、AT89S51采用6MHz的晶振,定时1ms,如用定时器方式1时的初值〔16 进制数〕应为多少?〔写出计算过程〕答:(216-X)*2*10-6=10-3 X=655036 X=FEOCH12、写出AT89S51的所有中断源,并说明说明哪些中断源在响应中断时,由硬件自动去除,哪些中断源必须用软件去除,为什么?答:外部中断INTO*,定时器/计数器中断T0,外部中断INT1 *,定时器/计数器中断T1,串行口中断。
其中串行口中断TI与RI必须用软件清“0〃〔52系列还有定时器2〕,因为串口中断的输出中断为TI,输入中断为RI,故用软件清“0〃。
13、MCS-51指令系统主要有哪几种中断源?并写出每个中断入口地址?第 4 页共 10 页中断源入口地址外部中断0 0003H定时器0溢出OOOBH外部中断1 0013H 定时器1溢出 0001BH 串行口中断 0023H14、LED的静态显示方式与动态显示方式有何区别?各有什么优缺点?答:静态:显示期间,锁存器输出的段码不变,亮度大,各位LED的段选分别控制,位数多硬件电路复杂;动态:所有位段码线并连一起,各位的亮灭靠片选控制端控制,亮度较低,多位控制电路简单。