编程复习课pptConvertor.docx
- 文档编号:10827174
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:15
- 大小:17.83KB
编程复习课pptConvertor.docx
《编程复习课pptConvertor.docx》由会员分享,可在线阅读,更多相关《编程复习课pptConvertor.docx(15页珍藏版)》请在冰豆网上搜索。
编程复习课pptConvertor
2014/12/7
1
编程复习课
2.6
1
2014/12/7
2
Led
点亮板子上的0、2、4、6灯,与1、3、5、7灯交替闪烁
2
2014/12/7
3
#include
#defineuintunsignedint
voiddelay();
voidmain()
{
while
(1)
{
P1=0xaa;
delay();
P1=0x55;
delay();
}
}
3
2014/12/7
4
voiddelay()
{
uintx,y;
for(x=100;x>0;x--)
for(y=600;y>0;y--)
;
}
4
2014/12/7
5
流水灯:
从D0---D7依次点亮
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
uchartemp;
voiddelay(uint);
程序如下:
5
2014/12/7
6
voidmain()
{
temp=0xfe;
while
(1)
{
for(num=0;num<8;num++)
{
P1=temp;
delay(100);
temp=_crol_(temp,1);
P1=0xff;
delay(100);
}
}
}
6
2014/12/7
7
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)
;
}
7
2014/12/7
8
例子
1.D1、D2、D5、D6和D0、D3、D4、D7这四个LED交替闪烁.
2.设计出流水灯程序,从D7—D0
8
2014/12/7
9
数码管
9
2014/12/7
10
在八个数码管上显示0、1,2……7
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharnum1;
ucharnum2;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
ucharcodewei[]={
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe};
voiddelay();
10
2014/12/7
11
voidmain()
{
while
(1)
{
for(num1=0;num1<8;num1++)
{
P2=wei[num1];
P0=table[num1];
delay();
}
}
}
11
2014/12/7
12
voiddelay()
{
uintx,y;
for(x=2;x>0;x--)
for(y=110;y>0;y--);
}
12
2014/12/7
13
练习题
用数码管动态显示,实现00-59计数器。
13
2014/12/7
14
通过四个按键来控制LED灯的显示情况:
S1:
D0-D3点亮
S2:
D2点亮
S3:
D0-D7点亮
S4:
D0-D5点亮
14
2014/12/7
15
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharflag;
voiddelay(uintk)
{
uintdatai,j;
for(i=0;i {for(j=0;j<121;j++) {;}} } 15 2014/12/7 16 ucharscan_key(void) { uchartemp; temp=P3; returntemp; } 16 2014/12/7 17 voidmain(void) { while (1) { P3=0xff; if(P3! =0xff) {delay(20); if(P3! =0xff)flag=scan_key(); } elseflag=0; switch(flag) { case0xf7: P1=0xf0;break; case0xfb: P1=0xfb;break; case0xdf: P1=0x00;break; case0xef: P1=0xc0;break; default: P1=0xff;break; } } } 17 2014/12/7 18 中断 定时器 18 2014/12/7 19 【例】单片机应用系统中,外中断0引脚接一个开关,并行口线P1.0接一个发光二级管。 要求: 开关闭合一次,发光二极管的状态改变一次。 试编写程序 #include“reg51.h” #include“intrins.h” sbitP10=P1^0; voiddelay(void) {inti; for(i=0;i<200;i++); } voidint_srv(void)interrupt0 { P10=! P10; delay(); } voidmain() { P10=0; EA=1; EX0=1; IT0=1; while (1); } 19 2014/12/7 20 编程流程: 1、初始化中断: 开中断; 设置优先级; 触发方式。 2、进入中断后: 关中断; 执行程序; 开中断。 20 2014/12/7 21 定时器 例1设单片机的振荡频率为12MHz,在P1.0引脚产生一个周期为1000µs的方波,定时器T0采用中断的处理方式。 定时器的分析过程。 工作方式选择: 需要产生周期信号时,选择定时方式。 定时时间到了对输出端进行周期性的输出即可。 工作模式选择: 根据定时时间长短选择工作模式。 首选模式2,可以省略重装初值操作。 21 2014/12/7 22 定时时间计算: 周期为1000µs的方波要求定时器的定时时间为500µs,每次溢出时,将P1.0引脚的输出取反,就可以在P1.0上产生所需要的方波。 定时初值计算: 振荡频率为12MHz,则机器周期为1µs。 设定时初值为X, (65536-X)×1µs=500µs X=65036=0FE0CH 定时器的初值为: TH0=0FEH,TL0=0CH 22 2014/12/7 23 C语言程序: #include sbitP1_0=P1^0;//进行位定义 voidmain() {TMOD=0x01;//T0做定时器,模式1 TL0=0x0c; TH0=0xfe;//设置定时器的初值 ET0=1;//允许T0中断 EA=1;//允许CPU中断 TR0=1;//启动定时器 while (1);//等待中断 } 23 2014/12/7 24 voidtime0_int(void)interrupt1 {//中断服务程序 TL0=0x0c; TH0=0xfe;//定时器重赋初值 P1_0=~P1_0;//P1.0取反,输出方波 } 24 2014/12/7 25 例2设单片机的振荡频率为12MHz,用定时器/计数器0编程实现从P1.0输出周期为500μs的方波。 分析: 方法同例1 定时时间: 方波周期为500μs,定时250μs。 模式选择: 定时器0可以选择模式0、1和2。 模式2最大的定时时间为256μs,满足250μs的定时要求,选择模式2。 25 2014/12/7 26 (1)初值计算 (256-X)×1µs=250µs X=6;则TH0=TL0=6 (2)程序: 采用中断处理方式的程序: 26 2014/12/7 27 C语言程序: #include sbitP1_0=P1^0;//进行位定义 voidmain() {TMOD=0x02;//选择工作模式 TL0=0x06; TH0=0x06;//为定时器赋初值 ET0=1;//允许定时0中断 EA=1; TR0=1;//启动定时器0 while (1);//等待中断 } 27 2014/12/7 28 voidtime0_int(void)interrupt1 { P1_0=~P1_0; } 28 2014/12/7 29 练习题 利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12MHz。 利用定时/计数器T0的方式1,产生1s的定时,并使P1.0引脚上输出周期为2s的方波,采用中断方式,设系统时钟频率为12MHz。 29 2014/12/7 30 利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12MHz。 1、计算计数初值X: N=t/Tcy=10×10-3/1×10-6=10000 计数器初值应为65536-10000。 即应将(65536-10000)/256送入TH0中,(65536-10000)%256送入TL0中。 30 2014/12/7 31 2、求T0的方式控制字TMOD: M1M0=01,GATE=0,C/T=0,可取方式控制字为01H 7 6 5 4 3 2 1 0 TMOD GATE C/T M1 M0 GATE C/T M1 M0 字节地址: 89H 31 2014/12/7 32 1.C/T定时器方式或计数器方式选择位 若C/T=1时,为计数器方式;C/T=0时,为定时器方式。 2.GATE定时器/计数器运行门控标志位 当GATE=1时,T/C的启动受双重控制,即要求INT0(或INT1)引脚为高电平且TR0(或TR1)置1时,相应的T/C才被选通工作。 若GATE=0,T/C的启动仅受TR0(或TR1)控制,即置1,T/C就被选通,而不管INT0(或INT1)的电平是高还是低。 3.M1M0: 工作方式设置位。 可设置四种工作方式(见下页)。 32 2014/12/7 33 #include“reg51.h” sbitP10=P1^0; voidtimer0(void)interrupt1 { P10=! P10; TH0=(65536-10000)/256; TL0=(65536-10000)%256; } 33 2014/12/7 34 voidmain(void) { TMOD=0x01; P10=0; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=1; while (1); } 34 ThankYou! 35
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 复习 pptConvertor