[实验报告(单片机)26] 51单片机实验报告
时间:2020-08-31 04:46:37 来源:天一资源网 本文已影响 人
实
验
报
告
实验课程: 单片机原理及应用
实验名称: 实验 1 ——原理图绘制练习
班级: 13 自动 化 2 班 学号: 201310320226
姓名: 李浩
教师: 张玲 成绩:
实验日期: 2016 年 5 月 24 日
一、实验目的 :学习 Proteus 软件的使用,掌握单片机原理图的绘图方法
二、实验内容 :
1、绘制“计数显示器”电路原理图;
2、利用提供的 hex 文件验证此电路的运行效果。
三、实验要求 :
提交的 实验报告 中应包括:1、绘图方法简述,要求说明元件与电源的选取、
摆放及属性编辑,总线与标签的画法等内容; 2、电路原理图; 3、仿真运行效
果展示,要求就仿真文件加载方法及 3~4 幅运行截图进行简要说明; 4、实验小
结,说明遇到的主要问题或实验 1 体会等。
参考电路原理图如下:
元件类别 电路符号 元件名称
Microprocessor ICs “U1” 80C51
Miscellaneous “X1”/12MHz CRYSTAL
Capacitors “C1”~“ C2”/1nF CAP
Capacitors “C3”/22μF CAP-ELEC
Resistors Packs “RP1”/7-100Ω RESPACK-7
Resistors “R1”/100Ω RES
Optoelectronics “LED1”~“ LED2 ” 7SEG-COM-CAT-GRN
Switches & Relays “BUT ” BUTTON
————————————————
1、绘图方法简述
Protues绘图:打开之后首先新建设计,然后按照元件英文名查找
器件,单击鼠标即可放置好元件,单击引脚即可连好导线。点击左方
标签后即可在相应导线上放置标签,点击总线图标后即可画出总线。
Keic 中生成 hex文件后在 protues中双击单片机芯片即可下载仿真程序。
点击左下角播放开始仿真。
2、电路原理图
3、仿真运行效果展示
4、实验小结
因为是第一次实验, 我准备的不是很充分, 导致去了实验室后不知
道干什么,而且因为是机房的机子,我没考虑到机子上的软件问题,
所以我只是画好了原理图而没有仿真, 所以第一次实验草草了事, 就
结果而言,是以失败而告终。
实
验
报
告
实验课程: 单片机原理及应用
实验名称: 实验二—— LED 指示灯循环控制
班级: 13 自动化 2 班 学 号: 201310320226
姓名: 李浩
教师: 张玲 成绩:
实验日期: 2016 年 5 月 25 日
一、 实验目的熟悉μVision3 编译软件、掌握C51编程与调试方法。
二、 实验内容
1、按照教材 P243的图A.34,绘制实验二电路原理图;
2、编写C51 程序,实现8 个 LED 灯依次点亮的功能: P0.0→P0.1→
P0.2→P0.3→ ┅ →P0.7→P0.6→P0.5→ ┅ →P0.0 的顺序,无限循环,间隔约
50ms;
3、观察仿真结果,完成实验报告。
三、 实验要求
1、采用两种加载并运行可执行文件的方法, 即 proteus独立运行和 proteus +
Keil 联合运行,体会其中的差异和意义;
2、练习采用单步、断点以及监视窗等手段进行程序调试的方法;
3、观察仿真结果, 完成实验报告: 绘制的电路原理图、 编程思路分析及 C51
源程序、调试过程简述,仿真运行效果以及实验小结。
1、电路原理图
2、编程思路及 C51 源程序
#include<reg51.h>
#include<intrins.h>
int a=0xfe;
int i;
void delay(int x)
{
int i,j;
for(i=0;i<100;i++)
for(j=0;j<x;j++) ;
}
void main()
{
while(1)
{
for(i=0;i<7;i++)
{
P0=a;
delay(500) ;
a=_crol_(a,1);
}
for(i=0;i<7;i++)
{
P0=a;
delay(500) ;
a=_crol_(a,-1);
}
}
}
3、调试过程简述
1. 首先启动 ISIS 模块,使用 A4纸,写上名字,学号,班级
2. 选取元件,有80C51,CRYSTAL,CAP,,CAP-ELEC,RESPAC,KR-E8S,LED-YELLOW
3. 摆放元件,将元件一一放好,鼠标单击元件在点击图纸就可以
4. 编辑元件属性,编辑元件文本属性,更改电阻,电容
5. 原理图布线,把元件之间用导线连接起来,还有画总线
6. 添加.hex 仿真文件,书写对应的程序
7. 仿真运行
4、仿真运行效果
5、实验小结
因为以前学过 protues,所以真正用起来不是很难,只是时间有点久,忘了很多步骤,
但是书上有清楚地步骤,所以就结果而言,完成的比较顺利
实
验
报
告
实验课程: 单片机原理及应用
实验名称: 实验三—— 指示灯和数码管的中断控制
班级: 13 自动化 2 班 学号: 201310320226
姓名: 李浩
教师: 张玲 成绩:
实验日期: 2016 年 5 月 26 日
一、实验目的掌握外部中断的工作原理,学会中断程序设计。
二、实验内容
1、按照教材帕图 A.53,绘制实验四电路原理图;
2、要求采用外部中断原理完成本次实验,其中按键 K1、K2 均设置为下降
沿触发方式,自然优先级;
3、编写 C51 程序实现如下功能:开机后 D1 灭灯,LED1 黑屏,随后单击
K1→D1 状态反转,单击 K2 →LED1 从 0 开始循环显示 0~F 字符。
4、观察仿真结果,完成实验报告。
四、 实验要求
提交的实验报告中应包括:电路原理图,外部中断工作原理阐述(以 K1 为
例说明中断响应过程) ,C51 源程序(含流程图与注释语句) ,运行效果(含运行
截图与说明),实验小结。
1、电路原理图
2、外部中断工作原理阐述
持续按下 K1 则 D1 将亮-灭,亮-灭,亮-灭如此循环,表现了 K1 对应 D1 状
态反转这个功能, 持续按下 K2 则数码管一次显示 1-F,实现了 K2 对应 0-F 的数
码管加计数器显示。
3、C51 程序
#include<reg51.h>
char i;
sbit P0_4=P0^4;
unsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0
x6f,0x77,0x7c,0x39,0x5e,0x79,0x71} ;
/*void delay(int x)
{
int i,j;
for(i=0;i<110;i++)
for(j=0;j<x;j++);
} */
void main()
{
P2=0;
P0_4=1;
IT0=1;
IT1=1;
IE=0x85;
while(1);
}
void x0()interrupt 0
{
P0_4=!P0_4;
}
void x1()interrupt 2
{
i++;
if(i==16)
i=1;
P2=table[i];
}
4、仿真运行效果
5、实验小结
实验还是比较容易的, 有了之前的几次经验, 实验最终还是成功了。
在做这个实
验时明显比前两个熟练了许多, 做这种实验时我觉得应该多多的练习这样才能变
得熟练,做起来能够更加的得心应手。
实
验
报
告
实验课程: 单片机原理及应用
实验名称: 实验四—— 电子秒表显示器
班级: 13 自动化 2 班 学号: 201310320226
姓名: 李浩
教师: 张玲 成绩:
实验日期: 2016 年 5 月 27 日
一、实验目的掌握定时 /计数器的中断法工作原理,熟悉 C51 编程与调试方法
二、实验要求 :
1、实验电路原理图如教材 P260 A.65 图所示。程序开始时显示“ 00”;当
1s产生时,秒计数加 1;秒计数到 59 后,自动从“ 00”开始。
2、采用 12MHz 晶振频率,T0 定时方式 1、50ms定时中断法编程( 1s需要
经过 20 软循环)(流程图和参考程序模版如下所示) 。
//定时中断方式实现的电子秒表
(51 头文件)
(定义无符号字符型变量 t——中断次数计数器,并赋初值 0(定义无符号字符型变量 second——秒计数器,并赋初值 0(定义位于 ROM 区的无符号字符型数组 table——显示字模)
timer0() (中断函数关键词) {
(关闭 T0) (初值重装载 0x3cb0) (中断次数计数器增 1)
if(t==20){ //若中断 20 次,相当于 1 秒
t=0; //中断次数计数器清零second++; //秒计数器清零
}
(若秒计数器值达到 60,清零)(P0和 P2口分别输出变量 second的显示值)(启动 T0)
}
main(){
P0=table[second/10]; //P0 和 P2口分别输出显示值 P2=table[second%10];
(定义 T0 定时方式 1——TMOD )(50ms溢出初值 0x3cb0加载—— TH0 和 TL0)(中断初始化—— ET0,EA)(启动 T0) (死循环)
}
3、提交实验报告:原理图,编程分析,源程序(含注释语句) ,调试过程
描述,运行效果图(拷屏) ,结论与体会。
————————————————
1、原理图
2、源程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,aa;
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c
,0x39,0x5e,0x79,0x71} ;
void main()
{
P0=P2=table[0];
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void t0()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20)
{
a=0;
aa++;
if(aa==60)
aa=0;
P2=table[aa%10];
P0=table[aa/10];
}
}
3、调试过程简述
1. 首先启动 ISIS 模块,使用 A4纸,写上名字,学号,班级
2. 选取元件,有 80C51,CRYSTAL,CAP,,CAP-ELEC,RES,7SEG-COM-CAT-GRN
3. 摆放元件,将元件一一放好,鼠标单击元件在点击图纸就可以
4. 编辑元件属性,编辑元件文本属性,更改电阻,电容
5. 原理图布线,把元件之间用导线连接起来,还有画总线
6. 添加.hex 仿真文件,书写对应的程序
7. 仿真运行
4、仿真
5、实验小结
因为有前几次的经验,所以还是很容易的。
经过前几个实验的锻炼这个实验几乎没出
错的很顺利的完成了, 通过这几个实验使我感觉到了单片机的魅力而且学到了许
多知识希望以后使用到。
相关关键词: 单片机与1602连接电路 单片机课程设计心得 单片机课程设计总结 51单片机课程设计 单片机脉搏测量仪论文