单片机笔记汇总Word文档格式.docx

上传人:b****4 文档编号:17803367 上传时间:2022-12-10 格式:DOCX 页数:21 大小:186.84KB
下载 相关 举报
单片机笔记汇总Word文档格式.docx_第1页
第1页 / 共21页
单片机笔记汇总Word文档格式.docx_第2页
第2页 / 共21页
单片机笔记汇总Word文档格式.docx_第3页
第3页 / 共21页
单片机笔记汇总Word文档格式.docx_第4页
第4页 / 共21页
单片机笔记汇总Word文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

单片机笔记汇总Word文档格式.docx

《单片机笔记汇总Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机笔记汇总Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

单片机笔记汇总Word文档格式.docx

用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单片机的复位、时钟与时序

复位SPstackpointer0000011107H

程序计数器PC0000H

P0~P311111111FFH高阻

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<

reg51.h>

//调用库文件

#defineuintunsignedint//宏定义无符号整型

//定义全局变量

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

voiddelay(uinttime)

{uinti;

for(;

time>

0;

time--)

for(i=0;

i<

125;

i++);

}

voidmain()

{

P0=0xff;

//11111111设备初始化

delay(10);

P0=0xf0;

//11110000低位灯亮4位

delay(500);

while

(1)

{uinti;

for(i=1;

=1;

i++)

{

P0<

<

=4;

P0|=0x0f;

delay(100);

}

P0>

>

P0|=0xf0;

}

1.keilC设计软件程序的步骤

(1)安装

(2)project->

选(80C51BH)->

File-save(以.c为扩展名)->

Addgroup-泡泡生成.hex

2.Hex->

硬件仿真图->

电路板

系统工程

建立模型

1.硬件设计-最小系统

2.软件设计-逻辑算法

3硬软联掉

流水灯设计过程

流水灯LED

1.LED工作原理正向导通

2.编程方法:

初始化->

开始工作(启动)->

有条件工作(算法,逻辑)->

最后停止(定时)

3.实验箱:

下载程序ROM烧录

(1)选芯片

(2)端口

(3)文件程序

(4)下载

数码管(输出设备)

1.功能:

显示数字、字符

2.原理:

七段LED或八段(加上小数点)

3.分类:

共阳:

串联+5V电压

共阴:

串联地

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

dp

g

f

e

d

c

b

a

0xc0

0xf9

0xa4

3

0xb0

0x99

5

0x92

6

0x82

7

0xf8

0x80

9

0x90

A

0x88

0x93

C

0xc6

0xa1

E

0x96

F

0x9e

#defineuintunsignedint

sbita=P2^2;

//38译码器的输入端之一A

sbitb=P2^3;

//38译码器的输入端之一B

sbitc=P2^4;

//38译码器的输入端之一C

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

//共阳数码管段码值0-9

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

//共阴极段码值

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

//显示ILovEU共阴极段码值

voiddelay(uinttime)//延时子函数

{chari;

//局部变量定义

for(;

//内循环延时大概1ms

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

{chari;

P1=0xff;

//初始11111111,全灭

delay(1000);

//灭的时间是1s

=9;

{

P1=duanma1[i];

//显示共阳极段码值

delay(1000);

//延时1s

}

voidsmg2()

{chari;

P0=0;

//00000000段码值为0,共阴数码管灭

for(i=0;

=7;

{

switch(i)

case0:

c=0;

b=0;

a=0;

break;

//000,选通Y0,1号管

case1:

a=1;

//001,选通Y1,2号管

case2:

b=1;

//010,选通Y2,3号管

case3:

//011,选通Y3,4号管

case4:

c=1;

//100,选通Y4,5号管

case5:

//001,选通Y5,6号管

case6:

//110,选通Y6,7号管

case7:

//111,选通Y7,8号管

P0=duanma2[i+2];

//共阴极的段码值

delay(10);

//动态扫描,延时时间很短

voidsmg3()//显示ILovEU显示3遍

{chari,m,j;

P0=0;

for(j=1;

j<

=3;

j++)//闪烁3次

{for(m=1;

m<

=10;

m++)//扫描10组

{for(i=0;

i++)//8个管一组

switch(i)

//101,选通Y5,6号管

P0=duanma3[i];

}//i=8个

}//m=10次

//数码管全灭

delay(300);

}//j=3次闪烁

main()

smg3();

//只显示3次,不是一直显示

while

(1);

//smg1();

//调用共阳数码管

//smg2();

//调用8位1体共阴数码管

第5章

5.1中断

1.中断概念

2.中断术语

中断申请->

中断响应->

中断服务->

中断返回

5.2中断控制系统

1.中断申请的中断源(3种)

中断源名称

中断号

外部中断

定时器

T0

T1

通信

TX

RX

2.中断寄存器(4个)

(1)TCON

(2)SCON

(3)IE

(4)IP

中断编程

1.硬件电路

固定接法

按键

2.中断初始化

3.中断服务

sbitdeng=P2^0;

//变量灯与端口P2.0想通

voiddelay(uinttime)//延时子函数

chari;

//中断初始化子函数int0

voidint0()

IT0=1;

//中断触发方式为负跳动,外部中断0

EX0=1;

//允许外部中断0中断

EA=1;

//打开总中断

//中断服务函数外部中断0

int0_deng()interrupt0//外部中断0的中断号为0

{deng=!

deng;

//对后面的deng求反,再传送给deng,再送出给P2.0端口

delay(100);

//防止按键抖动

main()

//1.设备初始化

P2=0xff;

//11111111灯灭

P3=0xff;

//高电平,高阻抗

delay(100);

//2.中断初始化

int0();

//调用外部中断0初始化子函数

//如果有按键按下,产生一个外部中断,系统自动进入中断服务函数

//3.系统开始工作

//系统等待

sbitdeng=P0^4;

//变量灯与端口P0.4相通

charduanma2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0x7d,0x07,0x7f,0x6f,0x77,0x7c,

0x58,0x5e,0x79,0x71};

//共阴极0-9加AbCdEF

uintjs=0;

//中断初始化子函数int01

voidint01()

//允许外部中断0中断

IT1=1;

//中断触发方式为负跳动,外部中断1

EX1=1;

//允许外部中断1中断

int0_deng()interrupt0//外部中断0的中断号为0

deng=!

//外部中断1的中断服务

int1_smg()interrupt2//外部中断1的中断号为2

{

js=js+1;

//累加计数的功能

if(js>

=16)js=0;

//如果大于等于16就为0

P2=duanma2[js];

//对应显示计数的段码值

//防止按键抖动,保护

//1.设备初始化

P2=0;

//00000000共阴极数码管灭

//按键,高电平,高阻抗

int01();

//调用外部中断0,外部中断1初始化子函数

1.中断系统工作流程

暂时中止当前工作->

转中断申请->

进入中断服务->

2.中断系统的硬件结构组成

8位(统一设置或每一位设置编程)

TCONIT0电平触发

IT1边沿触发

SCON

IEEX0、EX1允许中断

EA总中断允许

IP

3.中断系统软件编程方法

1.调用库文件

2.设备初始化(保护,全灭,高阻)

3.中断初始化(3种中断源5个),可自动调用中断服务

4.系统开始第一个工作

5.继续调用其他工作

charkey;

voiddeng_ld()

P2=0xfe;

7;

{P2<

P2|=1;

{P2>

P2|=0x80;

voiddeng_ss()

{P2=0xaa;

P2=0x55;

deng[]={0x3c,0x18,0x7e,0x24};

deng_hy()

{chari;

{P2=deng[i];

}

deng_0xff()

{P2=0xff;

{IT0=1;

voidint0_deng()interrupt0

{key=P0&

0x0f;

{switch(key)

{case0x0e:

deng_ld();

case0x0d:

deng_ss();

case0x0b:

deng_hy();

case0x07:

deng_off();

第6章定时

1.中断源类型

INT0

INT1

TX/TR

2.外部中断硬件连接

INT0P3.2

INT1P3.3

3.软件编程

定时50ms,数码管变数字

1.硬件连接P3.4P3.5系统内部产生,不连接

2.软件

2.1#库文件、宏定义

2.2全局变量、端口

2.3数组

2.4子函数(延时、流水灯、数码管)

2.5中断初始化子函数

2.6中断服务

2.7主函数

uinta=65536-50000*11.0592/12;

charduanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

chardeng[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

voidT0_ini()

TMOD=0x01;

//定时器工作方式00000001,T0方式1

TH0=a/256;

//计时初值高

TL0=a%256;

//计时初值低

ET0=1;

//允许T0中断

//总中断

TR0=1;

//定时开始工作

chari=0,count=0,count2=0;

voidT0_smg()interrupt1

{

//重新装计数初值//

count=count+1;

if(count==20)//50msX20=1s

count=0;

i++;

if(i>

10)

i=0;

P2=deng[i];

voidT0_deng()interrupt3

count2=count2+1;

if(count2==20)//50msX20=1s

count2=0;

=14)

voidmain()

P1=0xff;

//数码管全灭

//灯全灭

//高阻

T0_ini();

//调用

1.定时器硬件结构

1.T0P3.4

T1P3.5

16位TH高8位TL低8位

定时器初值a=2^n-t*f/12

2.控制R->

TMOD:

设置工作方式方式12^16方式22^8自动重装初值

定时器电子秒表00~59

1.库、宏定义

2.数码管段码值数组定义

3.定义子函数

3.1T0中断初始化子函数

4.T0中断服务函数

5.主函数

5.1设备初始化

5.2T0初始化

5.3

//1.库文件宏定义

//2.定义全局变量

//3.定义数组数码管

//4.定义子函数

//4.1定义T0中断初始化子函数

//4.2定义T0中断服务函数

//5.主函数

charcount=0,t=0;

chardm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0x7d,0x07,0x7f,0x6f};

uinta=635536-50000*11.0592/12;

voidT0_mb()interrupt1

count++;

if(count==20)//是否到1s

t++;

if(t==60)t=0;

//是否到60s

P0=dm[t/10];

P2=dm[t%10];

P2=0;

//共阴数码管灭

P2=dm[0];

[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!

]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1