单片机实验报告
实验名称:
姓 名: 学 号: 班 级: 实验时间:
I/O口控制实验
一、 实验目的
1、 Keil C51软件的介绍,Proteus软件的应用,及结合使用。 2、 学习I/O的使用;
3、 学习延时子程序的编写和使用; 4、 掌握单片机编程器使用和芯片烧写方法。
二、 实验原理
1. 灯闪烁实验
(1) 在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间
间隔为0.2秒。
(2) 系统板上硬件连线:把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1
区的J52接口相连。
灯闪烁实验电路原理图
(3) 程序设计流程
2. 广告流水灯实验
(1) 做单一灯的左移右移,八个发光二极管L1~L8分别接在单片机的P1.0~P1.7
延时0.2秒 延时0.2秒 P1.0输出“1”LED灯熄灭 开始 P1.0输出“0”LED灯亮 接口上,输出“0”的时候,发光二极管亮,开始时P1.0->P1.1->P1.2->P1.3->...->P1.7->P1.6->...P1.0亮,重复循环。
(2) 系统板上硬件连线:把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1
区的J52接口相连。要求:P1.0对应着L1,P1.1对应L2,„„,P1.7对应着L8。
P1口广告流水灯实验电路原理图
(3) 程序设计流程:流程图如下
P1口的各位灯依次从 是
右往左闪烁
3. 模拟开关实验
(1) 监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端
口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄火。
(2) 系统板上硬件连线:把“单片机系统”A2区的P1.0端口用导线连接到D1
区的LED1端口上;把“单片机系统”A2区的P3.0端口用导线连接到D1区的KEY1端口上;
P1口的各位灯依次从左往右闪烁 延时1秒 延时1秒 P1口赋初值 开始 模拟开关实验原理图
(3) 程序设计流程
否 是
L1灭 L1亮 开关闭合否 开始
三、 实验内容
1 灯闪烁
利用单片机的I/O引脚控制一发光二极管,实现闪烁效果。 (1) c语言代码 #include sbit P10=P1^0; void delay() {long int i;
for(i=0;i<7550;i++); }
void main() {while(1) {P10=1; delay(); P10=0;
delay(); } }
(2) 系统板上硬件连线
(3) 时间控制
2 广告流水灯
利用单片机的任一组I/O引脚控制八个发光二极管,实现广告流水灯效果 (1) c语言代码
#include void time() {long int i;
for(i=0;i<=38000;i++);}
void delay(unsigned char tmp) {
unsigned char j; while(tmp--){ j=255;
while(j--); } }
code unsigned char tmpled[8]={0Xfe,0Xfd,0Xfb,0Xf7,0xef,0xdf,0xbf,0x7f}; code unsigned char smpled[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; void main(void) {
unsigned char i; while(1){ for(i=0;i<8;i++) {
P1=tmpled[i]; delay(100); }
P1=0xff; time();
for(i=0;i<8;i++) {
P1=smpled[i]; delay(100); }
P1=0xff; time(); } }
(2) 系统硬件电路
(3) 时间控制
3 模拟开关
读取单片机的I/O引脚状态来控制发光二极管,引脚状态由外部开关控制。 (1) c语言代码 #include \"reg51.h\" sbit key = P3^0; sbit led= P1^0; void main(void) {
while(1){ if(key==0) led=0;
if(key==1) led=1; } }
(2) 系统硬件连接
四、 小结与体会
通过本次实验了解了keil和protues软件的使用,学会了I/O口的使用,学会了延时子程序的编写和使用以及掌握了单片机编程器的使用和芯片烧写方法。在自己编写程序时,要注意高低电平的分析,掌握好循环和片选定义。