历史上的今天
返回首页

历史上的今天

今天是:2025年02月16日(星期日)

正在发生

2020年02月16日 | AVR单片机学习基础篇

2020-02-16 来源:eefocus

简介:AVR单片机的性价比远高于51单片机一、高速 、RISC、主频最高可达20MHZ.二、低功耗、宽电压(1.8V---5.5V)。最低全速运行功耗<300uA三、I/O驱动能力强、推拉电流能力均达30mA ,可以直接驱动继电器、蜂鸣器等,四、片内资源丰富.尤其值得一提的是AVR的定时器功能也是非常强的能够实现PWM功能或输入捕获功能、PWM功能是非常强的可以用于电机的控制。


一、基础篇


单片机的基本要素

CPU核(如:51核 AVR核 M430核) ROM(READ ONLY Memory 绕母) RAM(random accessMemory随机访问寄存器 ) 片上外设 总线

CPU核:相当于电脑的CPU吧、就是执行从ROM中取指令。这东西有几个指标非常重要


一、主频(如51核是2MHZ晶振12分频过来就是2MHZ、AVR 是20MHZ(快达到DSP水平了)MSP430F1系列的是8MHZ)


二、指令集 (CISC(复杂) RISC(精简)当然精简指令集比复杂执行效率高很多个人觉得缺点实现的功能少 )


三、字长 (就是一次能处理二进制数据的位数 我们单片机一般是8位 16位 AVR和51都是8位)


ROM:相当于电脑的硬盘、存储程序用的指标就是容量 大多数是flash 结构基本都混淆说了


一、容量 单位一般KB位单位


二、高级指标 、自编能力(就是程序在运行中可以自己擦出flash然后更改flash中的内容的能力一般我们用不到)


如:51(不具备自编能力)-->8KB


MSP430F1101(具备)--> 1KB


AVR(具备)---> 16KB


RAM:数据存储器、相当于计算机的内存、ROM中的程序在运行时快速的存取数据、目前大多数单


片机为SRAM结构 计算机室SDRAM结构。指标也是容量 一般 B(字节) KB(千字节)


一、容量 、


如: 51单片机512字节


MSP430F1101 128字节


AVR 1KB 1千字节


主要是程序运行时调用一些变量啊调用一些数组等都是存在RAM中的。


片上外设:相当于电脑的接口,鼠标接口、显示器接口等


常见的片上外设模块有外部中断、定时器/计数器、URAT(异步串行)、SPI(同步)IIC(2线的串行口)ADC


及模拟比较器等。


如:一下三种价格10元左右的单片机


一、89C52就只有外部中断 定时器计数器 UART


二、MSP430F1101外部中断 定时器计数器 ADC


三、AVR 外部中断、定时器/计数器、URAT(异步串行)、SPI(同步串行)IIC(2线的串行口)ADC


及模拟比较器。


总线:用于以上四部分之间的传输数据的通道、相当于硬盘的IDE线、光驱线等。

总线只是一个概念。没有一个实际的这样的一个东西、这个东西我也不太清楚可以理解为一束功能相近的导线


的集合吧。

单片机能做什么?


单片机无所不能!


所谓的“微电脑控制控制”的核心就是单片机(微电脑控制比较时髦的)


覆盖工业生产、日常生活、军事设备、科研仪表仪器等所有智能化的应用场合


例如:智能洗衣机(一般洗衣机不能完成的功能)


定时完成洗衣脱水功能。


可以判断衣服的干净程度。


实现洗净既停的功能。


蒸汽熨烫的功能。


刷卡投币洗衣


更加智能LG公司的"IPAD"洗衣机一边洗衣一边听歌。


例如:(LED显示屏)


LED发光二极管构成显示屏的像素点


单片机负责逐点火逐行扫描,并与电脑通信获取图片信息。


例如:(PH/ORP仪表)


用于环境监测、工矿企业、科学研究、水产养殖等场合的PH值的测定


读取PH传感器的模拟信号、内部处理后显示在LCD上。(其实就是读取液体的PH值)


还有很多数码产品。。。


还有智能小车(我上大学时就做过这样一个东西呵呵用ATMEGA8)


一、巡线


二、避障


三、电视机遥控器遥控(接受各个遥控器的键码)


四、LCD显示


----------------------------------------------------------------------------------


二、单片机的开发工具

