单片机实验报告一.docx
- 文档编号:23416461
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:18
- 大小:346.53KB
单片机实验报告一.docx
《单片机实验报告一.docx》由会员分享,可在线阅读,更多相关《单片机实验报告一.docx(18页珍藏版)》请在冰豆网上搜索。
单片机实验报告一
实验一发光二极管实验
一、实验目的
1、掌握AT89C51单片机IO口的输入输出。
2、掌握用查表方式实现AT89C51单片机IO口的控制。
3、练习单片机简单延时子程序的编写。
4、熟练运用Proteus设计、仿真AT89C51系统。
二、实验内容
1、编写延时子程序,延时时间为0.1S。
程序代码如下:
#include
voiddelay100ms()
{intm,n;
for(m=0;m<100;m++)
for(n=0;n<100;n++);
}
2、见图一。
通过AT89C51单片机控制8个发光二极管发光,实现亮点以由上到下循环移动,间隔时间为0.1S。
程序代码如下:
#include
voiddelay();
//#defineucharunsignedchar
//#defineuintunsignedint
voidmain()
{intk;
while
(1)
{
P1=0Xfe;
delay();
for(k=0;k<7;k++)
{
P1=P1<<1|0X01;
delay();
}
}
}
voiddelay()
{
intm,n;
for(m=0;m<100;m++)
for(n=0;n<120;n++);
}
仿真电路图如下:
3、见图一。
通过AT89C51单片机控制8个发光二极管发光,循环实现亮点由上到下移动1次(间隔时间为0.2S),由下到上移动1次(间隔时间为0.2S),闪烁1次(即先全亮0.1S,再全灭0.1S)。
程序代码如下:
#include
intk;
voiddelay(intk);
voidmain()
{
while
(1)
{
intm,n;
P1=0Xfe;
delay(200);
for(m=0;m<7;m++)
{
P1=P1<<1|0X01;
delay(200);
}
for(n=0;n<7;n++)
{
P1=P1>>1|0X80;
delay(200);
}
P1=0X00;
delay(100);
P1=0Xff;
delay(100);
}
}
voiddelay(intk)
{
inti,j;
for(i=0;i for(j=0;j<120;j++); } 仿真电路图: 4、见图一。 用数组方式实现题3。 程序代码如下: #include intk; voiddelay(intk); charA[]={0Xfe,0Xfd,0Xfb,0Xf7,0Xef,0Xdf,0Xbf,0X7f}; voidmain() { while (1) { intm,n; for(m=0;m<8;m++) { P1=A[m]; delay(200); } for(n=6;n>=0;n--) { P1=A[n]; delay(200); } P1=0X00; delay(100); P1=0Xff; delay(100); } } voiddelay(intk) { inti,j; for(i=0;i for(j=0;j<120;j++); } 电路图如题三。 5、P2口作为输入口,接8只开关。 P1口做为输出口,接8只发光二极管,通过设置8只拨动开关的状态控制8只发光二极管的亮灭。 程序代码如下: #include sbitk0=P2^0; sbitk1=P2^1; sbitk2=P2^2; sbitk3=P2^3; sbitk4=P2^4; sbitk5=P2^5; sbitk6=P2^6; sbitk7=P2^7; sbity0=P1^0; sbity1=P1^1; sbity2=P1^2; sbity3=P1^3; sbity4=P1^4; sbity5=P1^5; sbity6=P1^6; sbity7=P1^7; chara0,a1,a2,a3,a4,a5,a6,a7; voidmain() { while (1) { if(k0==0) y0=0;elsey0=1; if(k1==0) y1=0;elsey1=1; if(k2==0) y2=0;elsey2=1; if(k3==0) y3=0;elsey3=1; if(k4==0) y4=0;elsey4=1; if(k5==0) y5=0;elsey5=1; if(k6==0) y6=0;elsey6=1; if(k7==0) y7=0;elsey7=1; } } 仿真电路图如下: 6、用蜂鸣器发出固定电话回音声音。 见图三。 固定电话回音声音: 450Hz,通1秒断4秒。 程序代码如下: #include intk; voiddelay(intk); sbitP37=P3^7; voidmain() { inti; while (1) { for(i=0;i<500;i++) { P37=1; delay (1); P37=0; delay (1); } P37=0; delay(4000); } } voiddelay(intk) { intm,n; for(m=0;m for(n=0;n<120;n++); } 7、1、按键若不按下,LED灯全灭。 2、按键每按下一次,LED灯亮状态实现加法功能。 即: 第一次按下,灯状态为11111110;第二次按下,灯状态为11111101; 第三次按下,灯状态为11111100;.。 。 。 。 。 。 。 。 。 。 。 直到灯状态为00000000。 再次按下后,状态又如同第一次按下。 3、按键每次按下时,蜂鸣器有声音发出。 (高电平1毫秒,低电平1毫秒,表明确实有按键按下)。 程序代码如下: #include sbitP20=P2^0; sbitP37=P3^7; voiddelay(intk); voidmain() { P1=0Xff; P37=0; while (1) { if(P20==0) delay(20); if(P20==0) { P37=0; delay (1); P37=1; delay (1); P1=P1-1; while(! P20); P37=0; } } } voiddelay(intk) { intm,n; for(m=0;m for(n=0;n<120;n++); } 仿真电路图如下: 图三 8、简易模拟交通灯 说明: 东西向绿灯亮10秒,黄灯闪烁3次后红灯亮,红灯亮后,南北向由红灯变为绿灯,15秒后南北向黄灯闪烁3次后变红灯,东西向变绿灯,如此重复。 程序代码如下: #include #defineuintunsignedint voiddelay(uintk); voidmain() {while (1) { P3=0X1E; delay(10000); { uinti; for(i=0;i<3;i++) { P3=0X2E; delay(1000); P3=0X3E; delay(1000); } } P3=0X33; delay(15000); { uintm; for(m=0;m<3;m++) { P3=0X35; delay(1000); P3=0X37; delay(1000); } } } } voiddelay(uintk) { uinti,j; for(i=0;i for(j=0;j<110;j++); } 仿真电路图如下: 9、利用开关控制LED。 要求: 1、每次按下K1时递增点亮一只LED,全亮时再次按下则再次循环开始; 2、K2按下后点亮上面4只LED 3、K3按下后点亮下面4只LED 4、K4按下后关闭所有LED 程序代码如下: #include #defineucharunsignedchar sbitk1=P1^4; sbitk2=P1^5; sbitk3=P1^6; sbitk4=P1^7; staticuchari=0;m; uchartab[]={0Xff,0Xfe,0Xfc,0Xf8,0Xf0,0Xe0,0Xc0,0X80,0X00}; voidkeyboardscan(); voidmain() { while (1) { keyboardscan(); } } voidkeyboardscan() { if(k1==0) {if(i==8)i=0;elsei=i+1;P0=tab[i];while(! k1);} if(k2==0) {P0=0Xf0;} if(k3==0) {P0=0X0f;} if(k4==0) {P0=0Xff;} } 仿真电路图如下: 按下K1: 按下K2: 按下K3: 按下K4: 三、实验心得: 第一次做单片机的实验,说实话是感慨万分。 从写代码到仿真,我才明白原来很多东西如果光看而不自己动手去做的话,是永远都学不会的。 比如在写代码的时候,有时候一些细小的细节,会影响到整个程序的运行,比如说while (1)跟while (1);虽然说编译阶段不会出现错误,但是在仿真阶段它却不能给你满意的结果。 又或者if()跟if();这是我有时候会出现的问题,不过后来写程序多了,慢慢地就会注意这些问题,编译跟仿真基本上能够达到实验的要求!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)