博客
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。常用于单片机等数字电路仿真,分为ISIS和ARES两个程序,前者用于仿真,后者用于设计PCB。我们常使用ISIS仿真软件,其界面如下图。
<center><img src="http://mcu.eetrend.com/files/2018-01/博客/100009732-33051-1.jpg" alt="单片机小白学步(12) Proteus仿真软件简介"></center>
Arduino UNO R3的主处理器ATMega328P上有3个8位的输入/输出端口,分别是PB,PC和PD。Arduino IDE提供的Blink示例可以帮助我们了解端口的数字输出功能:
// Blink.ino
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
这个示例使Arduino开发板13(PB5)引脚上的LED闪烁,与数字输出相关的Arduino库函数有:
STC89C52 共有512字节的 RAM,是用来保存数据的,比如我们定义的变量都是直接存在 RAM 里边的。但是单片机的这512字节的 RAM 在地位上并不都是平等的,而是分块的,块与块之间在物理结构和用法上都是有区别的,因此我们在使用的时候,也要注意一些问题。
示例:
<pre>STM32 | F | 100 | C | 6 | T | 6 | B | XXX
1 2 3 4 5 6 7 8 9</pre>
从上面的料号可以看出以下信息:
ST品牌ARM Cortex-Mx系列内核32位超值型MCU,LQFP -48封装 闪存容量32KB 温度范围-40℃-85℃;
<strong>产品系列:</strong>
STM32代表ST品牌Cortex-Mx系列内核(ARM)的32位MCU;
学习单片机时,我们通常有必要选择一款合适的成品单片机开发板,毕竟所有的电路都自己搭建学起来很不容易。这一篇简单介绍下成品开发板相关的知识。
成品开发板我们可以很容易的从淘宝或电子市场买到。通常都有配套的学习资料,尤其是配套可以直接下载到板子中使用的程序示例,能大大提高我们的学习效率。
<font color="#33b1c8"><strong>电路图的识别</strong></font>
<strong>一、如何开始嵌入式学习</strong>
1、选择合适的硬件平台
根据自己的性能需求,选择合适的开发板(微处理器MPU以及外围设备能够满足你的需求)。
2、选择合适的嵌入式系统
一般比较主流的嵌入式操作系统有Android和Linux(当然还有其他操作系统,这里不多说)。相对来说,Android系统偏向界面交互,对于开发应用软件比较适合。而Linux系统更偏向外设控制,因为其编写相应的驱动比Android容易。
<strong>二、MPU和MCU</strong>
许多初学者搞不清微控制器(MCU)和微处理器(MPU)之间的区别。其实很简单就可以区分。
IAP(In Appplication Program),即在应用中可编程。
顾名思义,就是在系统运行的过程中动态编程,这种编程是对程序执行代码的动态修改,而且毋须借助于任何外部力量,也毋须进行任何机械操作。这一点有别于isp。
一般来说,isp在进行加载程序以前,需要设置某些功能引脚,迫使IC转入自举状态。而IAP则不需要作硬件上的任何动作,只要有合法的数据来源。数据源既可以是内部程序运行的结果,也可以来自UART,I/O口或者总线。
换个角度来来说,IAP不仅提供现场或者远程软件修改升级,也可以把它理解成idate,pdate或者xdate,替代I2C之类的外部E2PROM,存储并加密数据。
细说ISP 和IAP 的区别
UART与USART都是单片机上的串口通信,他们之间的区别如下:
首先从名字上看:
UART:universal asynchronous receiver and transmitter通用异步收/发器
USART:universal synchronous asynchronous receiver and transmitter通用同步/异步收/发器
从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型,事实也确实是这样。但是具体增强到了什么地方呢?
1、单片机延时程序的延时时间怎么算的?
答:如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。
如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。
------------------------------------------------------
数组前不加“code”或“data”,则默认将数组存放在程序存储器中;
code 指定数据是存储在代码区,数据是在编程的时候跟代码一起写入代码存储器,运行过程中不能改变;
xdata 指定数据是存储在外部数据存储器了;
data 指定数据存储在内部低128字节数据存储器里,如果变量不指定存储位置,默认就是data型,这部分存储器寻址速度最快;
idata 指定数据存储在内部低256字节数据存储器里,但51只有128字节内部RAM,52才有256字节;
pdata 指定数据存储在外部低256字节数据存储器里,这时候寻址用8位寄存器R0和R1,而不用16位的DPTR,寻址速度比xdata快。
单片机C语言unsigned char code table[] code 是什么作用?
关于单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。
单片机复位电路原理是在单片机的复位引脚rst 上外接电阻和电容,实现上电复位,而复位时间是(时钟周期=12×振荡周期,振荡周期=1/f),这个时间只能大不能小,具体数值可以由rc电路计算出时间常数。
单片机复位后各寄存器的状态
1.avr为risc结构cpu,大多数指令在一个时钟周期内完成,所以MIPS比51高。
2.avr单片机的复位电平为负逻辑,而51为正逻辑 。
3.汇编的程序不通用,但是如果用c写的程序还是可以移植的。
AVR 单片机是ATMEL在90年代推出的精简指令集RISC的单片机,跟PIC类似,使用哈佛结构。可以这样类比,AT89C52相当于复杂指令集CISC的intel的奔腾CPU,AT90S8515相当于AMD的精简指令集RISC的K7 CPU。
以上是指令集的类比。AVR是专门为使用高级语言设计的,在使用高级语言时, 会比89C52有较佳的表现。 可以直接替代89C52的CPU是AT90S4414和AT90S8515。在这里以AT90S8515来做说明,虽然AT90S8515的引脚跟AT89C52差不多,但是还有一些区别。
作为基础知识补充,本篇详细介绍了串口、51单片机的ISP下载等知识,虽然这些知识并不一定要很了解也能学习单片机,但是有一些概念有时对解决问题还是很有好处的。
前面已经说了,单片机相当于一个微型电脑,所以单片机是可以执行程序的。在电脑上,我们可以上网下载各种游戏各种软件,但是单片机这灰不溜秋的一块芯片,怎么让它执行程序呢?不要急,这就给大家介绍相关知识。这里涉及到一些专业词汇,可能大家不明白,但是并没有很大影响,大致了解就好了,有兴趣的可以上网搜索去了解下。另外等学到后面,不少概念也自然就明白了。
<strong>串口(RS232、UART)</strong>
本次学习采用PIC16F877A芯片及HJ-5G 开发板
<strong>一、IO口操作</strong>
1.1 设置I/O口方向:input or output
TRISx 方向寄存器 (Transport and Receive Index Storage)
1.2 设置I/O口的数值
<pre style="overflow-x:auto; background-color:#e9e9e9;">PORTx 数值寄存器 端口
P.S.复位后初始状态:输入 数值为1 (记忆方法 input 1;output 0)</pre>
这一篇我们继续<a href="http://mcu.eetrend.com/blog/2017/100009353.html">上篇《单片机小白学步(8) 用面包板搭建实验电路》</a>的话题,讲解自己搭建电路的另一种方法:用万用焊板搭建电路。在此之前,先普及几点基础知识。
<strong>电路板</strong>
首先我们了解下电路板。前面介绍了面包板可以搭建电路,但是在实际制作出来的电子设备中,我们用的通常都是电路板。电路板主要用于固定元器件,对元器件之间进行可靠的连接。
我用的是STM32库函数:两个知识点:
一、RTC时钟框图分析(重要)
二、时间是怎样显示出来的(简析)
一、RTC时钟框图分析(重要)
先熟悉一下几个知识点:
1、STM32的实时时钟(RTC)是一个独立的定时器!
2、RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位火从待机模式唤醒后RTC的设置和时间维持不变。
RTC这章中,对RTC相关的寄存器的操作特别重要,我在这里不解释了,请查阅手册。。
先上图!
初学51总是会有这样的疑问,从电脑下载程序到开发板后,程序去哪了? C51中,用户或应用程序,系统程序和数据都是存放在哪的?
51单片机从物理结构上,可分为片内,片外程序存储器,片内片外数据存储器。
51单片机从功能上,有程序存储器,片内数据存储器,特殊功能寄存器,位地址空间,片外数据存储器。
<strong>程序存储器</strong>
51单片机的程序存储器用于存储代码和一些固定表格常数。
可寻址的程序存储器空间为64KB。
51单片机的从物理角度上可分为:片内,片外程序存储器,作为编址空间,编址规律是:先片内,后片外,片内片外连续,不重叠。
随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采集会需要一个串口,上报又需要另一个串口,这就要求单片机具有双串口的功能,但我们知道一般的51系列只提供一个串口,那么另一个串口只能靠程序模拟。
前面介绍了几种准备实验板的方案。这里先介绍方案一,我将同大家一起搭建一块简易的单片机实验板,一起感受动手实践的乐趣。
我们有两种自己搭建实验板的方案,一是用面包板,二是用万用焊板。本篇我们介绍面包板搭建电路。
面包板和面包板线
面包板是一种用于电路实验的器材,上面有很多孔,我们可以将元器件和导线插进去,组成我们需要的电路。如果发现电路有错,拔下元件和导线重新插接即可。电路做完后,所有元件还可以拔下来再次使用。
我的工作主要是主导新产品试产,在实际的工作中,经常出现因为RD人员的设计“疏忽”导致试产失败。这个疏忽要加上引号,是因为这并不是真正的粗心造成的,而是对生产工艺的不熟悉而导致的。为了避免各位做RD的朋友出现同样的错误,或为了更好的完成试产我对一些常见的问题点做一些总结,希望能对大家有所帮助。
1、IC封装的选择。现在电子产品都在向环保的无铅发展,欧洲2006年7月1日就要实现全部无铅化,,现在正处于有铅向无铅的过渡期。因此,元器件厂商提供的元器件也出现无铅与有铅两种规格,有的厂商甚至已经停止了有铅元器件的生产。