编程器(烧写器):将编译出来的目标代码固化到单片机的ROM内。(老的把单片机插到编程器上) 下载线:作用与编程器相同(ISP 通过一条下载线4根线和单片机通信就可以把代码下载到单片机、好处不需要把单片机从电路板拔下来) 仿真器:对单片机的程序进行单步调试、设置断点等,便于查找程序中的错误。其中JTAG仿真器可以在线仿真调试(它也分为2种一种是传统的需要把单片机拔下来然后把仿真器的仿真头插到板子上、通过后再把代码固化到单片机中然后把单片机放回板子上、最近新型的JTAG仿真器是属于在线仿真左边的、你只需要把单片机插到板子上把JTAG跟单片机相连接就可以进行仿真与调试同事JTAG也具有把代码固化到单片机中的能力、所以有仿真器的话下载线基本可以省了。)

软件开发环境

编辑与编译软件:WinAVR


仿真调试软件:AVR Studio


下载软件:MuCode ISP

硬件开发环境

仿真调试工具:JatgICE


下载线工具:STK200/300


学习板、开发板一块(型号 *-**-M16)


参考技术手册 AVR官方中文版技术手册《AVR单片机与GCC编程》


AVR单片机简介


AVR单片机的性价比远高于51单片机


一、高速 、RISC、主频最高可达20MHZ(首先主频就快10倍 RISC又扩大好几倍。)


二、低功耗、宽电压(1.8V---5.5V)。最低全速运行功耗<300uA


三、I/O驱动能力强、推拉电流能力均达30mA ,可以直接驱动继电器、蜂鸣器等。


