关于单片机型号的介绍:编程
STC89C52RC40C-PDIP 0721CV4336.....函数
AT89C51,S51,LV51学习
STC89E,LE,C52AD编码
总线型:有4组IO口,P0-P3,每组都是8位spa
非总线型:不能构成一组,例如P3。设计
单片机内部总线是8位为一个总线。3d
此处不会也没事,后面用到会单独讲code
程序存储器、数据存储器都有总线(3条,送数据的时候,数据是在总线跑)与之相连,暂时不会没事blog
单片机由这几部分组成:(做为了解)接口
C-51(C语言),ASM-51(汇编语言),了解便可
须要知道,不然浪费空间等
char是8位,而bit就是一位
单片机每一个寄存器都有一个固定的地址,这里sfr不经常使用
sbit经常使用,PSW是寄存器,^2是寄存器的第二位,定义后,之后想要使用直接使用OV便可
头文件以后会说
逻辑与、逻辑或、逻辑非和数字电路中相同:0&&1=0 1&&1=1 0||1=1 !0=1 !1=0
左移右移:原1110 1111 左移后1101 1110,左移后最低位补0,右移后最高位补0
按位与能够是变量之间:5&2 -> 0101&0010(5和2的二进制) -> 0000(一位一位的与) 因此5&2=0
按位异或不经常使用
单片机须要掌握如下几点:
发光二极管电阻的值怎么选取:
发光二极管是内部电流点亮,3mA~10mA左右,有锗管、硅管,经常使用硅管,点亮后发光二极管两端1.7V左右,获得电阻上电压(5-1.7=3.3V),电流为3mA,求获得电阻为1kΩ,用300Ω也行(更亮,电流就变为了10mA,再高容易烧坏)。
电源(USB接口数据线D1和D2下面的线就是电源线):
USB可用于作MP3或U盘开发
电源上有限流电阻1k(有三种,下拉电阻,上拉电阻,限流电阻:限制这条道线上经过电流大小),去耦电容(稳压,去除杂波,并滤波,起缓冲做用)两个,USB供电的时候,计算机USB使用的是开关电源(像是内部有个开关控制电流大小,电流一大自动关闭,一小就自动打开,是电流平均,最后转换成5V电压,示波器观察发现电压不稳定)
74HC573锁存器
OE非(out enable使能,低电平有效),D输入,Q输出,当OE为H,输出为Z高阻态(介于高电平与低电平之间,总线与其余元器件相链接,其余元器件输出高电平,高阻态就变为高电平,其余元器件输出低电平,就变为低电平),因此OE接地,D0-D7为输入,与DB1-DB8链接,这里DB1-DB8为单片机P1口,用单片机控制发光二极管亮灭,十、20接地和电源,11为LE(锁存器锁存端),LE为H时,输出为输入变化,LE为L时,输出都保持上一次的值。这里LE为H(51单片机上电后,默认全部IO口都是高电平),至关于不存在锁存器,其用于后面拓展使用AD转换。
编程正式开始
main,任何一个C程序都有且仅有一个main函数,它是程序开始执行的入口
花括号{}成对出现,因此先打出来以避免忘了
注意下面C语言的格式(注意用Tab,通常设置为Tab为4个空格),严格遵循,方便阅读修改
再一次重复,51单片机上电后(接通电源开机)全部IO口都为高电平(即1)
(原理图)电路图:
发光二极管阳极分别链接了排阻(电阻)和电源,阴极链接了锁存器的输出Q0-Q7,,锁存器的DB0-DB7链接了单片机的P1.0-P1.7口,锁存器这里11引脚上电为1,至关于输入直接给输出(不会了再回去看锁存器,会经常使用到),要想让发光二极管(LED灯)点亮,须要让阴极为负(低电平0),阳极为正(高电平1)),因为LED灯阳极接了电源因此为高电平,所以要想让LED亮,只须要让单片机对应的IO口为低电平,进而输出给对应的Q0-Q7的某一个便可。
使用单片机必需要会看电路图!由于电路图不一样,编程就不一样(例如P1口再也不是链接灯而是链接键盘灯),并且之后须要本身画电路图设计单片机,或者学习新的单片机也须要会看。
位操做方法点亮一个二极管
1 #include<reg52.h> 2 sbit D1=P1^0; 3 void main() 4 { 5 D1=0; 6 }
程序最后进行讲解,总线方法也先等到点亮观看到结果后再尝试。
总线操做方法点亮一个二极管(点亮第二个,DB8-DB1:1111 1101,4个一组换为16进制fd)
#include<reg52.h> void main() { P1=0xfd;//0x表示16进制 }
第一个不知道,第二个编译当前文件,第三个编译全部工程文件
无错误
下载到单片机,有两种,hex文件(16进制),bin文件(2进制),keil只能生成hex文件,weifu生成hex和bin文件。
找到生成hex的方法:
Xtal晶振频率,此处不用管,这里不须要计算单片机运行速度
Memory Model内存形式,Code..编码内存程序空间大小64K,你能够直接生成64K大小的程序,89c52支持片外存储器,若是片内不够,会存于片内。
选中Output,勾选Create HEX,再从新编译便可。
下载程序:
先选择型号,STC89C52RC,选择Open File打开文件,选择生成的HEX,选择COM串口(右键个人电脑,选择管理,设备管理器,打开端口,其中rs232对应的COM,若为COM10+,双击rs232,选择设置Setting,高级Advanced就能够修改了),波特率默认。单片机下载时须要冷启动(单片机不知道你要下载,因此先在软件点击下载,而后打开实验板电源,就会给单片机发送指令,单片机刚上电会经过串口接收数据,检测是否下载数据,若是检测到下载命令,就和这个上位机(电脑)接通开始下载程序,若以前已开启则从新开启单片机)上述只需设置(型号,选择COM,波特率)一次,之后默认。
程序讲解:
1 #include<reg52.h>//头文件
2 sbit D1=P1^0;//特殊寄存器的位定义 3 void main() 4 { 5 D1=0;//D1=0即为P1^0=0,即IO口为低电平,即二极管阴极为低电平 6 }
头文件里有许多写好的程序,include后至关于把程序直接放入c文件内。
在reg52.h上右键,点击open document...就能打开这个头文件,看到里面的内容(或者在keil文件夹下的C51文件夹里,点开INC文件夹(include),里面不少头文件,就能看到REG52.H)。
52兼容51,52比51多一个寄存器(T2CON),若是不用那个定时器,那么写51和52都行。
P0是特殊功能寄存器,单片机有21个特殊功能寄存器,不一样的特殊功能寄存器位于单片机内不一样地址,单片机P0口的地址是0x80。
头文件是把编译器和单片机硬件链接器来的东西,编译器不知道你操做的是单片机仍是什么,因此须要把地址都定义一下。
例如sfr P0=0x80;这里就和咱们c文件里定义sbit D1=P1^0同样。sfr是定义一个特殊功能寄存器也就是8位,而sbit是一位。
正如上面提到的,include头文件至关于把头文件的内容放入c文件,因此咱们才能用P1这种方式,不能用P1^0是由于没有位定义,而这里的AC等就能够直接使用,由于头文件里定义了。头文件也能够本身写。
例如这里咱们头文件里位定义了D1,而后c文件里直接使用没有定义也不会出错了。
最后再说一下注释,有两种
P1^2:单片机四组IO口,P1就是P1口,每组IO口有8位,用^2能够选择P1口的第2位,使用某一位之前必须定义,记住,除非头文件里有写好的。而P1这些IO口就是在头文件写好的。
完整的程序应该善始善终,点亮后应该停在那里
while(1),死循环,当知足while括号内的内容时(即括号内为真时)就进入while循环,而1就是真,因此一直进入这个循环。
做业: