把手伸向了经典之作郭天祥。这个教程2018年就买了,一直没有学完。写学习笔记就要督促自己好好学习!

  • 什么是单片机

在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。

  • 51 单片机

Intel, MCS-51系列,集成8位CPU,4K ROM,128K RAM,4个8位并口,1个全双工串行口,2个16位定时/计数器。寻址范围64K,并又控制功能较强的布尔处理器。

  • 电平特性

单片机用的是TTL电平,高 +5V,低 0V ; 计算机的串口, RS232电平,高 -12V,低 +12V。所以在计算机和单片机通讯时(烧录软件)要添加转换芯片max 232

  • 二进制的逻辑运算

    • 与,符号·,&
    • 或,符号+,|
    • 非,符号:上面一横
    • 异或:符号⊕,相同为0,不同为1
  • 80C51系列介绍

80C51是MCS-51系列中的经典品种,其他厂商以8051为基核开发的都叫80C51系列。试验板是

STC89C52RC40C-PDIP0721CV4336

STC: 厂商

89:89系列

C:CMOS工艺

52:51,54,55,58,516,5后面代表程序存储空间大小,2*4K=8K

40: 所能支持的晶振的最高频率是40M Hz

C: commercial, 商业级,还有I,industrial,工业级

DIP:封装格式

P-DIP:双列直插式

0721:07年第21周生产

  • 总线型和非总线型:总线型可以看到P0,P1,P2。。。每组都有8位
  • 看P3口的接口定义
  • 8051的内部结构
  • 总线:分为内部总线和外部总线,外部总线三种:数据总线DB,地址总线AB,控制总线CB
  • CPU:由运算和控制逻辑组成,还包括中断系统和部分外部特殊功能寄存器
  • RAM:存放可以读写的数据
  • ROM:存放程序和原始数据
  • C51语言中的基本数据类型
    • 有无符号:有符号的数,最高位是符号位,1为负数,0为正数
    • 浮点型:float,

SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM

S 代表符号位,标E的位,表示E后面的数字,M表示前面的数字

  • Double:

SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM

  • C51的数据类型扩充定义

    • Sfr: 特殊功能寄存器声明
    • Sfr16: sfr的16位数据声明
    • Sbit: 特殊功能位声明
    • Bit:位变量声明
    • 例如:sfr SCON=0X98;
    • Sbit OV=PSW^2; //把PSW寄存器的第二位定义为OV,以后想操作这个位时使用OV就可以了
  • C51包含的头文件
    • 通常有reg51.h, reg52.h, math.h, ctype.h, stdio.h, stdlib.h, absacc.h
    • 常用的有reg51.h, reg52.h 定义特殊功能寄存器和位寄存器; math.h, 定义了常用的数学运算
    • 使用时写#include<reg51.h> (例子)就可以了
  • C51的运算符
    • 基本的加减乘除、大于小于
    • &&逻辑与
    • ||逻辑或
    • !逻辑非
    • >> , << 位右移,位左移 (用0来补空位,还有一个循环右移、循环左移)
    • & 按位与
    • | 按位或
    • ^ 按位异或
    • ~按位取反
  • C51的基本语句
    • If
    • While
    • for
    • Switch/ case
  • 中断服务程序
  • I/O口定义
  • 单片机最小系统能运行起来的条件:电源;晶振;复位电路(程序从头运行)
  • 每个C语言文件至少有一个main函数, void main() {}
  • 学习目标
    • 对单片机的I/O口进行操作
    • 定时器的用法
    • 中断:外部中断,定时器中断;串口中断
    • 串口通信:单片机之间,单片机和计算机之间
  • 电路图绘制软件:altium Designer
  • 参考书:C语言,单片机C语言。。。
  • Keil软件的使用

    • 先新建一个project
    • 选择使用的芯片, Atmel 89C52
    • 新建一个file
    • 保存,注意保存为.c的后缀
    • 选择target1 下,点击source group, 右键,选择 add file to source group
    • 编写程序
      • 位操作方法
#include<reg52.h>sbit D1=P1^0; //定义P1第0位为D1void main(){D1=0;// 低电平,电路导通,发光二极管点亮}
  • 总线操作方法
#include<reg52.h>void main(){P1=0Xfd;}

想要第二个灯亮,就是第二个为0,从7位到0位依次是1111 1101, 写成16进制就是fd

  • 编译
  • 选择生成hex文件,再编译就会生成hex文件,这个就是烧录的软件
  • 这个单片机支持串口下载程序,要用STC_ISP来烧软件
  • 打开软件后,修改使用的芯片,串口号,波特率,打开hex文件
  • 下载程序要“冷启动”,即先下载软件,再上电
  • 看电路原理图
    • 限流电阻的计算
    • 锁存器的使用:
      • DIOLA可以看到是从89C52连出来的
      • 查看芯片手册有真值表
      • L表示低电平,H表示高电平,X表示任意,Z是高阻态,介于高低电平之间,Q0是上一次的值
      • 之所以用一个锁存器,是为了防止发光二极管闪烁

