三、 实验内容与实验过程及分析 (写出详细的实验步骤,并分析实验结果) 流水灯实验步骤: 1、I/O 端口的编程 (1)头文件 对 I/O 端口编程控制时,要对 I/O 端口特殊功能寄存器声明,在 C51 的编 译器中,这项声明包含在头文件 reg51.h 中,编程时,可通过预处理命令 #include。 《单片机原理及应用》教案 使用移位运算符“>>”、“<<”或移位函数_crol_,把送 P1 口显示控制数 据进行移位,从而实现发光二极管依次点亮。编程中一定要把含有移位函数的 头文件 intrins.h 包含在内,编程时,可通过预处理命令#include 。 (2)驱动电路 8 个发光二极管 D0~D7 经限流电阻分别接至 P1 口的 P1.0~P1.7 引脚上, 阳极共同接高电平。 2、软件延时程序编写一个延时 1ms 程序。 void delayms( unsigned char int j) { unsigned char i; while(j- -) { for(i=0;i<125;i++) {;} } } 用 for 的内部循环大约延时 8μs,但不是特别精确。不同编译器会产生不 同延时,因此 i 的上限值 125 应根据实际情况进行补偿调整。 - 单片机最小系统 以 AT89S51 为例,AT89S51 内部有 4KB 闪存,本身就是一个数字量输入/输 出的最小应用系统。在构建 AT89S51 单片机最小应用系统时,AT89S51 单片机 需要外接时钟电路和复位电路即可,如图 1 所示。 注意,本最小应用系统只能作为小型的数字量的测控单元。
图1 AT89S51单片机构成的最小应用系统 #include
#include void delay() { unsigned char i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); } void main() { P1=0xfe; while(1) { P1=_crol_(P1,1); delay(); } } 电路图为 图2 硬件电路原理图 实验成果截图: 图3实验结果展示 矩阵键盘实验步骤: - 判别是否有键按下,识别哪一个键被按下,并求出相应的键值。根据键值,找到相应键值处理程序入口。
- 按键闭合与否,反应在行线输出电压上就是高电平或低电平,对行线电平高低状态检测,便可确认按键是否按下与松开。为了确保单片机对一次按键动作只确认一次按键有效,必须消除抖动期t1和t3的影响。
- 在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时10ms的子程序后,检测该行线为高电平,说明按键确实已经松开。如图3和图4所示
- 数码管显示由P0口控制,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应键号。例如,1号键按下时,数码管显示“1”;12键按下时,数码管显示“12”等
- 如果串行通信选用很低波特率(如波特率选为55),可将定时器T1设置
实验代码截图: 图4矩阵代码截图 实验结果图: 图5 矩阵键盘按键结果 电路图: 图6 硬件电路图 四、实验总结(每项不少于20字)存在问题:1.一开始对于_crol_不是很理解,对于单片机的一些电路图不知道如何去画。 - 数码管的位选和段选操作不够熟练,对矩阵键盘的行列扫描不够熟练,通过数码管的显示来体现矩阵键盘的扫描。
- 开发板的原理图明晓,导致代码出现错误,
解决方法:查看课本温习移位的理解,进一步敲好代码,对于电路图我选择反复看视频去了解每一个实验的器件。 收获:懂得如何运用_crol_和_cror_左移和右移,以及本次实验应该挑选的实验器材,以及延时函数、主函数这些的相关重点。对矩阵键盘的原理理解加深,学会了通过按键控制数码管的值变化。
以上的Word格式文档51黑下载地址:
文档.doc
(882.8 KB, 下载次数: 4)
|