单片机

如何判断单片机晶振是否工作及问题排除

大城市里の小女人 提交于 2019-12-26 10:27:07
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 单片机 是可 编程器 件,在执行程序指令时与单片机的机器周期有着直接的关系,而机器周期是由单片机的 时钟 频率/ 晶振 决定的。所以,只要单片机的晶振出现问题,那么单片机就无法工作。单片机具有内部晶振和外部晶振,本文介绍单片机的外部晶振。   1 如何判断晶振是否工作   对于普通的外部晶振而言,在设计 电路 时需要设计两个负载 电容 ,帮助晶振起振。负载电容的取值范围为(15-30)pF,晶振电路如下图所示。   这种晶振内部一般没有滤波整形电路,其输出波形为正弦波,可以通过 示波器测量 晶振引脚的波形。其波形为正弦波,频率与所使用晶振的频率虽有波动但相差不大,则晶振是好的,可以正常起振。   2 单片机问题的排查方法   单片机电路在初上电时可能会存在一些问题,导致电路不能正常工作,在排查问题时可以按照如下几个步骤执行:   1)检查单片机电源是否正常。单片机电源是首先要检查的,可以用 万用表 或者示波器检查单片机的电源、输入电源是否正常,再检查电源和GND之间的阻值,查看是否 短路 ,如果问题排除,则向下执行。   2)检查晶振是否正常起振。根据文中第一部分的介绍检查晶振是否起振。   3)通过简单程序验证。如果硬件电路一切正常,那么就需要通过简单的程序来验证单片机是否正常,常用的方法就是用程序点亮一颗

keil MDK 中使用虚拟串口调试串口

假装没事ソ 提交于 2019-12-25 21:03:25
转自: http://blog.ednchina.com/e_arm/310610/message.aspx 题目有点拗口,想利用串口调试Modbus啊,GPS啊什么的,可是手头没有硬件,怎么办?其实字节KEIL MDK和VSPD(这里两个软件网上都很容易就可以下载到破解版,如果找不到可以给我联系)就可以,这样调试串口就会很方便了。看了很多的文章,写的都很简单(其实也很简单:))。给出个详细一点的教程。 1. 利用VSPD将PC上的两个虚拟串口连接起来。如图我将COM4 和COM5连接起来。点击Addr pair。 2. 2.可以看到Virtual ports上将两个虚拟串口连接到了一起了。 3.虚拟串口准备就绪了。先将直接输入命令的方式来调试。我们打开KEIL MDK的,设置成仿真的模式。点DEBUG.在COMMAND串口输入:MODE COM4 9600, n, 8, 1 说明: MODE命令的作用是设置被绑定计算机串口的参数。基本使用方式为: MODE COMx baudrate, parity, databits, stopbits 其中: COMx(x = 1,2,…)代表计算机的串口号; baudrate代表串口的波特率;parity代表校验方式; databits代表数据位长度; stopbits代表停止位长度。 例如:MODE COM1 9600, n, 8, 1

简单IO口配置_LED灯(STM32)

删除回忆录丶 提交于 2019-12-25 19:53:29
GPIO口(可编程IO) 一、GPIO口概念 GPIO是通用输入/输出端口的简称。可以实现输出(驱动外部电路)、输入(检测外来信号)以及模拟一些通信接口通信协议功能,是单片机和外界进行数据交换的必要窗口。GPIO和外界进行都是通过TTL数字电平(高电平或低电平)来进行数据交换的,高电平表示数字“1”,低电平表示数字“0”。 二、单片机内部系统框图 STM32数据手册 STM32 中文参考手册.pdf GPIO 章节位于:第8章 框图位于105页 I/O端口位的基本结构 三、编程思路: 1、 看原理图:GPIO与设备连接情况; 2、看数据手册 所处时钟总线; 3、固件库手册 (1)寄存器编程(难度系数高、了解一款芯片 举一反三) (2)库函数编程ST(难度系数小、出现问题找问题比较麻烦、容易上手) 四、编程 1、 开启时钟 展开:RCC库函数 RCC_APB2PeriphClockCmd 使能或者失能 APB2 外设时钟 函数原型: void RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph,FunctionalStateNewState) 参数1 : RCC_AHB2Periph 描述 RCC_APB2Periph_AFIO 功能复用 IO 时钟 RCC_APB2Periph_GPIOA GPIOA 时钟 RCC_APB2Periph_GPIOB

