单片机

RAM在单片机里究竟有什么用?

允我心安 提交于 2020-02-14 21:48:17
单片机就是个小计算机,大计算机少不了的数据存储系统,单片机一样有,而且往往和CPU集成在一起,更加显得小巧灵活。 直到90年代初,国内容易得到的单片机就是8031:不带存储器的芯片,要想工作,还必须外加RAM和ROM,单片机成了3片机...... 现在不同了,大的小的又是51,又是AVR又是STC,还有什么430,PIC等等,都各说各的好,可是谁也不敢说“我不要存储器”。 单片机的数据存储手段 01 程序存储器ROM 程序存储器里面存放的是单片机的灵魂: 工作程序 。 小的可能只有1KB,最多只能装1024条8位数据,因为实际指令还有许多2字节,3字节指令,所以它还装不下1024条指令。大的也有128KB的。这些8位数据,要么在工厂里做模子光刻进去,要么一次性的烧写进去。 业余或开发,最多也就是用编程器这么一个特殊工具,把调试成功的机器码装载进去,或者像AVR单片机那样自己花几块钱做一条下载线,把电脑里这些东西灌进去(或许是AVR最吸引人之处)。 它一旦进驻电脑的程序存储器中,除了借助上述装置便不能自由改写,在单片机运行时,只是从其中读出指令或固定的数据,所以给程序存储器一个“只读存储器”的别名,简写为ROM,包括用编程器写紫外线擦除内容的EPROM、用电擦除的EEPROM和现在新兴的FLASH ROM。 一次性写入的ROM,仅用于电路和程序固定的批量产品中,实际工作起来

单片机的时钟

十年热恋 提交于 2020-02-14 11:01:57
http://www.easy-key.com/home/article/news_details/aid/5718 我们先来理解几个比较重要的概念:时间周期、指令周期、机器周期,以及系统时钟的工作原理。 时钟周期: 时钟周期也叫振荡周期或晶振周期,即晶振的单位时间发出的脉冲数,一般有外部的振晶产生,比如12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,也就是1/12微秒。通常也叫做系统时钟周期。是计算机中最基本的、最小的时间单位。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期: 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 在标准的51单片机中,一般情况下,一个机器周期等于12个时钟周期,也就是机器周期=12

WT588D

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-13 17:52:26
产品型号:WT588D 1、WT588D语音芯片特征 • 模块封装(带FLASH存储器及外围电路)有DIP16、DIP28,芯片封装有DIP18、SSOP20和LQFP32形式; • 根据外挂戒者内置SPI-Flash的丌同,播放时长也丌同,支持2M~32Mbit的SPI-Flash存储器; • 内嵌DSP高速音频处理器,处理速度快; • 内置13Bit/DA转换器,以及12Bit/PWM输出,音质好; • PWM输出可直接推劢0.5W/8Ω扬声器,推挽电流充沛; • 支持DAC/PWM两种输出方式; • 支持加载WAV音频格式; • 可通过与业上位机操作软件,随意组合诧音,可揑入静音,揑入的静音丌占用内存的容量,一个已加载诧音可重复调用到多个地址; • USB下载方式,支持在线下载/脱机下载;即便是在WT588D诧音芯片通电的情冴下,也一样可以正常下载数据到SPI-Flash; • 支持MP3控制模式、挄键控制模式、3×8挄键组合控制模式、幵口控制模式、一线串口控制模式、三线串口控制模式以及三线串口控制I/O口扩展输出模式; • 三线串口控制模式切换到三线串口控制I/O口扩展输出模式只需发送数据就可以迚行切换。切换后仍可把切换前的最后一工作状态带迚切换后的模式工作; • 仸意设定显示诧音播放状态信号的BUSY输出方式; • 抗干扰性强,可应用在工业领域; • 220段可控制地址位

单片机的学习过程

