单片机上课复习内容.docx

上传人:b****1 文档编号:19356964 上传时间:2023-04-24 格式:DOCX 页数:21 大小:214.13KB
下载 相关 举报
单片机上课复习内容.docx_第1页
第1页 / 共21页
单片机上课复习内容.docx_第2页
第2页 / 共21页
单片机上课复习内容.docx_第3页
第3页 / 共21页
单片机上课复习内容.docx_第4页
第4页 / 共21页
单片机上课复习内容.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

单片机上课复习内容.docx

《单片机上课复习内容.docx》由会员分享,可在线阅读,更多相关《单片机上课复习内容.docx(21页珍藏版)》请在冰豆网上搜索。

单片机上课复习内容.docx

单片机上课复习内容

第一次

1.单片机的实质:

微型计算机

2.电平:

单片机电平高:

+5V低:

0V

RS232电平高:

-12V低:

+12V

计算机与单片机通信要加电平转换芯片max232

3.二进制与十六进制的转换

4.逻辑运算

5.单片机的内部结构:

6.

7.

8.

第一次

9.

第二次

1.时序电路机器周期=12振荡周期

Fosc=6MHZ机器周期=12*(1/6)=2uS

2.复位电路(理解工作原理)

3.单片机的存储器结构

片内和片外存储器

程序存储器和数据存储器

4.片内数据存储器的结构(256Byte)

高128字节SFR

低128字节分3个区域00H-1FH工作寄存器区

20H-2FH可位寻址区

30H-7FH用户RAM区

5.片内程序存储器的空间0000H-0FFFH4KB

6.地址线是A0-A14,那么他的存储空间是215=32KB

1根,地址空间=20,1

2根,地址空间=400,01,10,11

……

第三次

软件的使用

第四次

1.P0-P3是准双向口,即可做输入又可作输出,由程序决定

2.当P0作为输出时,必须外接上拉电阻;作为输入,必须先向相应的锁存器写“1”,才不会影响输入电平。

P0=0xff;

3.具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线。

第五次数据类型与表达式

1.数据类型

格式:

Charintlongbit+变量名

SfrP0=0x80;Sfr16T2=0xcc;sbitled=P1^0;

2.变量和常量

区别:

大小写

赋值的区别:

变量名字=数值a=127;

#define常量名字数值#defineCONST60

3.运算符

逻辑运算符!

&&||

位操作运算符~&|^

第六次c语言的基本语句

顺序选择循环

1.

选择语句

if(表达式)

{

语句组;

}

 

if(表达式)

{

语句组1;

}

else

{

语句组2;

}

 

if(表达式1)

{

语句组1;

}

elseif(表达式2)

{

语句组2;

}

elseif(表达式n)

{

语句组n;

}

else

{

语句组n+1;

}

 

多分支选择的switch语句,其一般形式如下:

switch(表达式)

{

case常量表达式1:

语句组1;break;

case常量表达式2:

语句组2;break;

……

case常量表达式n:

语句组n;break;

default:

语句组n+1;

}

2.循环语句

while(循环继续的条件表达式)

{语句组;}

 

for(循环变量赋初值;循环继续条件;循环变量增值)

{循环体语句组;}

流水灯:

#include

delay(unsignedintn);

unsignedchara=0xfe,b,c,i,m=2;

main()

{

while

(1)

{

for(i=8;i>0;i--)

{

P1=a;

delay(1000);

b=a<

c=a>>(8-m);

a=b|c;

}

}

}

delay(unsignedintn)

{

unsignedinta,b;

for(a=1000;a>0;a--)

for(b=n;b>0;b--);

}

 

书上P933.3.2

#include

delay(unsignedintn);

unsignedcharw,i,m;

main()

{

while

(1)

{

w=0x10;

m=0x08;

for(i=4;i>0;i--)

{

P1=~(w|m);

delay(1000);

w=w<<1;

m=m>>1;

}

}

}

delay(unsignedintn)

{

unsignedinta,b;

for(a=1000;a>0;a--)

for(b=n;b>0;b--);

}

 

第九次课中断

1.了解中断的概念

2.掌握中断的处理过程:

中断请求,中断响应,中断处理,中断返回

3.51系列单片机有几个中断源?

中断源编号

外部中断00

定时器T0中断1

外部中断12

定时器T1中断3

串行口中断4

4.中断响应的条件

中断源有中断请求;此中断源的中断允许位为1;CPU开中断(即EA=1)。

5.中断允许寄存器IE

EA:

=1CPU开总中断,=0关,禁止所有中断

EX0外部中断0的中断允许

ET0

EX1

ET1

ES

6.TCON

IT0和IT1/INT0和1的触发方式位

=0低电平触发=1下降沿触发

IE0和IE1外部中断的中断标志

TF0和TF1

7.了解优先级IP

第十次课外部中断编程

1.利用INT0作为外部中断输入线,每按一次开关K使P2口处的LED改变一下状态(由全亮到全灭或由全灭到全亮)。

#include

unsignedchara;

main()

