关于单片机型号的介绍:

STC89C52RC40C-PDIP 0721CV4336.....

  • STC:STC公司
  • 89:89系列
  • C:COMS
  • 52(还有51,54,55,58,516,):2表示存储空间的大小,2*4K=8K
  • 40:晶振最高频率40MHZ,单片机工作的速度
  • 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即可


头文件之后会说

逻辑与、逻辑或、逻辑非和数字电路中相同: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

按位异或不常用

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

  • 最小系统运行的必要条件:
  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和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口,用单片机控制发光二极管亮灭,10、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口不再是连接灯而是连接键盘灯),而且以后需要自己画电路图设计单片机,或者学习新的单片机也需要会看。

位操作方法点亮一个二极管

 #include<reg52.h>
sbit D1=P1^;
void main()
{
D1=;
}

程序最后进行讲解,总线方法也先等到点亮观看到结果后再尝试。

总线操作方法点亮一个二极管(点亮第二个,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就是真,所以一直进入这个循环。


作业:

51单片机学习笔记(郭天祥版)(1)——单片机基础和点亮LED灯的更多相关文章

  1. 51单片机学习笔记(清翔版)(13)——LED点阵、74HC595

    如图3,点阵屏分单色和彩色,点阵屏是由许多点组成的,在一个点上,只有一颗一种颜色的灯珠,这就是单色点阵屏,彩色的在一个点上有三颗灯珠,分别是RGB三原色. 图4你可能没看出来,那么大块黄色的就是点阵屏 ...

  2. 51单片机学习笔记(清翔版)(21)——ADDA数模转换

    A:anolog模拟的         D:digital数字的 AD模拟转数字,DA数字转模拟 生活中的基本都是模拟量,如温度,可以是10℃,10.1℃等 手机的背光亮度自动调节,拿到太阳光下,亮度 ...

  3. 20145316许心远《Java学习笔记(第8版)》课程总结

    20145316许心远<Java学习笔记(第8版)>课程总结 每周读书笔记链接汇总 ▪ 第一周读书笔记 ▪ 第二周读书笔记 ▪ 第三周读书笔记 ▪ 第四周读书笔记 ▪ 第五周读书笔记 ▪ ...

  4. Python 基础学习笔记(超详细版)

    1.变量 python中变量很简单,不需要指定数据类型,直接使用等号定义就好.python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前 ...

  5. C#学习笔记——面向对象、面向组件以及类型基础

    C#学习笔记——面向对象.面向组件以及类型基础 目录 一 面向对象与面向组件 二 基元类型与 new 操作 三 值类型与引用类型 四 类型转换 五 相等性与同一性 六 对象哈希码 一 面向对象与面向组 ...

  6. amazeui学习笔记--css(基本样式2)--基础设置Base

    amazeui学习笔记--css(基本样式2)--基础设置Base 一.总结 1.盒子模型:外margin,内padding,这里的内外指的边框 2.border-box:Amaze UI 将所有元素 ...

  7. JZ2440开发板:用按键点亮LED灯(学习笔记)

    本文是对韦东山嵌入式第一期学习的记录之一,如有您需要查找的信息,可以继续往下阅读. 想要用按键点亮LED灯,就需要知道按键和LED灯的相关信息,这样才可以进行之后的操作.阅读JZ2440的原理图,可以 ...

  8. C语言版——点亮LED灯,深入到栈

    在上一篇进行了汇编语言的编写之后,我们采用C语言来编写程序,毕竟C语言才是我们使用最多的语言. 仅仅是点亮LED灯显然太过于简单,我们需要分析最后的反汇编,了解函数调用栈,深入C语言骨髓去分析代码,并 ...

  9. 51单片机学习笔记(郭天祥版)(6)——键盘的作业题、AD、DA、DS18B20(这里之后看清翔的补一下好了)

    A:analog,D:digital AD,就是模拟量转换为数字量,DA就是数字量转换为模拟量 为什么要转换? 单片机是数字芯片,内部只有0和1,没法表示模拟量 比如我们如果需要2.5V怎么办?其实是 ...

随机推荐

  1. redis性能提升之pipeline

    1.以前正常使用过程 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命令并将响应发送回客户端. 也就是每个命令都会有一来以往的过程 2.管道的意义 如果能将连续 ...

  2. Dynamics 365 CRM Free up storage 清理Dynamics 365 CRM的空间

    Dynamics 365 CRM 的空间是要买的. 但是很多情况下用户可以去清理CRM从而达到给空间减重的方法 两大使用DB空间大的功能 1. Audit log 审计记录 审计记录是用来记录各个fi ...

  3. Python shutil 模块

    高级的文件.文件夹.压缩包 处理模块 http://www.cnblogs.com/wupeiqi/articles/4963027.html

  4. java实验四《Android程序设计》实验报告

    一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 实验日期:2018年5月14日 实验时间:13:45 - 15:25 实验序号:08 ...

  5. Python小练习(二)

    按照下面的要求实现对列表的操作:       1)产生一个列表,其中有40个元素,每个元素是0到100的一个随机整数       2)如果这个列表中的数据代表着某个班级40人的分数,请计算成绩低于平均 ...

  6. 理解java回调机制

    摘自:ImportNew 以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类 ...

  7. 流媒体压力测试rtmp&hls(含推流和拉流)

    http://blog.csdn.net/sinat_34194127/article/details/50816045 [root@localhost ~]# yum install git unz ...

  8. 数据恢复工具--extundelete的安装与使用

    1.extundelete的恢复原理 extundelete恢复文件时并不依赖特定文件格式,首先extundelete会通过文件系统的inode信息,来获得当前文件系统下所有文件的信息,包括存在的和已 ...

  9. iterator简单描述

    Item 26. Prefer iterator to const iterator, reverse_iterator, and const_reverse_iterator. 上面一段话,是< ...

  10. React.js 学习总结

    1.用React的优越性 独立,小巧,快速 ReactDOM 会构建一个虚拟的DOM tree, 只有DOM tree 的某个部分发生变化,便重新渲染某个部分. React 判断DOM 是否重新渲染的 ...