放肆的年华 提交于 2020-02-13 08:27:39
学习是一个迎接挑战和解决困难的过程,人生中没有目标,无法挑战,就失去了人生的乐趣。下面我们就以 MSP430系列单片机为例,说明单片机的学习过程。   (1)获取资料   以我们的课本为依托,以下面四个网址为参考,基本所有的资料就全了。   参考网址:http://www.ti.com.cn/zh-cn/microcontrollers/msp430-ultra-low-power-mcus/overview.html        http://www.21ic.com/jszt/msp430.htm        http://www.eepw.com.cn/tech/s/k/MSP430        http://www.elecfans.com/tags/msp430/   在网上可以找到FET使用指导、MSP430 F1xx系列使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路。有可能找到的资料是英文的,看英文资料是个难点,也是必须要过的坎儿,无论过没过英语4、6都要学会看英文资料的。建议先看完官方的user guide,加上一些其他相关资料,入门就够了。   (2)购买仿真器FET和实验电路板,这个我们学校已经有了   如果经济条件不错,可以直接购买。自制仿真器FET和实验电路板,这个是个挑战

单片机:EEPROM(IIC总线)

早过忘川 提交于 2020-02-12 12:13:24
I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。 2.png 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。 起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。 接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。 3.png 4.png AT24CXX存储器工作原理 与400KHz I2C总线兼容 1.8到6.0伏工作电压范围 低功耗CMOS技术 写保护功能当WP为高电平时进入写保护状态 页写缓冲器 自定时擦写周期 100万次编程/擦除周期 可保存数据100年 8脚DIP

IIC

≡放荡痞女 提交于 2020-02-12 02:05:58
IIC 是什么: IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送。在信息传输过程中IIC总线上并联的每一个器件既是被控器(或主控器),又是发送器,这取决于他所要完成的功能。CPU发出的控制信号分为地址码和数据码两部分:地址码用来选址,即接通需要控制的电路;数据码是通信的内容,这样各IC控制电路虽然挂在同一条总线上,但却彼此独立。 I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。 开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。 结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。 注意: 使用IIC总线时必须要有起始信号,结束信号和应答信号可以不要。IIC总线进行数据传送时

关于51单片机字符串 EEPROM存储与读取的问题

瘦欲@ 提交于 2020-02-09 01:37:53
# 关于51单片机字符串 EEPROM存储与读取的问题 # 题目如下 <新手小白> 通过串口助手控制 LCD 显示屏,通过 LCD1602 显示并保存在 EEPROM 中,实现 数据的掉电保存(例 如:串口向单片机发送一串英文字符,该字符在 LCD 上显示出 来,若按下 k1 则实现数据的保存,按下 k2 实 现读取上次保存的数据,显示在 1602 上) 效果如下 #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 #include "i2c.h" #include <string.h> typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; sbit k1=P3^1; sbit k2=P3^0; sbit k3=P3^2; //定义按键端口 sbit LCD1602_RS=P2^6; sbit LCD1602_RW=P2^5; sbit LCD1602_E=P2^7; u8 num=0;u8 i,flag; u8 table[16]="I received is: "; u8 table1[16]="My memory is: "; u8 table2[16]; u8 table3

AVR单片机教程——DAC

烈酒焚心 提交于 2020-02-08 22:49:21
本文隶属于 AVR单片机教程 系列。 单片机的应用场景时常涉及到模拟信号。我们已经会使用ADC把模拟信号转换成数字信号,本讲中我们要学习使用DAC把数字信号转换成模拟信号。我们还将搭建一个简单的功率放大器电路,用DAC通过扬声器播放音乐。 SPI总线 集成DAC的单片机不多,ATmega系列就不在此列。我们将要使用的10位ADC是通过SPI总线通信的,因此我们先来学习SPI总线。 SPI是一种同步串行通信总线,支持全双工通信。所谓同步,就是有时钟信号,类似上一讲中的595和165,并且硬件实现上相似;所谓全双工,就是收发可以同时进行,事实上SPI的收发是必须同时进行的,不过你可以有选择地忽略其中一个。 一次SPI通信涉及到两个设备,分别是主机和从机。区分主机和从机的标准并不是发送方是主机,而是发起方是主机。形象地说,我让你给我一个苹果,尽管你是发送方,但我是发起方,因此我是主机。 SPI有4根信号线:主发从收 MOSI 、主收从发 MISO 、时钟 SCK 、片选 SS (以下省略上划线)。主机和从机的 MOSI 、 MISO 、 SCK 一般直接连接,根据应用需要可以省去 MOSI 或 MISO ,从机的 SS 可以连接主机的任意引脚,因为 SS 上的信号极其简单。 两个以上的设备也可以通过SPI通信,连接方式是 MOSI 、 MISO 、 SCK 直接连接

