电子与信息工程学院实验报告
1.了解C51语言设计的原则。 2.掌握单片机的使用。 3.掌握keil软件和proteus软件的使用。 二、实验内容 用KeilC51编写程序,来实现D1~D4四个流水灯的循环点亮,并在Proteus软件中仿真,用外部中断0的方式控制按键开,使K3连接在P3.2口,编程使K3控制D1~D4灯依次循环点亮,不能影响其它灯。 按键S3按下时,P2口控制的8位发光LED灯D1~D4循环点亮。 三、实验步骤 我们可以编写一个简单的程序来实现四个流水灯的循环点亮,用按键来控制,K3连接在P3.2,编程使K3控制D1~D4灯依次循环点亮,不能影响其它灯。 用外部中断0来实现。
如程序所述,当k3为低电平,即为0时,使D1~D4点亮,用while循环使D1~D4不断循环点亮,当k3为高电平是,停止循环。 工程截图如图所示: 四、实验结果 1、先根据要求连接到如图所示电路图。 将k3接到单片机的P3^2口上,P2口接8个LED灯,LED的另一端接上拉电阻,最后接到电源正极。单片机的X1口接晶振电路。
测试前
- 根据要求将程序添加到上电路图中,即可得到一下结果。
开始运行,按下S3,LED从D1开始到D4依次循环点亮。
测试后
3、使S3抬起时,即S3接高电平是,循环停止。
五、实验总结 在编写程序的过程中,要弄懂电路图中各个引脚所接的位置,弄明白单片机和各个元件的功能以及引脚功能,这样在写程序时才能明白该如何写语句,自己就会比较清楚,也会比较有条理性。在写的过程中也要注意C语言书写的要求,有时候错一个标点或者括号程序运行就会出现错误,所以必须细心。通过这次实验,感觉自己还不是很熟悉,对于很多东西都不懂,需要一边写一边查询各个功能和用法,写起来还是很吃力的。 在以后的学习中,我一定要更加努力的学习,更多的去敲程序练习,同时也更多的去练习写程序。
C51单片机程序:
- #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
- typedef unsigned int u16; //对数据类型进行声明定义
- typedef unsigned char u8;
- #define led P2
- sbit k3=P3^2;
- void delay(u16 i)
- {
- while(i--);
- }
- void Int0Init()
- {
- //设置INT0
- IT0=1;//跳变沿出发方式(下降沿)
- EX0=1;//打开INT0的中断允许。
- EA=1;//打开总中断
- }
- void main()
- {
- Int0Init(); // 设置外部中断0
- while(1);
- }
- void Int0() interrupt 0 //外部中断0的中断函数
- {
- delay(100); //延时消抖
- { while(k3==0)
- {
- led=0xfe;
- delay(50000);
- led=0xfd;
- delay(50000);
- led=0xfb;
- delay(50000);
- led=0xf7;
- delay(50000);
- led=0xf7;
- delay(50000);
- led=0xfb;
- delay(50000);
- led=0xfd;
- delay(50000);
- led=0xfe;
- delay(50000);
- }
- }
- }
复制代码
完整的Word格式文档51黑下载地址:
流水灯.doc
(159.54 KB, 下载次数: 63)
|