郭天祥 十天搞定单片机 (1)基础知识和点亮发光二极管相关推荐

  1. 1天搞定单片机中断——基础知识大全

    这篇文章主要针对的是单片机编程中的中断知识.单片机编程其实很简单(就是C语言编程),难的是各种外围器件的学习,以及看懂芯片手册和对芯片进行初试化的操作.因为单片机编程中常常涉及到中断,要对各种寄存器进 ...

  2. python基础知识-一篇文章搞定Python全部基础知识

    原标题:一篇文章搞定Python全部基础知识 前言: 1.Python软件安装 第一章.字符串及数字变量 1.变量 要点提炼:Python变量为强类型动态类型.换言之,变量很任性,你给他int,他就是 ...

  3. 30分钟搞定ES6常用基础知识

    ES6基础智商划重点 在实际开发中,ES6已经非常普及了.掌握ES6的知识变成了一种必须.尽管我们在使用时仍然需要经过babel编译. ES6彻底改变了前端的编码风格,可以说对于前端的影响非常巨大.值 ...

  4. 一篇文章搞定Python全部基础知识

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 前言: 1.Python软件安装 第一章.字符串及数字变量 1.变量 要点提炼:Python变量为强类型动态类型.换言之 ...

  5. 关于python论文2000字_一篇文章搞定Python全部基础知识

    前言: 1.Python软件安装 第一章.字符串及数字变量 1.变量 2.数字型数据 要点提炼:这下面那张图就行,至于其它的,就是文本转字数(int),数字转文本(Str) 3.字符串 要点提炼:字符 ...

  6. 十招搞定SQL2K安全

    十招搞定SQL2K安全 本文详述提高SQL Server 2K安装的安全性实施的十个注意事项:  1.安装最新的服务包 为了提高服务器安全性,最有效的一个方法就是升级到 SQL Server 2000 ...

  7. JeecgBoot 单体升级微服务快速方案(十分钟搞定)

    JeecgBoot 单体升级微服务方案(十分钟搞定) 当前系统分为system.demo 等模块,现有需求把每个模块单独启动作为微服务应用,故而推出新版boot[20200812beta],支持快速切 ...

  8. 逗号后面统一加空格_十分钟搞定字幕,教你做加字幕的“快手菜”

    平台上许多同学有疑问:做视频是否有加字幕的必要呢? 其实除了外语需要翻译.语速过快加字幕方便理解.普通话不标准等情况之外,还是建议有余力的同学可以加上字幕,提升用户的观看体验. 那么问题来了,存在以下 ...

  9. 十天搞定考研词汇 ---转发

            (摘自<2008考研英语高分写作>,王江涛编著,群言出版社) (一)总论 对绝大多数中国同学来说,学英语就是背单词,单词是很多同学心中永远的痛.词汇是写作的基石,要想取得写 ...

  10. 《十天搞定TOEFL单词》(王玉梅TOEFL词汇)

    为了方便广大使用王玉梅词汇的朋友,改编无名草的十天搞定张红岩<toefl词汇精选>. 根据杨鹏的<十七天搞定GRE单词>的方法,依据王玉梅的<TOEFL词汇>,我制 ...

最新文章

  1. 【linux】Valgrind工具集详解(十二):DHAT:动态堆分析器
  2. 深度学习在人脸检测中的应用 | CSDN 博文精选
  3. 不仅是 64 位 Android L 还有这 9 大亮点
  4. Java学习笔记(5)——泛型
  5. C++多线程的简单程序
  6. 成功解决TypeError: __init__() got an unexpected keyword argument 'serialized_options'
  7. mysql 主表某一列 小于某一个表的两列之和_关于MySQL索引知识与小妙招
  8. 实数是不是python数据类型_Python数据类型之数字(Numbers)和运算符
  9. 《虚拟化与云计算》读书感(九)服务器虚拟化的其他核心技术
  10. php foreach 单箭头,PHP Foreach循环具有单个元素
  11. Java面试知识(持续更新)
  12. 数字电路基础知识(三) 复位设计-异步复位,同步释放
  13. C#单位档案信息管理系统源码
  14. 代码查重工具SIM,添加图形界面GUI,附下载链接
  15. 软件项目估算永远不准怎么办?钱少时间紧未必是坏事
  16. 兄弟机cnc系统面板图解_兄弟机操作面板及编程
  17. 视频编码码率控制:CBR、VBR和ABR
  18. 内存优化(一)浅谈内存优化
  19. 清华计算机912考研真题解析
  20. androidQ系统新特性

热门文章

  1. 广数系统加工中心编程_加工中心宏程序编程应用案例分享
  2. Apache SSI 远程命令执行漏洞
  3. 批处理 文件名字前面加前缀或者后缀
  4. python怎么解微分方程组_python能解微分方程吗
  5. Part I. S3. 区间直觉模糊集理论
  6. SCM供应链协同管理系统解决方案
  7. springboot毕业设计 基于springboot房产中介预约看房系统毕业设计设计与实现参考
  8. Python网络爬虫经典书籍推荐
  9. 将Excel中的信息生成奖状
  10. linux下安装使用dig命令