灵动微本土MCU厂商具有吸引力的增长点

我只是一个虾纸丫 提交于 2019-12-24 23:57:14
作为各种电子产品的控制和处理核心,微控制单元(MCU)器件是一种集成微处理器(CPU)、存储器(RAM/ROM)、计数器,以及I/O端口的芯片。从MCU内核架构来看,单片机有历经多年的8051,基于Arm CortexM内核的微处理器,以及最近两年流行起来的开源RISC-V微处理器。无论采用哪种架构,各个厂商使用的内核和数字模块都没有太大区别,但在集成的模拟电路和混合信号IC方面就大有不同了。据称国内有一定规模的单片机厂商至少有30多家,例如灵动微.但大都采用跟国际大厂PIN-PIN兼容的设计模式,在很多应用领域(特别是家电和消费类电子产品)只能靠价格竞争来争抢市场份额。 根据ICInsights和立鼎产业研究中心数据统计,2018年全球单片机市场规模约为200亿美元,销售量约为300亿颗,未来几年虽有稳定的增长,但平均售价(ASP)却持续下降。2018年中国MCU市场规模超过390亿元,预计未来3-5年单片机销售额将会继续上涨,但主要集中在低端4位、8位单片机产品,32位高端产品仍将被传统半导体巨头垄断。 国内MCU厂商大部分都有生产32位MCU,适用于不同领域的不同系列产品,灵动微基于ARM Cortex-M系列内核开发的MM32 MCU产品拥有F/L/SPIN/W/P五大系列,200多个型号,累计交付近亿颗,在本土通用32位单片机公司中位居前列。MM32

AVR汇编初探之一《AVR单片机的CPU内部结构》

别说谁变了你拦得住时间么 提交于 2019-12-24 10:57:39
学单片机那么久了,感觉想要深入,还得看汇编语言,至少得了解单片机内部结构。 下面就以ATmega16为例,介绍一下AVR单片机结构和汇编语言。 AVR单片机的CPU内核结构 如上两图,左图是虚线框内AVR CPU的内核结构,右图是AVR单片机内核结构的方框图,可以看出AVR单片机的数据总线(CPU字长)是8位的,也就说它是8位单片机。 AVR采用了Harvard结构,具有独立的数据和程序总线,CPU在执行一条指令的同时,就将PC中指定的下一条指令取出,构成了一级流水线运行方式,实现了一个时钟周期执行一条指令,数据吞吐量高达1MIPS/MHz。 AVR CPU内核由几个重要的部分组成,它们分别是: A.算数逻辑单元ALU(Arithmetic Logic Unit) AVR ALU与32个通用工作寄存器直接相连。寄存器与寄存器之间、寄存器与立即数之间的ALU运算只需要一个时钟周期。ALU操作分为3类:算术、逻辑和位操作,此外还提供了支持无/有符号数和分数乘法的乘法器,操作结果的状态将影响到状态寄存器SREG(Status Register)。 B.程序计数器PC、指令寄存器和指令译码器 程序计数器PC用来存放下一条需要执行指令在程序存储器(ROM)空间的地址(指向FlashROM空间),取出的指令存放在指令寄存器中,然后送入指令译码器中产生各种控制信号,控制CPU的运行(执行指令)。

九齐单片机NY8B062D之ADC 使用

非 Y 不嫁゛ 提交于 2019-12-24 05:31:51
NY8B062D提供 11+1 通道 12 位ADC模数转换器。 可将模拟信号转换为 12 位数字。 参考电压 :外部PA0输入或者内部VDD,4V,3V,2V提供,根据采样电压的范围选取; 模拟输入通道:外部输入通道 PA0~PA4 PB0~PB5 ,内部可选择1/4 VDD ADC操作顺序 依序设定: ①-ADC时钟(ADCLK), ②-ADC采样时间, ③- ADC位数, ④-ADC参考电压(寄存器ADVREFH), ⑤-选择模拟输入通道并将寄存器PACON相应位设置为 1, ⑥-再将GCHS位(寄存器ADMD[4]) 与ADEN位(寄存器ADMD[7]) 设置为 1。 ⑦-在ADEN设置为 1 后必须等待 256us(ADC电路启动时间), ⑧-再将START位(寄存器ADMD[6]) 写 1 来启动ADC模数转换。 ⑨- ADC转换尚未完成时, 读取EOC位(寄存器ADMD[5]) 会得到 0。当ADC模数转换完成后会自动将EOC位设置为 1 代码如下: //----- Initial ADC----- ADMD = C_ADC_En | C_ADC_CH_Dis | C_ADC_PA0 ; //ADC使能,关闭所有输入通道,选择PA0作为模拟输入通道 ADVREFH = C_Vrefh_VDD; //选择参考电压为VDD ADR = C_Ckl_Div8; /

