实验内容及原理图
- 格式:doc
- 大小:1.66 MB
- 文档页数:27
标准 文案 说明: (a) 若I/O管脚冲突,则自行调整。每组至少完成8个实验。 (b) 每组根据自愿可自加实验内容1个(例如:数字电子钟、A/D转换、D/A转换、4x4矩阵键盘、8*8点阵、乐曲、温度采集、步进电机控制等),将电路元件加入其中,并编制软件调试。 (c) 电路板在加工前一定要小组内仔细检查。 (d) 建议每位同学搞清楚每个实验,切记不可抄袭。 (e) 参考程序仅供参考。 表 1 端口分配表
配置端口名称 实验 备注 P1.1~P1.7、P2.5 流水灯 P2.5~U3的LE P3.2~P3.5 单键识别 P0.0~P0.7、P2.6、P2.7 数码管显示 P2.6~数码管段选LE P2.7~数码管位选 LE P1.0~P1.7、P0.7、P2.7、P3.6、P3.7 A/D转换实验 P3.7~ADC0804的RD P3.6~ADC0804的WR P0.7~数码管位选的D7 P2.7~数码管位选LE P3.0~P3.7 4*4键盘检测 P3.0~P3.3行
P3.4~P3.7列 P0.0~P0.7、P3.2、P3.6 D/A转换实验 P3.2~DAC0832的CS P3.6~DAC0832的WR P2.3 蜂鸣器 P2.3~FM P2.2 温度传感器 P2.2~18B20 P3.0、P3.1 RS232串口通信 P3.0~COMPIM的RXD P3.1~ COMPIM的TXD P2.0、P2.1 IIC总线实验 P2.0~24C00的SDA P2.1~24C00的SCk P0.0~P0.7、P1.0~P1.7 8*8点阵实验 P0接点阵的阳极 P1接点阵的阴极 P0.0~P0.7、P3.5、P3.4 LCD1602显示实验 P3.5~LCD的RS P3.4~LCD的E 标准 文案 参考供电电路:
实验一闪烁灯实验 1 实验任务及原理图 如图1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为1秒。 标准
文案 图1 闪烁灯原理图 2 C语言源程序 #include sbit L1=P1^0; void delay02s(void) //延时0.2秒子程序 {unsigned char i,j,k;//时间需要在keil中调试,这儿是随便给的循环次数 for(i=20;i>0;i--) for(j=20;j>0;j--) for(k=248;k>0;k--); } void main(void) {while(1) {L1=0;delay02s();L1=1;delay02s();} } 标准
文案 实验二 模拟开关灯实验 1实验任务及原理图 如图2所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。
图2 模拟开关灯原理图 2 程序框图 标准
文案 3 C语言源程序
#include sbit K1=P3^0; sbit L1=P1^0; void main(void) { while(1) { if(K1==0) { L1=0; //灯亮 } else { L1=1; //灯灭 } } } 标准
文案 实验 3 按键(开关)识别 1 实验任务及原理图 实验任务 如图3所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。
图3 按键(开关识别) 2 c语言程序
方法一(C语言源程序) 标准 文案 #include unsigned char temp; void main(void) { while(1) { temp=P1>>4; temp=temp | 0xf0; P1=temp; } }
方法二(C语言源程序) #include void main(void) { while(1) { if(P1_4==0) { P1_0=0; } else { P1_0=1; } if(P1_5==0) { P1_1=0; } else { P1_1=1; } if(P1_6==0) { P1_2=0; } else { P1_2=1; } if(P1_7==0) { P1_3=0; } else { P1_3=1; }
} } 标准
文案 实验4 流水灯设计 1 实验任务及原理图 让8个发光二极管按照一定顺序循环闪烁,时间间隔为1s。用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。
图4 流水灯(广告灯)设计 标准
文案 2程序框图
3 c语言程序 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 说明 L8 L7 L6 L5 L4 L3 L2 L1 1 1 1 1 1 1 1 0 L1亮 1 1 1 1 1 1 0 1 L2亮 1 1 1 1 1 0 1 1 L3亮 1 1 1 1 0 1 1 1 L4亮 1 1 1 0 1 1 1 1 L5亮 1 1 0 1 1 1 1 1 L6亮 1 0 1 1 1 1 1 1 L7亮 0 1 1 1 1 1 1 1 L8亮 标准 文案 方法1(左移或右移) #include unsigned char i; unsigned char temp; unsigned char a,b; void delay(void) { unsigned char m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); } void main(void) { while(1) { temp=0xfe; P1=temp; delay(); for(i=1;i<8;i++) { a=temp>(8-i); P1=a|b; delay(); } for(i=1;i<8;i++) { a=temp>>i; b=temp<<(8-i); P1=a|b; delay(); } } } 标准 文案 方法2 (数组方式) C语言源程序 #include unsigned char code table[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x00,0xff,0x00,0xff, 0x01}; unsigned char i; void delay(void) {unsigned char m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); } void main(void) {while(1) {if(table!=0x01) {P1=table; i++; delay(); } else { i=0; } } } 标准 文案 实验五 报警器 1 任务及原理图 用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。
图5 报警器电路(请参考LM386资料) 标准
文案 2程序框图
3 c语言程序 #include #include bit flag; unsigned char count; void dely500(void) { unsigned char i; for(i=250;i>0;i--)