FPGA、单片机、DSP、ASIC的区别

吃可爱长大的小学妹 提交于 2020-02-07 14:17:27
https://zhuanlan.zhihu.com/p/21357765 ASIC原本就是专门为某一项功能开发的专用集成芯片,比如你看摄像头里面的芯片,小小的一片,集成度很低,成本很低,可是够用了。一个山寨摄像头卖才卖30块,买一片ARM多少钱?后来ASIC发展了一些,称为半定制专用集成电路,相对来说更接近FPGA,甚至在某些地方,ASIC就是个大概念,FPGA属于ASIC之下的一部分。 FPGA基本就是高端的CPLD,两者非常接近。我现在用的是ALTERA DE2开发板的CYCLONE系列FPGA。这种器件是用逻辑门来表述性能的。本身他就是一堆的逻辑门,通过硬件描述语言,比如verilogHDL把它转成电路连接,从最基本的逻辑门层面上连接成电路(参见数字电路书上那些全加器触发器什么的)。应该说,虽然看起来像一块CPU,其实是完全硬件实现的。后来因为写代码麻烦,对控制部分比较薄弱,本来跟其他CPU配合使用,即麻烦的算法CPU提交给FPGA,FPGA算完把结果再返回给CPU。可是这样外围电路就变得麻烦。于是提出了SOC设计方法,就是直接在FPGA里写一个CPU出来,既然FPGA万能,做个CPU自然毫无压力。这其中还有软核和硬核的区别,不过除了性能,使用方法大同小异。所谓IP核,就是把各种专用集成电路用硬件描述语言描述,然后烧到FPGA里形成专门的电路,这样就不必另外搭芯片了

STM32单片机程序与6个设计原则之开闭原则

 ̄綄美尐妖づ 提交于 2020-02-06 08:17:20
片头 在上一篇文章中已经介绍了“单一职责原则”在单片机程序中的使用,并以“环形缓存”作为介绍切入点,因为“环形缓存”在应用中比较多,所以在介绍“开闭原则”时依然以它作为介绍切入点。 六个设计原则分别是:A、单一职责原则;B、开闭原则;C、里氏替换原则;D、最少知识原则;E、接口隔离原则;F、依赖倒置原则;G、激活原则; 以上有7个,最后一个是我加上去的,此文主要介绍第二个设计原则:开闭原则在设计STM32单片机软件的应用。 正文 定义:开闭原则表示打开拓展的大门,关闭修改的大门。 要做的“开闭原则”首要任意就是解决(确定)范围,即开闭原则的软件单位。那么在单片机软件开发中的职责单一的软件单位是什么呢?是一个函数,一个结构体,一个枚举定义,一个软件模块(XXX.c与XXX.h)。 首先以一个电路图说明“开闭原则”的例子(在此假设读者具备一定原理图知识)背景假设:此图是一个智能锁的原理图,目前此图版本:V7.0。如下图所示: 由于市场需求需要增加人体识别PIR传感器,需要对V7.0版原理图 “更新”。现在有以下两种更新方案,如下图所示: 以上两种方案,一个调整了原来的信号定义,一个不改变原来信号定义。哪个方案优哪种方案劣?从版本后看:现在到了8.0版,可见之前有很多个版本,需要考虑的情况很多。假设现在V8.0版已经是这个“智能锁”产品的第10个年头了。之前V1.0还有库存吗