关于单片机型号的介绍:

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. 如何在Python中使用ZeroMQ和Docker构建微服务架构

    @Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自携程.PPTV.蚂蚁金服.京东.浙江移动.海尔电器.唯品会.eBay.道富银行.麻袋理财等公司的技术负责人将带来实践经 ...

  2. Java_集合_ArrayLish Comparator比较排序 小笔记

    import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; class Teacher ...

  3. Python tkinter模块和参数

    转自:https://www.cnblogs.com/aland-1415/p/6849193.html 1.使用tkinter.Tk() 生成主窗口(root=tkinter.Tk()):root. ...

  4. HTTP进阶学习笔记

    代理 HTTP的代理服务器既是Web服务器,又是Web客户端.使用代理可以"接触"到所有流过的HTTP流量,代理可以对其进行监视和修改.常见的就是对儿童过滤一些"成人&q ...

  5. 初识nginx反向代理和缓存机制

    实现的需求图:   环境: nginx缓存和反向代理服务器:192.168.0.224 实际存储数据机器:192.168.0.37 一.实现反向代理 1.安装nginx,两台服务器都需要安装 1)安装 ...

  6. Fabric的@runs_once的理解

    1:runs_once的用法,一直没理解,我看网上都是说:“函数修饰符,标识的函数只会执行一次,不受多台主机影响”     实在没理解,然后看了一下官方文档,这样解释     举个例子: #!/usr ...

  7. Asp.net:上传文件超过了最大请求长度

    错误消息:超过了最大请求长度    错误原因:asp.net默认最大上传文件大小为4M,运行超时时间为90S.   解决方案 1. 修改web.config文件可以改变这个默认值            ...

  8. django 神奇的双下划线,通过外键的三种查询方式

    一,用于跨表操作 只要是object后面字符串都是用双下划线__.其它地方用点. 如:的values中的group_code__name.group_code是一个外键 def list(reques ...

  9. 廖雪峰Java7处理日期和时间-2Data和Calendar-2Calendar

    Calendar类 历史上有许多纪年方法,其差异太大了.为了统一计时,通常采用格里高利日历. 1.创建Calendar对象 Calenda类是一个抽象类,所以不能使用构造器来创建Calendar对象. ...

  10. Scrapy实战篇(三)之爬取豆瓣电影短评

    今天的主要内容是爬取豆瓣电影短评,看一下网友是怎么评价最近的电影的,方便我们以后的分析,以以下三部电影:二十二,战狼,三生三世十里桃花为例. 由于豆瓣短评网页比较简单,且不存在动态加载的内容,我们下面 ...