单片机实验二实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“单片机实验报告二”。
实验报告
课程名称:微机原理与接口技术
指导老师:李素敏
学生姓名:
学号:
专业: 自动化
日期:2014-04-10 地点:理工楼603
实验二
1.实验目的和要求
① 掌握keil软件和STC-ISP 软件的使用方法 ② 熟悉发光管的工作原理 ③ 通过编程体验发光管的延时闪烁及移位等功能
2.主要仪器设备
PC机
单片机学习开发套件(型号:89C52RC)
3.实验内容
①实验内容1:第一个发光管以间隔200ms闪烁
源程序:
#include #define uint unsigned int
//宏定义
main(){
while(1){ P1=0xfe;delay(200);P1=0xff;delay(200);} } void delay(uint z)//延时函数,z的取值为这个函数的延时ms数 {
uint x,y;for(x=z;x>0;x--)
for(y=110;y>0;y--);
一台一件
}
实验结果说明:要使发光管闪烁,只需设置合适的时间延时即可。
②实验内容2 : 8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。
源程序:
#include
#include //后面要用到它里面的_crol_(k,l)函数 //这个函数的意思是把一个字符变量k 循环左移l 位 #define uint unsigned int
//宏定义
unsigned char a,b,k,j;
//定义五个字符变量 sbit beep=P2^3;// 定义蜂鸣器的接口
void delay(uint z)//延时函数,z的取值为这个函数的延时ms数 {
uint x,y;for(x=z;x>0;x--)
for(y=110;y>0;y--);}
void main(){
k=0xfe;//先给k一个初值11111110等待移位 while(1){
delay500ms();
beep=0;//打开蜂鸣器
delay500ms();//让它响500ms
beep=1;//关闭蜂鸣器
j=_crol_(k,1);//把k循环左移一位
k=j;//把移完的值再送给k
P1=j;//同时把值送到P1口点亮发光二极管 } //再次循环 }
实验结果说明:在此程序中用到了_crol_(k,l)函数,此函数的功能在于循环移位,在每次发光管闪烁相应时间后左移一位,把移完的值再送到P口,点亮对应的发光管。这样循环往复,达到发光管流动的效果。
③实验内容3 :用8个发光管演示出8位二进制数累加过程,即用8个二极管表示8个二进制位(亮为1,灭为0),依次以二进制形式显示0,1,2,……255。
源程序: #include
#include //包含有左右循环移位子函数的库 #define uint unsigned int
//宏定义 #define uchar unsigned char //宏定义
void delay(uint z)//延时函数,z的取值为这个函数的延时ms数,{
uint x,y;for(x=z;x>0;x--)
for(y=110;y>0;y--);} void main()
//主函数 {
} uchar a;while(1)
//大循环 {
} a++;P1=~a;delay(200);
实验结果说明:在此定义一个无符号字符变量a,a的值进行累加,但是由于表示的二进制数要求亮为1,灭为0,与发光管的0亮1灭正好相反,所以将a的计数取反并设置相应延时,重复此过程就得到了在发光管上显示八位二进制数的累加过程。
④实验内容4 :间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。
源程序:
#include //52单片机头文件
#include //包含有左右循环移位子函数的库 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义
void delay(uint z)//延时函数,z的取值为这个函数的延时ms数 {
uint x,y;for(x=z;x>0;x--)
for(y=110;y>0;y--);} void main()//主函数 { uchar a,i,j;while(1)//大循环
} {
} a=0xfe;//赋初值
for(j=0;j
} {
P1=a;//点亮小灯
delay(300);//延时300毫秒
a=_crol_(a,1);//将a变量循环左移一位
} a=_crol_(a,j);//补齐,方便下面的左移一位 P1=0xff;//全部关闭
a=a
4.心得体会:此次实验中练习较多的就是闪烁和移位,在编程过程中,设置闪烁的时间必须达到人眼正常观察的要求,这就需要计算合适的闪烁时间,不停的尝试,最终选择适宜观察的时间间隔。发光管的循环移位时调用_crol_(k,l)函数
可以大大简化编程的行数。所以熟悉单片机的函数库,可以方便我们编程。所以在以后的实验中还得继续学习这个函数库,从而更轻松的完成实验内容。
《单片机原理及应用》实 验 报 告2017—2018学年第一学期班级: 152 专业: 电子科学与技术 姓名: 子路 学号: 教师:实验一:Keil C51 一、实验目的1、熟悉Keil C51单片机应用开发系......
实验一一、实验题目:试编写一段程序,其功能为将21H单元的内容8位分别依次存放到从22H开始的8单元中。二、keil代码:org 0000h jmp start org 0100h start: mov 21h,#8; mov A......
51单片机控制流水灯目录 (1)51精简开发板简介 (2)实验目的 (3)实验内容 (4)元件 (5)原理图 (6)实验步骤(7)主要功能介绍(8)实验错误及分析 (9)调试及程序 (10)系统测试 (11)实验心得一、51精简开发......
实验四、中断交通灯实验林立强1000850116一、实验目的1、了解MCS-51单片机的组成、中断原理,中断处理过程、外部中断的中断方式。2、掌握中断响应及处理的编程方法。二、实验......
单片机实验报告一、实验目的1.熟练使用Keil、Protues两款软件 2.通过上机操作,增强个人动手实践能力 3.加深对理论知识的理解4.培养运用汇编语言进行初步编写程序的能力二、......