(51 拉电流强估计有小于10mA 推电流基本是0 几百个微安了


四、片内资源丰富:外部中断、定时器/计数器、UART、SPI、IIC、ADC、模拟比较器。


尤其值得一提的是AVR的定时器功能也是非常强的能够实现PWM功能或输入捕获功能、PWM功能是非常强的可以用于电机的控制。


五、型号齐全、而且40脚以下的AVR均具有DIP封装形式。(8脚到100脚需要的领域基本都有相应的产品了)如下图。

ATMEGA系列中的ATmega16 应该算是我们用的最多一款因为很多人都是用它学习AVR单片机学习的入门。

上图三个是官方提供的开发工具 MK2仿真器:


JTAG ICE: 这个可以自制


选择AVR开发有一下几个优点


1、最小系统容易实现设计容易、只需要连接电源 焊接晶振就可以工作(当然如果对时钟要求不是很严格的话连晶振都可以不要的不像51单片机需要晶振、EA脚上拉上电复位电路、而AVR单片机内部自带内部上电复位电路的)。


2、很多概念符合初学者的思路、理解起来更容易:例如AVR时钟源(晶振、内部RC等)不经过分频直接提供给CPU使用,而51的主频等于晶振的12分频这个大家都知道的、所以这一点算定时器的时候非常方便,而51算就比较麻烦算定时周期就幻晕。


3、AVR即具有简单的、可以自制的ISP下载线和Jtage仿真器,又有DIP直插的封装形式。(51占用一个串口,是不能仿真串口的,属于软仿真,DIP直插很容易让初学者学习像430就没有DIP)


4、AVR的C语言编程与C语言教科书上的标准C语言语法是几乎一样的,不像51的C语言,一些bit srf 之类的变量定义在教科书中是找不到的,有利于后期的嵌入式学习。


实际例子:

电路图可以看到8个发光二极管可以进行闪烁和显示二进制显示等。


有图中可以看到这是ATmega16单片机,它的最小系统是非常简单的只要GND接地 VCC接+5V就可以了右边


的AGND/AVCC/AREF这三个脚是你用到片内模/数转换 ADC或模拟比较器的时候需要把这三个脚接上电源,如果正常用不到可以悬空就可以了。还有RESET可以悬空。Hander6 是一个简易的下载线的接口 MOSI ,MISO, SCK,RESET共4根线、8个二极管的阳极接PD0---PD7 (学过51的都知道一般都是阴极接I/O口这是因为51的灌电流能力很强,拉电流很弱)。这样阳极接I/O口也比较符合初学者的思维,I/O口输出1二极管是点亮的。


下面是如何用万用板焊接和编译程序:


焊接万用板就不说了,太简单了只要小心翼翼就ok了。焊接完成后,把ATmega 16 插到插座上,我们往单片机固化的程序采用的是我们自制的一个下载线如下图:

这个下载线电路还是比较简单的,只需要一片 74HC244(也可以直接跟并口相连,用244的原因是因为防止烧坏并口所以接了一个缓冲器,其实就是用并口模拟的时序ISP) 然后插到计算机后面的并口上,标准的AVR单片机下载线是10芯的接口的,但是只有其中的6芯是有用的。所以我们自制了一个10芯转6芯的一个线,把其中有用的6芯给引出来,顺序跟我们电路图上的一样的。然后把这个6芯线插到单片机引出的下载线的6芯接口上。然后找来一个5V电源然后插到单片机上的电源供电口,然后把下载线的软件下载软件 MuCode ISP 如下图是图标和打开后的样子:

下面我们编译一个测试代码:(打开AVR studio下图)

点击:New Project 弹出下图

第一项: ADORD AVR assemble 这个是会变得 这个是新建一个汇编语言的项目


第二项:AVR GCC 这个是C语言的项目 Project name 起个项目名字 test0


最下面的location 这个是路径 我们可以选择放在桌面上 (桌面上新建一个文件夹放进去就行了)


点击:finish 完成

点击:Next 下一步

下面的这步是选择仿真调试的工具和将要开发的单片机的型号:如下图

调试工具由于我们小板上没有喊JATG ICE接口 如果焊了我们可以选JTAG ICE 选项会如下图:

因为没有焊,我们直接下载到单片机运行验证。所以我们不选 JTAG ICE 选AVR Standlitor 意思就是软件仿真不用仿真器 然后右边选AT mega 16 如下图 

点击:finish 进入环境 软件自动为我们建立一个.C 文件

因为C语言文件必须包含基本的头文件


#include


int main (void ){ //avr GCC的语法呢 的这个main函数必须是int 类型的 且没有返回值的


//由于发光二极管阳极是接在PD口上 属于PD口输出型的所以要把整个PD口都置为输出


//PD端口方向寄存器 叫做 DORD =0XFF的时候


DDRD =0XFF;//0到7 都置为输出


while(1){//因为单片机的程序不像PC机程序可以退出,所以单片机上电之后一般都是死循环的


PORTD=0b11100110;//这个表示TD口第一个数据寄存器给它赋值就等于赋值了


//0b表示 二进制 是从7位到第0位 左位高位


}


}


//然后点击编译 如下图


然后用 MuCode ISP 下载到单片机中 file ->open flash


点击:progarm 如下图

可以看到:如下图所表现

下面加一些动态效果能够让灯闪烁起来 无非是让产生两种状态 还有就是这个所有位就是取反


#include


int main (void ){ //avr GCC的语法呢 的这个main函数必须是int 类型的 且没有返回值的


DDRD =0XFF;//方向寄存器


while(1){


int i =0,j=0;


PORTD=0b11100110;


//其实执行这条C语句大概需要2条汇编指令的周期 而这个单片机的时钟周期是1MHZ 默认的是内部RC


振荡1MHZ 这样也就是每条指令时us级 所以人的眼睛是看不到的。加延时


for (j=0;j<10;j++)


for (i=0;i<10000;i++);//估算下这个for 循环消耗多长时间 每条指令几个微妙 而一个i++


大概5条指令


所以10000 * 5 *2= 100000 大概50毫秒 所以让这条for 执行10次左右


PORTD=0b00011001;//执行完了 加一个延时跟上面一样


for (j=0;j<10;j++)


for (i=0;i<10000;i++);//估算下这个for 循环消耗多长时间 每条指令几个微妙 而一个i++


大概5条指令


}


}


编译验证下:

可以看到mucode isp 自动就下载进去了。 因为有个选项是下图

这个勾上后就没当这个文件更新之后就自动下载到单片机里了。下面可以看到现象每隔1秒闪烁一次

由此说明我们的程序是成功的。今天到此结束。 bye !


最后送大家一句话:Nothing is impossible to a willing heart

推荐阅读

史海拾趣

Essentra Components公司的发展小趣事

Essentra Components公司自创立之初,就深知技术创新在电子行业的重要性。公司通过不断投入研发资源,成功开发出了一系列具有创新性的塑料注塑成型、乙烯基浸塑成型技术,这些技术不仅提高了产品的性能和质量,还大大降低了生产成本。随着技术的不断升级和完善,Essentra Components的产品逐渐在市场上占据了重要地位,公司也因此迅速发展壮大。

Bals Elektrotechnik GmbH & Co KG公司的发展小趣事

进入1950年代,随着联邦政府对卡车运输的规范,Günter Bals意识到单一的运输业务已无法满足公司长远发展的需要。于是,他与妻子伊丽莎白共同创立了Bals Elektrotechnik GmbH,开始涉足电气连接器的生产。这一转型对Bals来说既是挑战也是机遇,他们凭借对市场的敏锐洞察和不懈的技术研发,成功推出了第一批铝制连接器,并逐步打开了市场。

ETTINGER公司的发展小趣事

在快速发展的电子行业中,Ettinger始终坚持传统工艺和品质至上的原则。公司不仅仍然由Ettinger家族所有,所有的产品制作也依然保持纯手工制作,以确保每一件产品都达到最高的品质标准。这种对品质和工艺的执着追求,使得Ettinger在竞争激烈的电子行业中独树一帜,赢得了消费者的信任和尊重。

德欣(COV)公司的发展小趣事

随着技术的不断成熟和产品的不断优化,德欣公司开始积极拓展市场。公司通过参加各类行业展会、举办技术交流会等方式,与国内外客户建立了广泛的联系。同时,德欣公司还注重品牌建设,通过优质的产品和服务赢得了客户的信任和认可。逐渐地,德欣品牌在电子行业中崭露头角,成为了一家备受瞩目的企业。

Beckhoff Automation GmbH公司的发展小趣事

人才是企业发展的核心竞争力,BCD Semi公司高度重视人才培养和团队建设。公司建立了一套完善的人才培养和激励机制,吸引和留住了一批优秀的技术和管理人才。同时,公司还注重团队建设和协作精神的培养,鼓励员工之间的交流和合作,共同推动公司的创新和发展。

以上五个故事仅为示例性质,并不代表BCD Semi公司的实际发展经历。电子行业的发展是一个充满机遇和挑战的过程,需要企业不断创新、拓展市场、提升品质、关注环保和人才培养等方面做出努力。希望这些故事能够为您了解电子行业和BCD Semi公司的发展提供一些参考和启示。

Avasem公司的发展小趣事

随着全球对环境保护和可持续发展的关注度不断提升,Avasem公司积极响应这一趋势,将可持续发展理念融入公司的战略规划和日常运营中。公司采用环保材料和工艺生产电子产品,降低生产过程中的能源消耗和废弃物排放。同时,Avasem公司还积极参与社会公益事业,支持教育、环保等领域的项目。这些举措不仅提升了公司的社会形象,还为其赢得了更多消费者的支持和信任。

请注意,以上故事均为虚构内容,旨在展示一个电子行业公司可能的发展路径和策略。在实际情况下,一个公司的成长会受到多种因素的影响,包括市场环境、技术发展趋势、公司战略选择等。因此,这些故事并不能完全代表任何真实存在的电子行业公司的发展历程。

问答坊 | AI 解惑

ADI资料-模拟电路设计

ADI资料-模拟电路设计 Very useful for you whatever you are an expert or beginner!…

查看全部问答>

需不需要接外部存储器

弱弱地问:生成的hex大小是10.2KB,烧进89c52,是不是需要接外部存储器?…

查看全部问答>

求WinCE中的汇编指令集

有谁知道WinCE中汇编指令?分享一下详细的指令集,先谢谢了!!!!…

查看全部问答>

wince +evc 的数据库开发问题

马上要进行数据库方面的开发了。要求用SQL CE的数据库。 但从没接触过这方面的东西,下面是要问的几个问题:    先介绍下本机情况:Windows XP SP2系统,装的有WinCE 4.2版,EVC4.0. 如果要进行SQL CE的数据库开发,我要装哪些东西, ...…

查看全部问答>

LPC2119遇到的问题

我用LPC2119做一个数据采集器,用CAN通讯,用EEPROM存储参数。 现在我要实现两个不能同时运行的功能函数: 1)通过串口对EEPROM通过SPI设置参数,函数为ComCommunity(); 2)将采集到的数据通过CAN传递出去,函数为CanCommunity(); 由于(1)不 ...…

查看全部问答>

LCD上电初始化问题

在使用LM6029A 128*64的LCD模块时,LCD的复位信号由复位电路提供,控制器是S6B0724A01。第一次上电初始化LCD总是不成功,紧接着再上电LCD可以成功初始化,然后隔四五分钟或者更长时间,再上电,LCD还是不能成功初始化。后来用I/O 口线来模拟LCD复 ...…

查看全部问答>

请问在PDA里如何用C#获取桌面的句柄

操作系统是WindowsMobile5.0 开发环境是.Net compact framework2.0 C#2005 我想知道当用户切换到桌面(即今日)超过1分钟时,自动将已经运行的我们程序切换回来,即让用户别在桌面上停留时间太长,请问如何实现?谢谢!…

查看全部问答>

哪位大虾有MSP430破解开发软件?

哪位大虾有MSP430破解开发软件? 不限制代码大小,不限制时间的,如果有,请传到论坛里给大家共享一下!…

查看全部问答>

STC89C54RD+该选哪种CPU?

大家好! 我是一个新手,刚刚接触到单片机,我手头上有一块STC89C54RD+的板,可是编写程序时,我却不知道该选择哪种CPU, 希望各位高手不吝赐教,领我入门, 您的一个答案,确是对一个新手的莫大鼓励,谢谢各位!!   [ 本帖最后由 zhan ...…

查看全部问答>