DHT11 单片机

我是研究僧i 提交于 2019-12-23 17:42:44
芯片手册: https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf C语言读取五个数值 来源: CSDN 作者: x1131230123 链接: https://blog.csdn.net/x1131230123/article/details/103665953

51单片机的初了解(10)

人盡茶涼 提交于 2019-12-22 00:52:51
数码管 ----- 显示器件 1、分类:单个(1位)、联排(2位、4位、8位) 2、工作原理:(1)、亮灭原理(内部照明LED)        (2)、显示数字(文字)语言 共阳极和共阴极数码管 (1)、 驱动方法的差异 。 一个数码管内部8颗LED独立互动,8颗LED正极接在一起接Vcc,负极分别接单片机不同引脚,叫共阳极。0是亮。反之,8颗LED负极接在一起接GND,正极分别接单片机不同引脚,叫共阴极。1是亮。 (2)、 驱动电流需求差异 。共阳极接可直接驱动显示,共阴极不能。因为单片机提供的T0口提供的电流大小不够驱动数码管内部的LED显示,需外部电路来提供一个大电流驱动芯片来解决。 静态数码管的初步驱动 接线 :单片机P0端口直接接到共阳极数码管的阴极,故输出0亮,1灭。 #include <reg51.h> void main(void) { P0=0x0; //全亮   P0=0xff; //全灭 P0=0x0f; //4亮4灭 } 验证原理图中数码管段号是否正确 ----- 写代码测试 P0端口的8个二进制中,高位对应P0.7,低位对应P0.0 P0=0xfe; //11111110 对应a P0=0xfd; //11111101对应b 数码管显示数字 ——亮相应几段——IO端口相应引脚输出0 来源: https://www.cnblogs.com/zzz2333/p

应广单片机查表

社会主义新天地 提交于 2019-12-21 06:04:14
由于RAM有限,一般不建议在RAM中建立表格.如果又要用到表格怎么办,别急,应广单片机可以查rom表. 下面用数码管输出为例子,做个简单的表格.注意表格只支持byte类型;最多可以放入255个数据. 包括以下内容: 1.查表 2.循环 3.数码管显示. #include "extern.h" /*端口定义*/ BIT LED : PA.3; byte ucNum; byte ucSeg; /* 共阳led表,共阴取反即可*/ void ReadLedTab ( void ) { _pcadd { ret 0x3f;/*0*/ ret 0x06;/*1*/ ret 0x5b;/*2*/ ret 0x4f;/*3*/ ret 0x66;/*4*/ ret 0x6d;/*5*/ ret 0x7d;/*6*/ ret 0x07;/*7*/ ret 0x7f;/*8*/ ret 0x6f;/*9*/ } } /*相应于main函数*/ void FPPA0 (void) { /*系统时钟为 IHRC默认为16M,因此,IHRC/2=8M*/ .ADJUST_IC SYSCLK=IHRC/2 /*输入值*/ ucNum=0; /*输出值*/ ucSeg=0; /*主循环*/ while (1) { /*更新输入值*/ ucNum++; if(ucNum>10) { /*循环*/ ucNum=1

什么叫51单片机最小系统

末鹿安然 提交于 2019-12-21 04:39:47
单片机 最小 系统 ,或者称为最小 应用 系统,是指用最少的元件组成的单片机可以工作的系统. 对51系列单片机来说,最小系统一般应该包括:单片机、晶振 电路 、复位电路. 下面给出一个51单片机的最小系统 电路图 . 说明 复位电路:由 电容 串联 电阻 构成,由图并结合"电容 电压 不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的 时间 由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书 推荐 C 取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参考电路分析相关书籍. 晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有 串口 通讯 的场合)/12MHz(产生精确的uS级时歇,方便定时操作) 单片机:一片AT89S51/52或其他51系列兼容单片机 特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行.这一点是初学者容易忽略的. 复位电路: 一、复位电路的用途 单片机复位电路就好比电脑的重启部分