单片机笔记汇总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章

1.1数制定义

十进制:0,1,2,3,4,5,6,7,8, 9 D 逢十进一

二进制:0,1 B 逢二进一

八进制:0,1,2,3,4,5,6,7 O逢八进一

十六进制:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f H 逢十六进一1.2数制转换

十进制->二进制

56=2^5+2^4+2^3=0011 1000=38H

48=2^5+2^4=0011 0000=30H

1.3有符号数

最高位正0 负1

正数原码=正数反码=正数补码

负数原码-111

原码1110 1111

负数反码1001 0000

负数补码1001 0001 (最后一位+1)

1.2.3(书本P6)

位bit 二进制中的一位

字节B byte 1B=8bit

字word 1w=2B

双字字长为16

1.2.4 BCD(以二进制表示十进制)

56D->0101 0110BCD

79D->0111 1001BCD

1.2.5 ASCII

a=61H A=41H k=6BH

第二章

用proteus画图的步骤

1.启动ISI模块

2.选取原件

3.摆放原件

4.编辑原件属性

5.编辑原件文本属性

6.原理图布线

计算机系统=硬件系统+软件系统

冯氏结构硬件系统

CPU=AU(运算器)+CU(控制器)

I->M->O

2.1.1单片机硬件结构

MCS-51单片机内部基本结构

1KB=2^10B

1MB=2^20B

1GB=2^30B

1TB=2^40B

2.2.2 程序存储器

80C51型单片机且程序长度不超过4KB,则无须扩展片外ROM

2.2.3 数据存储器

数据存储器在物理上和逻辑上都占有两个地址空间:

一个是片内256B的RAM,另一个是片外最大可扩充64KB的RAM

2.3单片机的复位、时钟与时序

复位SP stack pointer 0000 0111 07H

程序计数器PC 0000H

P0~P3 1111 1111 FFH 高阻

2.3.2 时钟电路

单片机执行指令的过程可分为取指令、分析指令和执行指令三个步骤

2.3.3 单片机时序

(1)时钟周期

晶振或外加振荡源的振荡周期称为时钟周期

(2)状态周期

1个状态周期等于2个时钟周期

(3)机器周期

1个机器周期等于6个状态周期

(4)指令周期

执行一条指令所需要的时间称为指令周期

小结:P0~P3都可作为准双向通用I/O口,其中只有P0口需要外接上拉电阻(加电阻降压,增加驱动);在需要扩展片外设备时,P2口可作为其地址线接口,P0口可作为其地址线/数据线复用接口,此时它是真正的双向口。

P2口(高8位)与P0口(低8位)共同组成16位地址

/*功能:流水灯(4个灯流)*/

#include //调用库文件

#define uint unsigned int //宏定义无符号整型

//定义全局变量

//定义子函数(延时函数)

void delay(uint time)

{ uint i;

for(;time>0;time--)

for(i=0;i<125;i++);

}

void main()

{

P0=0xff;//1111 1111设备初始化

delay(10);

P0=0xf0;//1111 0000低位灯亮4位

delay(500);

while(1)

{ uint i;

for(i=1;i<=1;i++)

{

P0<<=4;

P0|=0x0f;

delay(100);

}

for(i=1;i<=1;i++)

{

P0>>=4;

P0|=0xf0;

delay(100);

}

}

}

1.keil C设计软件程序的步骤

(1)安装

(2)project->选(80C51BH)->File-save(以.c为扩展名)->Add group-泡泡生成.hex 2.Hex->硬件仿真图->电路板

系统工程

建立模型

1.硬件设计-最小系统

2.软件设计-逻辑算法

3硬软联掉

流水灯设计过程

流水灯LED

1.LED工作原理正向导通

2.编程方法:初始化->开始工作(启动)->有条件工作(算法,逻辑)->最后停止(定

时)

3.实验箱:下载程序ROM烧录(1)选芯片

(2)端口

(3)文件程序

(4)下载

数码管(输出设备)

1.功能:显示数字、字符

2.原理:七段LED或八段(加上小数点)

3.分类:共阳:串联+5V电压

共阴:串联地

共阳极(共阴极加~就可以了)

#include

#define uint unsigned int

sbit a=P2^2;//38译码器的输入端之一A

sbit b=P2^3;//38译码器的输入端之一B

sbit c=P2^4;//38译码器的输入端之一C

char duanma1[]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f}; //共阳数码管段码值0-9

char duanma2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//共阴极段码值

char duanma3[]={0x06,0,0x38,0x5c,0x1c,0x79,0, 0x3e};

//显示I LovE U 共阴极段码值

void delay(uint time)//延时子函数

{ char i;//局部变量定义

for (;time>0;time--)

for(i=0;i<125;i++);//内循环延时大概1ms

}

void smg1()//共阳数码管显示0-9 子函数

{ char i;

P1=0xff; //初始1111 1111,全灭

delay(1000);//灭的时间是1s

for(i=0;i<=9;i++)

{

P1=duanma1[i];//显示共阳极段码值

delay(1000);//延时1s

}

}

void smg2()

{ char i;

P0=0;//0000 0000 段码值为0,共阴数码管灭

delay(10);

for(i=0;i<=7;i++)

{

switch(i)

{

case 0:c=0;b=0;a=0;break;//000,选通Y0,1号管

case 1:c=0;b=0;a=1;break;//001,选通Y1,2号管

case 2:c=0;b=1;a=0;break;//010,选通Y2,3号管

case 3:c=0;b=1;a=1;break;//011,选通Y3,4号管

case 4:c=1;b=0;a=0;break;//100,选通Y4,5号管

case 5:c=1;b=0;a=1;break;//001,选通Y5,6号管

相关文档
最新文档