{

EA=1;//CPU开总中断

EX0=1;//外部中断0开中断

IT0=1;//选择中断触发方式(中断初始化)

while

(1)

{

P2=a;

}

}

voidex0()interrupt0

{

a=~a;

}

2.

 

 

定时器/计数器中断初始化:

程序应完成如下工作:

▪对TMOD赋值,以确定T0和T1的工作方式。

▪计算初值,并将其写入TH0、TL0或TH1、TL1。

▪中断方式时,则对IE赋值,开放中断。

▪使TR0或TR1置位,启动定时/计数器定时或计数。

 

EA=1;

ET0=1;

TMOD=0xGATEC/T非M1M0GATEC/TM1M0

T1T0

11=计数器工作方式选择(方式1=16方式2=8位)

0=定时器

TH0=0x=(计数初值)/256

TL0=0x=(计数初值)%256

计数初值=(2的n次幂-计数个数)

N=16或8

TR0=1

T1工作于定时方式2,定时时间T=200uS,系统主频f=6MHZ,允许中断,对T1进行初始化编程.

EA=1;//CPU开总中断

ET0=1;//中断源开中断

TMOD=0x01;//编写TMODGATEC/TM1M0

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;//计数初值=(2的n次幂-计数个数)

TR0=1;//开启定时计数器

 

设单片机晶振频率f=6MHZ,使用定时器T1以方式1产生周期为500uS的等宽正方形脉冲,并由P1.0脚输出。

P1.0

#include

main()

{

TMOD=0x20;

TH1=256-125;

TL1=256-125;

EA=1;

ET1=1;

TR1=1;

while

(1);

}

voidtimer1()interrupt3

{

P1_0=!

P1_0;

}

 

设单片机晶振频率f=6MHZ,使用定时器T1以方式1产生周期为1S的等宽正方形脉冲,并由P1.0脚输出。

#include

unsignedchara=0;

main()

{

TMOD=0x10;

TH1=(65536-100000/2)/256;

TL1=(65536-50000)%256;

EA=1;

ET1=1;

TR1=1;

while

(1);

}

voidtimer1()interrupt3

{

a++;

while(a==5)

{P1_0=!

P1_0;a=0;}

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

}

设单片机晶振频率f=12MHZ,使用定时器T0以方式1在P1口每隔1S向右流动的流水灯。

机器周期=1uS最长计时时间=65536*1uS=65.536mS

计数值=40000计时时间=40mS

方法一:

采用中断方式

#include

unsignedintnum,w,i;

main()

{

TMOD=0x01;

TH0=(65536-40000)/256;

TL0=(65536-40000)%256;

EA=1;

ET0=1;

TR0=1;//中断初始化

while

(1)

{

w=0x80;

for(i=8;i>0;i--)

{

P1=~w;

while(num!

=350);

w=w>>1;

num=0;

}

/*P1=~w;

if(num==250)

{

w=w>>1;

num=0;

}

if(w==0x00)w=0x80;*/

}

}

voidtimer0()interrupt1

{

TH0=(65536-40000)/256;

TL0=(65536-40000)%256;

num++;

}

方法二:

采用查询方式

#include

voiddelay1s()

{

unsignedchari;

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

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

TR1=1;

while(!

TF1);

TF1=0;

}

}

voidmain()

{

unsignedchari,w;

TMOD=0x10;

while

(1)

{

w=0x01;

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

{P1=~w;w=w<<1;delay1s();}

}

}

采用10MHZ晶振,在P1.0脚上输出周期为2.5s,占空比为20%的脉冲信号。

#include

voiddelay(unsignedchara)

{

unsignedchari;

for(i=0;i

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

TR1=1;

while(!

TF1);

TF1=0;

}

}

voidmain()

{

TMOD=0x10;

while

(1)

{

P1_0=1;

delay(10);

P1_0=0;

delay(40);

}

}

 

第五章显示和键盘接口技术

1.LED数码管的连接方式:

共阴共阳

2.LED数码管的显示方式:

静态动态

3.0-9的字型码计算。

4.动态显示的工作原理

5.静态显示03257

#include

#defineucharunsignedchar

ucharcodedispcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xfe,0x67};

sbitDIN=P1^0;

sbitCLK=P1^1;

uchardispb[5];

 

voidsent(ucharx)//送段选码的程序

{

uchari,ch;

ch=x;

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

{ch=ch<<1;DIN=CY;CLK=0;CLK=1;}//串入并出的编程。

图中的A和B并在一起是DIN,也就是要并行输出的数据从DIN串行输入(一个一个的送入,送八次就是一个字节),这8位从Q0-Q7输出

}

voiddisplay(void)//显示程序

{

uchara;

for(a=0;a<=4;a++)

sent(dispb[4-a]);//先送6的字形码,然后先后移位,6移到第二位,右边第一位送一个5的字形码,6

}

main()//显示03257

{

dispb[0]=dispcode[0];

dispb[1]=dispcode[3];

dispb[2]=dispcode[2];

dispb[3]=dispcode[5];

dispb[4]=dispcode[7];

display();

}

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

当前位置:首页 > 解决方案 > 营销活动策划

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

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