单片机的40个实验2Word文件下载.docx
- 文档编号:17644720
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:46
- 大小:382.87KB
单片机的40个实验2Word文件下载.docx
《单片机的40个实验2Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机的40个实验2Word文件下载.docx(46页珍藏版)》请在冰豆网上搜索。
P3_4=0;
temp=P3;
temp=temp&
0x0f;
if(temp!
=0x0f)
for(i=50;
i>
0;
i--)
for(j=200;
j>
j--);
switch(temp)
case0x0e:
key=7;
break;
case0x0d:
key=8;
case0x0b:
key=9;
case0x07:
key=10;
}
P1_0=~P1_0;
P0=table[key];
while(temp!
P3_5=0;
key=4;
key=5;
key=6;
key=11;
P3_6=0;
key=1;
key=2;
key=3;
key=12;
P3_7=0;
key=0;
key=13;
key=14;
key=15;
}
15.定时计数器T0作定时应用技术
(一)
用AT89S51单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始。
硬件电路如下图所示
2.电路原理图
图4.15.1
图4.15.2
4.C语言源程序(查询法)
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,
0x39,0x5e,0x79,0x71,0x00};
unsignedcharsecond;
unsignedchartcount;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
tcount=0;
second=0;
P0=dispcode[second/10];
P2=dispcode[second%10];
if(TF0==1)
tcount++;
if(tcount==20)
second++;
if(second==60)
TF0=0;
5.C语言源程序(中断法)
ET0=1;
EA=1;
while
(1);
voidt0(void)interrupt1using0
16.定时计数器T0作定时应用技术
(二)
用AT89S51的定时/计数器T0产生2秒钟的定时,每当2秒定时到来时,更换指示灯闪烁,每个指示闪烁的频率为0.2秒,也就是说,开始L1指示灯以0.2秒的速率闪烁,当2秒定时到来之后,L2开始以0.2秒的速率闪烁,如此循环下去。
0.2秒的闪烁速率也由定时/计数器T0来完成。
图4.16.1
T0中断服务程序框图
主程序框图
图4.16.2
unsignedchartcount2s;
unsignedchartcount02s;
unsignedcharID;
tcount2s++;
if(tcount2s==40)
tcount2s=0;
ID++;
if(ID==4)
ID=0;
tcount02s++;
if(tcount02s==4)
tcount02s=0;
switch(ID)
case0:
case1:
P1_1=~P1_1;
case2:
P1_2=~P1_2;
case3:
P1_3=~P1_3;
17.99秒马表设计
1.实验任务
(1.开始时,显示“00”,第1次按下SP1后就开始计时。
(2.第2次按SP1后,计时停止。
(3.第3次按SP1后,计时归零。
图4.17.1
3.程序框图
主程序框图
图4.17.2
unsignedcharkeycnt;
unsignedinttcnt;
TMOD=0x02;
if(P3_5==0)
for(i=20;
for(j=248;
keycnt++;
switch(keycnt)
TH0=0x06;
TL0=0x06;
TR0=0;
keycnt=0;
while(P3_5==0);
tcnt++;
if(tcnt==400)
tcnt=0;
if(second==100)
18.“嘀、嘀、……”报警声
用AT89S51单片机产生“嘀、嘀、…”报警声从P1.0端口输出,产生频率为1KHz,根据上面图可知:
1KHZ方波从P1.0输出0.2秒,接着0.2秒从P1.0输出电平信号,如此循环下去,就形成我们所需的报警声了。
图4.18.1
中断服务程序框图
图4.18.2
unsignedintt02s;
unsignedchart05ms;
bitflag;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
t02s++;
if(t02s==400)
t02s=0;
flag=~flag;
if(flag==0)
19.“叮咚”门铃
当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。
图4.19.1
图4.19.2
unsignedchart5hz;
unsignedchart7hz;
bitstop;
if(P3_7==0)
for(i=10;
t5hz=0;
t7hz=0;
flag=0;
stop=0;
while(stop==0);
if(tcnt==2000)
else
stop=1;
t7hz++;
if(t7hz==3)
t5hz++;
if(t5hz==4)
20.数字钟﹝★﹞
(1.开机时,显示12:
00:
00的时间开始计时;
(2.P0.0/AD0控制“秒”的调整,每按一次加1秒;
(3.P0.1/AD1控制“分”的调整,每按一次加1分;
(4.P0.2/AD2控制“时”的调整,每按一次加1个小时;
图4.20.1
unsignedchardispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsignedchardispbuf[8]={0,0,16,0,0,16,0,0};
unsignedchardispbitcnt;
unsignedcharminite;
unsignedcharhour;
unsignedcharmstcnt;
if(P0_0==0)
for(i=5;
dispbuf[0]=second%10;
dispbuf[1]=second/10;
while(P0_0==0);
if(P0_1==0)
minite++;
if(minite==60)
minite=0;
dispbuf[3]=minite%10;
dispbuf[4]=minite/10;
while(P0_1==0);
if(P0_2==0)
hour++;
if(hour==24)
hour=0;
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;
while(P0_2==0);
mstcnt++;
if(mstcnt==8)
mstcnt=0;
P1=dispcode[dispbuf[dispbitcnt]];
P3=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==8)
dispbitcnt=0;
if(tcnt==4000)
21.拉幕式数码显示技术
用AT89S51单片机的P0.0/AD0-P0.7/AD7端口接数码管的a-h端,8位数码管的S1-S8通过74LS138译码器的Y0-Y7来控制选通每个数码管的位选端。
AT89S51单片机的P1.0-P1.2控制74LS138的A,B,C端子。
在8位数码管上从右向左循环显示“12345678”。
能够比较平滑地看到拉幕的效果。
图4.21.1
图4.21.2
unsignedchardispbitcode[]={0xf8,0xf9,0xfa,0xfb,
0xfc,0xfd,0xfe,0xff};
unsignedchardispbuf[8]={16,16,16,16,16,16,16,16};
unsignedintt02scnt;
unsignedchart5mscnt;
unsignedcharu;
unsignedchari;
t5mscnt++;
if(t5mscnt==4)
t5mscnt=0;
P0=dispcode[dispbuf[dispbitcnt]];
P1=dispbitcode[dispbitcnt];
t02scnt++;
if(t02scnt==1600)
t02scnt=0;
u++;
if(u==9)
u=0;
for(i=0;
i<
8;
i++)
dispbuf[i]=16;
u;
dispbuf[i]=8;
22.电子琴
(1.由4X4组成16个按钮矩阵,设计成16个音。
(2.可随意弹奏想要表达的音乐。
图4.22.1
图4.22.2
unsignedcharSTH0;
unsign
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 40 实验