实验目的:
1.掌握单片机I/O口输入输出使用;
2.掌握单片机I/O口位操作的编程。
任务:
1.根据要求编写程序,并写出原理性注释;
2. 检查程序运行的结果,分析一下是否正确;
3. 完成所建工程的仿真及调试。
1.设计一个模拟开关灯系统,将单片机P3.0引脚接开关,P1.0引脚接发光二极管,利用开关控制二极管的亮和灭;
2.利用Keil进行编程和调试;
3.利用Proteus建立仿真模型,完成所建工程的仿真及调试。
实验步骤:
1.运行Keil uVision5 开发环境,按照“模块化单片机教学实验平台配套的实验指导书1.2.3 节”介绍的方法建立程esimlab3. uvproj,CPU 为AT89S51,包含启动文件STARTUP.A51。
2.输入源程序,在Keil uVision5 开发环境中,建立源程序esimlab3.c,将上述程序加入该程序文件。并将该文件加入工程esimlab3.uvproj。
3.设置工程esimlab3. uvproj 属性,将其晶振频率设置为12MHz,选择输出可执行文件(HEX 文件),仿真方式为“Use Simulator”。
4.构造(Build)工程esimlab3.uvproj。如果输入有误进行修改,直至构造正确,生成可执行程序 esimlab3.hex 为止。
实验步骤:
1.运行Proteus 开发环境,建立工程,新建原理图设计文件esimlab3. Pdsprj,参考图一。
图一 原理图实例
2.设置单片机属性,将其晶振频率设置为12MHz,载入KEIL生成的文件esimlab3.hex。
3.运行仿真并观察结果。
esimlab3.c文件:
- #include
//调用51单片机头文件 -
- void main(){
-
- while(1){
- //判断按键是否按下
- if(P3_0 == 0)
- {
- P1_0 = 0;//按键按下,LED灯点亮
- }
- else
- {
- P1_0 = 1;//按键松开,LED灯熄灭
- }
- }
- }
仿真结果:
通过本次实验,掌握单片机I/O口输入输出使用,掌握单片机I/O口位操作的编程。
P1口属于弱上拉模式,如果端口引脚为低电平,能使灌电流从单片机的外部流入内部,则将大大增加流过的灌电流值,因此给P1口低电平就可以驱动LED点亮。
被检测的开关一端接到I/O端口的引脚上,另一端接地,开关处于闭合状态还是打开状态可通过读入I/O口的电平来实现。