郭天祥的10天学会51单片机_第一节
在这里,把学习视频时的笔记进行记录,在学习视频的过程中,遇到了一些视频中没有讲解到的问题,对于这些问题的解决过程在这里进行记录和总结。
CSDN的对齐格式有点诡异,在编辑器中注释都是对齐的,在CSDN的文章中显示的有一些不能对齐,为了让大家复制粘贴代码的时候能够获得对齐的注释,在这里就对文章中没有对齐的格式不予处理了。
实践第一。
补充必要的理论知识,即缺什么补什么。
做工程项目积累经验。(可在网络上搜集题目,也可自己有什么想法大胆的去试验)
数字电路中只有两种电平:高和低
定义单片机为TTL电平:
高 +5V 低 0V
RS232电平:计算机的串口
高 -12V (RS232电平高电平为负) 低+12V
所以计算机与单片机之间通讯时需要加电平转换芯片max232(实验板上左下角)。
单片机命名:STC(STC公司)89(系列)C(COMS)52(内部存储空间大小:4K*2=8K)RC
40(所支持的晶振频率是40MHZ)C(商业级,如I是工业级,区别是温度适用范围,还有军品级)-PDIP(封装格式,这里是双列直插式,还有BGA等封装)
07(07年)21(21周)CV4336
总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线。外部总线是指CPU与其它部件之间的连线。 外部总线有三种: 数据总线DB(Data Bus), 地址总线 AB(Address Bus)和控制总线 CBControl Bus)。
sfr:特殊功能寄存器声明
sfr16:sfr的16位数据声明
sbit:特殊功能位声明
bit:位变量声明
例:sfr SCON = 0X98;
sfr16 T2 = 0xCC;
sbit OV = PSW^2; PSW^2表示PSW的第二位
C-51的包含的头文件
通常有:reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.h
常用有:reg51.h reg52.h
(定义特殊功能寄存器和位寄存器);
math.h (定义常用数学运算);
单片机主要掌握以下几点
最小系统能够运行起来的必要条件。
1.电源 2.晶振3.复位电路
对单片机任意IO口的随意操作
1.输出控制电平高低2.输入检测电平高低。
定时器:重点掌握最常用的方式2
中断:外部中断、定时器中断、串口中断
串口通信:单片机之间、单片机与计算机间
方法:运用单片机就是控制单片机的IO口
在TX-1C型单片机实验板原理图中发光二极管是P2,图中由单片机的P1口控制
原理图中标号相同表示物理连接
发光二极管是由排阻组成,八个排阻,左边是高电平,让发光二极管亮阴极(右边)要给低电平,因为排阻上有关单向导通的发光二极管;发光二极管点亮是3mA,左边VCC是5伏,右边是低电平是0伏,点亮发光二极管的电压是1.7伏,所以电阻上的压降是5-1.7=3.3伏,
所以电阻的阻值是3.3V/3mA=1.1K
电阻分为上拉电阻、下拉电阻和限流电阻
去耦电容的一个作用是稳压,减缓电压的波动
74HC573是锁存器,锁存器的DIOLA管脚接单片机的26管脚;在TX-1C型单片机实验板原理图中一个锁存器控制发光二极管,另两个控制数码管
在课件74hc573中,见P1的真值表,OE是Out Enable输出使能,上面有横线的变量表示低电平有效,D表示输入端,Q表示输出端,当OE低电平时74hc573工作,真值表中L表示低,H表示高,X表示任意(或者高电平或者低电平),Z是数字电路中的高阻态(高阻态是介于高电平和低电平之间的状态,既不是高电平也不是低电平,和其它元器件连接,其它元器件输出高电平时高阻态跟着该元器件变成高电平,反之变成低电平),所以这里让锁存器74hc573工作,给锁存器U3的OE低电平,锁存器U3的输入端接单片机的P1口,由单片机的P1口来控制,10管脚是接地,20管脚接电源;LE表示锁存器的锁存端,见真值表,LE为高电平,输入端D是高电平输出是高电平,输入端D是低电平输出是低电平,LE为低电平,D无论什么值,输出 Q都是Q0,Q0是上一次输出端Q的值,这里给LE即DIOLA高电平;加锁存器是因为锁存器的输入端连接单片机的P1口,而P1口又连接AD0804(模数转换器)的输入端,如果不加锁存器控制发光二极管,当控制AD转换器时会导致发光二极管也亮
51单片机所有IO口上点后默认高电平
使用Keil软件:
打开Keil软件,点击菜单栏上面的Project下面的New Project建立工程,弹出对话框,先新建一个文件夹,再保存工程
然后点击菜单栏上面的File下面的New,新建一个文档,文档的后缀名是“.c”,再在左边面板的工程名下右键选择Add Files to Group ‘Source Group 1’,将该文档加入该工程中即可
编译时点击编译所有文件按钮
生成Hex文件 :点击全部编译按钮右边的Option for target按钮,Output栏下的Create HEX File选中打钩,再编译即可
Option for target按钮的Target下面可以调节晶振频率
STC_ISP软件的使用:先选中MCU Type,这里是STC89C52,再Open File打开Hex文件,再选择烧程序的Com口(计算机—>管理—>设备性能下面查询,还可以修改)(我的计算机上是右键我的电脑,选择属性,弹出系统属性对话框,选择硬件页,点击设备管理器,弹出设备管理器对话框,点击端口(COM和LPT)的十字符号,可以看见当前使用的串口号,前提是学习板的线已经插到串口上或USB口上),选择Max Buad波特率,然后点击Download下载程序开始,再按单片机上的启动按钮,必须先点击软件的下载然后再打开单片机
位操作点亮发光二极管:
#include<reg52.h>
sbit D1=P1^0;
void main()
{
D1=0;
}
总线操作点亮发光二极管:
#include<reg52.h>
void main()
{
P1=0xfd;
}
reg52.h文件定义了很多位寄存器,需要时也可以自己定义头文件,并加进到源文件中
练习:
3.点亮最后一个发光管:
#include<reg52.h>
void main()
{
P1=0x7f; //将单片机P1口的8个口由高到低分别赋值为01111111
}
4.点亮1、3、5、7
即10101010,AA
#include<reg52.h>
void main()
{
P1=0xaa;
}
5.点亮二、四、五、六
即10100011,c5
#include<reg52.h>
void main()
{
P1=0xc5;
}
6.尝试让第一个发光管闪烁
利用延时程序
#include<reg52.h>
void delay()
{
int i,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++);
}
void main()
{
while(1)
{
P1=0xfe;
delay();
P1=0xff;
delay();
}
}
方法2:
#include<reg52.h> //52单片机头文件
sbit led1=P1^0; //单片机管脚位声明
void main() //主函数
{
unsigned int i; //定义一个int型变量
while(1)
{
i=50000; //变量赋初值为50000
led1=0; //点亮灯
while(i--); //延时
i=50000;
led1=1; //熄灭灯
while(i--);
}
}
7.尝试设计出流水灯程序
#include<reg52.h>
void delay()
{
int i,j;
for(i=0;i<100;i++)
for(j=0;j<200;j++);
}
void main()
{
while(1)
{
P1=0xfe;
delay();
P1=0xfd;
delay();
P1=0xfb;
delay();
P1=0xf7;
delay();
P1=0xef;
delay();
P1=0xdf;
delay();
P1=0xbf;
delay();
P1=0x7f;
delay();
}
}
方法2:
#include<reg52.h> //52单片机头文件
void main() //主函数
{
unsigned int i; //定义一个int型变量
while(1)
{
i=50000; //变量赋初值为50000
P1=0xfe; //点亮第一个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xfd; //点亮第二个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xfb; //点亮第三个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xf7; //点亮第四个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xef; //点亮第五个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xdf; //点亮第六个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xbf; //点亮第七个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0x7f; //点亮第八个灯
while(i--); //延时
}
}
郭天祥的10天学会51单片机_第一节相关推荐
- 郭天祥的10天学会51单片机_第十三节
AD软件: AD软件可以编译C语言和VHDL语言等:AD软件的工具栏上面可以输入网络地址进行浏览网页:AD软件可以布差分信号,即可以两条线可以一起布 按住Shift键和左键可以向左移动,按住Shift ...
- 郭天祥的10天学会51单片机_第七节
串行通信:从D0位一位一位发发到D7位 十个位为一帧如:0101000100,表示一个字符 起始位低电平有效,停止位高电平有效,单片机是异步通信 宽带网线是八根线,组成两队差分信号,分别是TXD1(发 ...
- 郭天祥的10天学会51单片机_第三节
单片机管脚,P3口有两个功能,上电默认情况下就使用P3口的普通IO口,当对单片机内部的某些寄存器设置时就启用P3口的第二个功能 P3^4和 P3^5可以作为计时器或定时器使用,给这两个口输入方波,进行 ...
- 10.4.4 51单片机控制系统8个LED“跑马灯”实验
10.4.4 51单片机控制系统8个LED"跑马灯"实验 仿真+代码 方法一 利用数组 #include"reg52.h"#define u8 unsigned ...
- 51单片机学习笔记(郭天祥版)(1)——单片机基础和点亮LED灯
关于单片机型号的介绍: STC89C52RC40C-PDIP 0721CV4336..... STC:STC公司 89:89系列 C:COMS 52(还有51,54,55,58,516,):2表示存储 ...
- 10讲学会C语言之第一讲:编程前的准备
文章目录 前言 一.必要的说明 二.环境准备与第一个C程序 三.调试 前言 大家好,我是卷卷.今天呢我给大家带来一套C语言图文教程.这个教程呢,也是我在CSDN上传的第一个教程.希望大家多多支持.本教 ...
- 红外测距模块 51单片机_[51单片机] HC-SR04超声波测距仪
1.HC-SR04超声波模块工作原理 (1)采用IO口触发测距,给至少10us高电平脉冲: (2)模块自动发送八个40khz方波,并自主检测是否有电波返回: (3)当有信号返回时,通过IO口输出一个高 ...
- 51单片机入门 第一篇:LED灯
文章目录 前言 一.LED原理图 二.创建keil5工程 三.代码的编写 四.程序的烧录 总结 前言 本篇文章讲正式带大家开始学习51单片机,希望这些文章能够很好的帮助到大家学习51单片机. 一.LE ...
- 2440 8字数码管 显示0到10 c语言,51单片机对8位数码管依次显示0-7的设计
共阳极数组0~9:display[]={0xC0,0xF9,0xA4,0xB0,0x91,0xA2,0x82,0xF8,0x80,0x90} 共阳极数组A~F:display[]={0x88,0x83 ...
- 单片机c语言二进制转10进制,51单片机用C语言怎么样把八位二进制转换成十进制...
满意答案 sunzhaoming 2013.07.06 采纳率:41% 等级:12 已帮助:8866人 //******************************************* ...
最新文章
- C++中的stack类、QT中的QStack类
- Windows之建立C++开发环境
- CSS3中的pointer-events
- which 命令详解
- mysql开启远程访问权限
- python3.7语法错误_Tweepy不会安装在Python3.7上;显示“语法错误”
- 在Visual Studio 2008中安装mvc2.0(转)
- lintcode:Add Binary 二进制求和
- 【JavaEE】第零章(2020.03.06)模式 表 索引
- st8s003 c语言编译器,stm8s003f3p6
- MiroTik 路由器配置无线中继模式(超细教程)
- c语言角度转换为弧度程序,C语言之将弧度值转换为角度值
- css固定定位的代码,CSS——相对定位、绝对定位、固定定位(示例代码)
- VirtualBox安装Extention Pack教程
- c中纠结不清的点(1)
- 《山海经》只能是政府组织编写的
- 文档自动分类模型--分类算法思路总结
- 【C操作符】详解操作符
- 【ArcGIS微课1000例】0063:ArcGIS Earth完美代替Google Earth(附安装包下载)
- 中国教育大数据研究院在福州成立 倪光南任联席院长