前记:为了让更多的单片爱好者能够快速、通俗地学会单片机相关技术,缘缘我将从一个小白的情况出发,分享在学习单片中的点点滴滴,希望对和我一样小白们一个帮助。(新手跟随,老鸟绕道)----单片速成自学手记

缘识单片机

对 我而言,学习单片机无非是因为爱好,这个看似和我没有任何联系的东西却在一次偶尔的情况下与我结缘,使我深深地爱上这个本来与我无缘的家伙——单片机。学 习它的原因很简单,就是为了让家电控制更智能点,为什么这样做呢,因为我很懒,嘘!可别对别人说哦,尤其是咱这论坛的版主们,我好歹也是一起的,知道我这 么懒,别人会怎么看。

我 的想法很简单,只不过就是为了在常规的按圧式开关中加入遥控,这本来是一个很简单的想法,却因为简单而搞得复杂,所以,就这么不合情理地开始了我的单片机 之旅,那么如何学习单片机,单片是什么,单片机能干什么,学习单片机有什么好处,面对初学的我们,总是有很多个为什么,如果把这些为什么写在一起,那就是 “十万个为什?”,那么请跟随缘缘,一起慢慢解开这些为什么吧,让缘缘用通俗的方法去说明这些难懂的理论吧,那么该怎么学呢,这里缘缘给你们简单地说一 下:

1、认识单片机:

那么单片机是什么,在我最初的理解中,我认为那就是个电子的、智能的、可控制的一类数字开关,因为它所干的就是对于外界电路的控制与

通信,如果真要搞清楚单片机是怎么回事,有好多书可以告诉你答案,但对缘缘的来说,读书很吃力,况且时间不够,所以以简单的方式弄懂了这个原理,其单片机基本功能如下:以经典的8051单片机说明:

手工指针的教程(系列教程缘缘学单片)(1)

这里有几个部分分别记下就行了:

P口(P0、P1、P2、P3、):这是干什么的呢,在这里,你只要把它们认为是可以打开或关闭的一组数字开关就行了,8个开关是一组,共四组,即32个,这些开关是可以控制的。

VCC和GND:VCC是电源正极,GND是电源负极,在直插的单片机和其它芯片中,有缺口的右边(有些上面是个圆凹点)的右上边第一个是VCC,左

下边最后一个是GND。

晶震:你就想成是单片机的心脏就行了(必须的,没有心脏单片机活不了,估计没有心脏,咱也活不了)

经典的单片机是40个管脚,现在通过上面的介绍,只剩下4根了,这四根分别是:

  1. 复位电路:RST(复位就是看做是重新启动)

  2. 充许接外部存储器:PSEN(一般不用)

  3. 输出1/6时钟周期脉冲:ROG(一般也不用)

  4. 内部存储选择端:(EA,大多情况下,这个也不用,一般接VCC)

看懂了基本情况,是不是对单片机有个初步了解呢,那么,对它的功能缘缘会在后面的帖子中分类举例说明,当把例子弄明白时,单片机的功能也就搞清楚了。

那么如何样去做实验呢,最好的方法就是自己焊块板子,或者弄套开发板,但缘缘后来发现,所有的开发板都有个问题,高度集成,不利于学习,很多的开发板只是有例程,但对原理介绍很少,最后还得自己查资料,所以,焊板子对学习来说,是一种很好的选择。

如果你说你不会焊,那么不要紧,你先买个烙铁,然后弄块万用板,再搞块单片机与紧锁座,加个开关按键、LED灯,再配个晶震与电容,只要对你对照下单片的说明文件,这事很好搞定。

手工指针的教程(系列教程缘缘学单片)(2)

记 得当初有个叫阿基米德的疯子说过这样一句话:“给我一根棒子,再给我一个支点,我可以橇动球!”估计这人是不想活了,拿地球开玩笑,他不要命,咱还要命 呢!那么我现在可以对你说:“给你一把烙铁,你可以做个最小单片系统!”这可不是吹牛哦。如果闲麻烦,网上有单片机最小系统,价格也不是很高,淘宝的都懂 得的。有了单片机,再搞套烧写设备,这个最好买,就算弄个块子,线还得自己买,不贵的。

有了以上这些了,我们继续吧:

2、掌握8字规则:

很多的都与8有关系,如:我们的P口(开关)每一个是8位,发送的数据一般是8位有效数据,很多的都与8有关系,单片机是8位的,很多开发板的LED是8个,数码是8个LED显示的,以后所有的所有,都与8有着千丝万履的关系……

3、二进制、十进制、十六进制换算:

说起这个事,在开始我很难弄明白,后来才能搞懂了

系统中常用到16进制,所以,以16进制为主,进行二进制与十进制、16进制转换就容易多了(十六进制的标记为0x)。

十六进制的一位是4位二进制,那么4位二进制全为1的情况下是多少:

即1111 这时,我们记位这么个规则,从右向左,第一个为低位,代表的数值是1,第二位低表的数值是2,第三位代表的数值是4,第四位代表的数值是8,那么1111换算成十进制就是8 4 2 1=15,换算成16的一位进制就是F。

那么,如果是两位的十六进制该怎么换算呢:

假如二进制为:1111 1111,换算成16进制是(8 4 2 1)(8 4 2 1),即为FF,记做0Xff,换算成10进制就是255(用操作系统自带的计算器算),

如果二进制为1010 0110,即1代表对应的位有数值,0代表对应的位没有数值,1010就是(8 0 2 0=10),16进制对应A,0110为(0 4 2 0=6)16进制对应为6,1010 0101即为16进制0XA6;

假如有个0XEA十六进制该怎么换算成二进制呢:

这里有个原则,先分解最前面的一位,分解方法是:

如果比8大或者等于8,先减8,减过的数等于0或大于0最高位记1,比8小,记0,数值与下位相减,减过8的数比4大或等于4,再减4,等于0或大于0高位后第二位标记1,比4小,记0,数值与下位相减,减过4的数比2大或等于2,再减2,等于0或大于0高位后第三位标记1,比2小,记0,所有与2减过的数值记最后一位。

那么0xEA先分解E,因为E在16进制中代表14,那么二进制的最高的一位是14-8=6,即高位为1,第二位是6-4=2,即为1,第三位是2-2=0,即第三位也为1,第四位是减剩下的,也就是0了,那么E就是1110,然后我、分解A,A在16进制中表示10,这时二进制的最高位就是10-8=2,这时,高位为1,下一位是2-4,减不过,记成0,第三位是2-2=0,记成1,最后一位是减剩下的,就是0,那么A就是1010,最后得出0xEA就是1110 1010。

怎么样,还算简单吧。

对于单片机处理,只要学会二进制与十六进制的换算就行了,对于10进制的换算,用计算器就可以

4、掌握常用的单位换算:

常用到的有电压、时间、电阻、电容:

电压:10的3次方mV=V=( 10的-3次方)kV(看看就行)

电阻:1MΩ =1000KΩ=1000000Ω(看看就行)

电容:1F=10^6uF=10^9nF=10^12pF(看看就行)

时间:秒(S)=1000MS(微秒),MS=1000US(毫秒)(记住)

5、明白字节与位,地址:(记下)

⑴ 8个二进制表示一个位,一个字节是8个位,(一个存储单元由8个二进制组成,为一个字节)

⑵一个英文字符占用一个字节,即8位,一个汉字占用两个字节,即16位。

⑶1 byte (B) = 8 bits(b) 字节=8个二进制位

1 Kilobyte(K/KB)=2^10 bytes=1,024 bytes 千字节

1 Megabyte(M/MB)=2^20 bytes=1,048,576 bytes 兆字节

1 Gigabyte(G/GB)=2^30 bytes=1,073,741,824bytes 千兆字节

1 Terabyte(T/TB)=2^40 bytes=1,099,511,627,776bytes吉字节

⑷地址是物理空间中某一存储单元的一个编号,称为“单元地址”,简称地址(地址内可包含多个位,一般有8位,16位,32位……)

6、掌握C语言常用的语句与名称:

从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支结构、循环结构。这三种基本结构可以组成所有的各种复杂程序。c语言提供了多种语句来实现这些程序结构。本文将介绍这些基本语句及其应用,使读者对c程序有一个初步的认识,为以后的学习打下基矗

c程序的语句

c程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。

c语句可分为以下五类:

1.表达式语句

表达式语句由表达式加上分号“;”组成。其一般形式为:表达式;执行表达式语句就是计算表达式的值。例如: x=y z;赋值语句y z;加法运算语句,但计算结果不能保留,无实际意义i ;自增1语句,i值增1

2.函数调用语句

由函数名、实际参数加上分号“;”组成。其一般形式为:函数名(实际参数表);执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值。(在第五章函数中再详细介绍)例如printf("c program");调用库函数,输出字符串。

3.控制语句

控制语句用于控制程序的流程,以实现程序的各种结构方式。

它们由特定的语句定义符组成。c语言有九种控制语句。可分成以下三类:

(1)条件判断语句

if语句,switch语句

(2)循环执行语句

do while语句,while语句,for语句

(3)转向语句

break语句,goto语句,continue语句,return语句

4.复合语句

把多个语句用括号{}括起来组成的一个语句称复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句,例如

{

x=y z;

a=b c;

printf(“%d%d”,x,a);

}

