资讯详情

51单片机学习笔记(郭天祥版)(1)——单片机基础和点亮LED灯

单片机型号介绍:

STC89C52RC40C-PDIP 0721CV4336...

  • STC:STC公司
  • 89:89系列
  • C:COMS
  • 52(51、54、55、58、516):2表示存储空间的大小,2*4K=8K
  • 40:最高晶振频率40:MHZ,单片机工作速度
  • C(commercial):商业级。(还有I(industry):工业级的区别在于温度可用范围,商业级:0~85℃,工业级:-40~125℃,还有军级:-55~160℃(此不确定)。
  • PDIP:包装形式,双列直插式
  • 0721:07年第21周

AT89C51,S51,LV51

  • S:支持串口下载
  • C:编程程序必须有专门的编程器
  • LV:低电压,工作电压3V即可

STC89E,LE,C52AD

  • E:低电压
  • AD:芯片具有从模拟电压到数字电压的转换器

总线型:有4组IO口,P0-P3.每组8位

非总线型:不能形成一组,例如P3。

单片机内部总线8位为总线。


这里不会也没事,以后用会单独说。


程序存储器和数据存储器都有总线(3,发送数据时,数据在总线上运行),暂时不会没事


单片机由这些部分组成:(作为理解)


C-51(C语言),ASM-51(汇编语言)


需要知道,否则浪费空间等

char是8位,而bit就是一位

每个寄存器都有一个固定的地址,单片机sfr不常用

sbit常用,PSW是寄存器,^2是寄存器的第二位。定义后,将来想直接使用OV即可


以后会说头文件

在数字电路中,逻辑与、逻辑或逻辑非相同&&1=0 1&&1=1 0||1=1 !0=1 !1=0

左右移动:原110 1111 左移后1101 1110左移后最低补0,右移后最高补0

按位与可以是变量之间:5&2 -> 0101&0010(5和2的二进制) -> 0000(一位一位和) 所以5&2=0

按位异或不常用

单片机需要掌握以下几点:

  • 最小系统运行的必要条件:
  1. 电源
  2. 晶振
  3. 复位电路
  • 任意对单片机IO随意操作口(4组,32个)
  1. 输出控制电平
  2. 输出检测电平
  • 定时器:重点掌握最常用的方法2
  • 中断:
  1. 外部中断
  2. 定时器中断
  3. 串口中断
  • 串口通信:
  1. 单片机之间
  2. 单片机和计算机之间

如何选择发光二极管电阻值:

发光二极管内部电流点亮,3mA~10mA左右有锗管和硅管,常用硅管。照明后,发光二极管两端1.7V得到电阻上的电压(5-1.7=3.3V),电流为3mA,电阻为1kΩ,用300Ω也可以(更亮,电流变成10mA,再高也容易烧坏)。

电源(USB接口数据线D1和D下线为电源线):

USB可用于做MP3或U盘开发

电源上有限流电阻1k(有三种类型:下拉电阻、上拉电阻、限流电阻:限制这条路线上的电流)、去耦电容(稳压、去除杂波、滤波、缓冲)、USB电源时,电脑USB使用开关电源(如内部开关控制电流大小,电流自动关闭,电流平均为5V电压,发现电压不稳定。


74HC573存器

OE非(out enable使能,低电平有效),D输入,Q输出,当OE为H,输出为Z高阻态(介于高电平与低电平之间,总线与其他元器件相连接,其他元器件输出高电平,高阻态就变为高电平,其他元器件输出低电平,就变为低电平),所以OE接地,D0-D7为输入,与DB1-DB8连接,这里DB1-DB8为单片机P用单片机控制发光二极管的亮灭,10、20接地和电源,11LE(锁定器锁定端),LE输出为输入变化,LE当输出为L时,保持上次值。这里LE为H(51单片机上电后,默认所有IO嘴是高电平的),相当于没有锁存器,用于后期扩展AD转换。


编程正式开始

main,任何C程序都有,只有一个main函数是程序开始执行的入口

花括号{}成对出现,先打出来

注意以下C语言格式(注意使用)Tab,一般设置为Tab严格遵循4个空间,方便阅读修改

再次重复,51单片机上电后(开机)一切IO口均为高电平(即1)

(原理图)电路图:

发光二极管阳极分别连接电阻(电阻)和电源,阴极连接锁定器的输出Q0-Q七、锁定器DB0-DB7连接单片机P1.0-P1.7口,锁存器11引脚电1,相当于输入直接输出(不会回去看锁存器,会常用),想让发光二极管(LED灯)点亮需要使阴极为负(低电平0),阳极为正(高电平1)LED灯阳极接通电源,所以是高电平,所以想要LED亮,只需要让单片机对应IO口为低电平,然后输出给相应的Q0-Q一个可以。

用单片机一定要看电路图!由于电路图不同,编程也不同(例如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大小程序,89c如果片内不够,52支持片外存储器。

选中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就是真,所以一直进入这个循环。


作业:

标签: 二极管lv26针db直插连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台