是一条复合语句。复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。

5.空语句

只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如 while(getchar()!='\n');本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。

赋值语句

赋值语句是由赋值表达式再加上分号构成的表达式语句。其一般形式为:变量=表达式;赋值语句的功能和特点都与赋值表达式相同。它是程序中使用最多的语句之一。在赋值语句的使用中需要注意以下几点:

1.由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式变量=(变量=表达式);是成立的,从而形成嵌套的情形。其展开之后的一般形式为:变量=变量=…=表达式;

例如:

a=b=c=d=e=5;按照赋值运算符的右接合性,因此实际上等效于:

e=5;

d=e;

c=d;

b=c;

a=b;

2.注意在变量说明中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。

3.在变量说明中,不允许连续给多个变量赋初值。如下述说明是错误的: int a=b=c=5必须写为 int a=5,b=5,c=5;而赋值语句允许连续赋值。

4.注意赋值表达式和赋值语句的区别。赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。

下述语句是合法的:

if((x=y 5)>0)z=x;

语句的功能是,若表达式x=y 5大于0则z=x。

下述语句是非法的:

if((x=y 5;)>0)z=x;

因为=y 5;是语句,不能出现在表达式中。

7、掌握C语言常用的运算:

运 算 符范 例说 明
算术运算 a ba变量值和b变量值相加
-a-ba变量值和b变量值相减
*a*ba变量值乘以b变量值
/a/ba变量值除以b变量值
%a%b取a变量值除以b变量值的余数
=a=5a变量赋值,即a变量值等于5
=a =b等同于a=a b,将a和b相加的结果存回a
-=a-=b等同于a=a-b,将a和b相减的结果存回a
*=a*=b等同于a=a*b,将a和b相乘的结果存回a
/=a/=b等同于a=a/b,将a和b相除的结果存回a
%=a%=b等同于a=a%b,将a和b相除的余数存回a
a a的值加1,等同于a=a 1
--a--a的值减1,等同于a=a-1
关系运算>a>b测试a是否大于b
<a<b测试a是否小于b
= =a= =b测试a是否等于b
>=a>=b测试a是否大于或等于b
<=a<=b测试a是否小于或等于b
!=a!=b测试a是否不等于b
逻辑运算&&a&&ba和b作逻辑与(AND),2个变量都为真时结果才为真
||a||ba和b作逻辑或(OR),只要有1个变量为真,结果就为真
!!a将a变量的值取反,即原来为真则变为假,原为假则为真 内
位操作运算>>a>>b将a按位右移b个位,高位补0
<<a<<b将a按位左移b个位,低位补0
|a|ba和b按位做或运算
&a&ba和b按位做与运算
^a^ba和b按位做异或运算
~~a将a的每一位取反
&a=&b将变量b的地址存入a寄存器
指针**a用来取a寄存器所指地址内的值

8、对外围电路,先了解基本原理,再编程加深理解,举一反三,融汇贯通!

对于外围电器,先要弄清楚正负极,然后再去分析中间的负载,这个在以后的帖子中附带说明。

9、对程序编写力求先简单后复杂,先模块化,再组合套用。

10、对于不懂的部分知识,查阅相关资料,很多资料网络上齐全,只有你想不到的,没有你不想要的。

11、强化练习,及时总结。

啰啰嗦嗦说了这么多,这就是相关的基础知识,其它的都会在以后的帖子中附带讲述,不知道和我一样的你看得怎么样了,如果不明白,咱慢慢来,相信你的坚持会成就你的未来。

更多内容请关注“云汉电子社区”微信公众号平台,或者登录云汉电子社区官网bbs.ickey.cn 查看

缘缘学单片—经验手记——2、LED,跟着感觉走

缘缘学单片—经验手记——3、烧写编程伤不起

缘缘学单片—经验手记——4、明明白白单片芯

缘缘学单片—经验手记——5、驿动的心

缘缘学单片—经验手记——6、LED,看我七十二变

缘缘学单片—经验手记——7、与数共舞

缘缘学单片—经验手记——8、LED,点点滴滴全是爱

缘缘学单片—经验手记——9、单片外围芯片之天仙配

缘缘学单片—经验手记——10、中断,断不了,理还乱

缘缘学单片—经验手记——11、想说爱你并不是很容易的事

缘缘学单片—经验手记——12、我用自己的方式爱你

关于云汉电子社区云汉电子社区(bbs.ickey.cn)是云汉芯城的特色频道,2013年7月份上线至今,已发展成为国内最大的电子工程师社区,同时也是IC原厂最集中的样片申请中心和最专业的电子工程师技术交流论坛,并为电子工程师提供研发阶段的小批量电子元器件采购服务。

,