微型计算机控制技术课程设计.docx
《微型计算机控制技术课程设计.docx》由会员分享,可在线阅读,更多相关《微型计算机控制技术课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
微型计算机控制技术课程设计
微型计算机控制技术
课程设计
姓名:
任文华
班级:
1220391
学号:
122039128
日期:
2014-12-22
实训一流水灯的设计
一、实训目的
1.通过实验,熟悉并掌握试验系统原理与使用方法。
2.掌握单片机的基本使用方法与编程方法。
3.掌握C语言编程基本思想。
4.学会基础的编程控制。
二、实训内容
1.使用仿真软件设计流水灯控制电路。
2.使用Keil编写程序实现流水灯的控制。
3.运行并调试程序。
三、实训原理
本流水灯是一个带有八个发光二极管的单片机最小应用系统,即为AT89C51单片机、电阻、发光二极管、电源等电路和必要的软件组成的单片机。
如果要让接在P1.0口的LED1(共阴极接法)亮起来,那么只要把P1.0的电平变为高电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为低电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭方法同LED1。
因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。
在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管灯亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
四、实训过程
1.电路设计
如下图:
2.编写程序
#include
voiddelay()
{
inti,j;
for(i=0;i<100;i++)
for(j=0;j<200;j++);
}
voidmain()
{
while
(1)
{
P1=0X01;
delay();
P1=0X02;
delay();
P1=0X04;
delay();
P1=0X08;
delay();
P1=0X10;
delay();
P1=0X20;
delay();
P1=0X40;
delay();
P1=0X80;
delay();
}
}
3.运行过程
如下图:
实训二8*8点阵显示屏的设计
1、实训目的
1.通过实验,熟悉并掌握试验系统原理与使用方法。
2.掌握点阵的基本原理与使用方法。
3.掌握单片机的基本使用方法与编程方法。
2、实训内容
1.使用仿真软件实现点阵显示汉字(下面显示“口”字)。
2.了解点阵的使用原理和引脚接法。
3.使用Keil环境编程并下载编译好的程序到51单片机中。
4.调试并运行程序。
3、实训原理
LED它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以LED的抗震性能好。
发光二极管的核心部分是由p型半导体和n型半导体组成的晶片,在p型半导体和n型半导体之间有一个过渡层,称为p-n结。
在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。
PN结加反向电压,少数载流子难以注入,故不发光。
这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。
当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。
LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成。
LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
4、实训过程
1.电路设计
如下图
2.编写程序
#include
#definerunsignedchar;
voiddelay()
{
inti;
for(i=0;i<100;i++);
}
rtable1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
rtable2[]={0xff,0x81,0x81,0x81,0x81,0x81,0x81,0xff};
voidmain()
{
while
(1)
{
intm;
for(m=0;m<8;m++){
P0=table1[m];
P3=table2[m];
delay();
}
}
}
3.运行过程
如下图:
实训三输入键盘的设计
一、实训目的
1.通过实验,熟悉并掌握试验系统原理与使用方法。
2.通过完成输入键盘设计,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
3.掌握单片机的基本使用方法与编程方法。
二、实训内容
1.使用仿真软件实现矩阵键盘检测扫描电路的设计。
2.掌握消除矩阵键盘抖动的方法。
3.使用Keil软件编写按键检测程序并下载编译好的程序到51单片机中。
4.调试并运行程序。
三、实训原理
本次设计主要是通过软硬件结合的方法来加以实现所要求的功能的,利用AT89C51端口单独作为输入/输出的功能同时实现拓展键盘和八段码显示的功能。
其中,键盘键值的扫描是一个主要注意的问题。
在实际使用中,由于通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。
这是一个很重要的时间参数,在很多场合都要用到。
按键稳定闭合时间的长短则是由操作人员的按键动作决定的。
四、实训过程
1.电路设计
如下图:
2.编写程序
#include
#definerunsignedchar;
rcodetable[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,};
rnum;
voiddelay(unsignedintz)//延时程序
{
unsignedintx,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
voidplay(unsignedintm)//数码管显示
{
P0=table[m];
}
voidkeyscan()//键盘扫描
{
P3=0xfe;
if(P3!
=0xfe)
{
delay(5);
if(P2!
=0xfe)
{
switch(P3)
{
case0xee:
num=0;
break;
case0xde:
num=1;
break;
case0xbe:
num=2;
break;
case0x7e:
num=3;
break;
}
}
play(num);
}
P3=0xfd;
if(P3!
=0xfd)
{
delay(5);
if(P2!
=0xfd)
{
switch(P3)
{
case0xed:
num=4;
break;
case0xdd:
num=5;
break;
case0xbd:
num=6;
break;
case0x7d:
num=7;
break;
}
}
play(num);
}
P3=0xfb;
if(P3!
=0xfb)
{
delay(5);
if(P2!
=0xfb)
{
switch(P3)
{
case0xeb:
num=8;
break;
case0xdb:
num=9;
break;
case0xbb:
num=10;
break;
case0x7b:
num=11;
break;
}
}
play(num);
}
P3=0xf7;
if(P3!
=0xf7)
{
delay(5);
if(P2!
=0xf7)
{
switch(P3)
{
case0xe7:
num=12;
break;
case0xd7:
num=13;
break;
case0xb7:
num=14;
break;
case0x77:
num=15;
break;
}
}
play(num);
}
}
voidmain()//主程序
{
while
(1)
{
keyscan();
delay(50);
}
}
3.运行过程
如下图:
5、实训心得
经过这段时间的实训,我主要有以下几点感想:
第一,要有坚持不懈的精神
实训刚开始可能觉得自己什么都不会,有种想要放弃的念头,但是,必须坚持完成任务,只要细心学习,什么都能学会。
第二,要勤劳,任劳任怨
我们要主动学习,而不只是听老师布置任务,在有限的时间里完成尽可能多的任务。
与此同时,我们应该自己主动找一些事情来做,从小事做起,慢慢学习。
第三,要虚心学习,不耻下问
在实训过程中,我们肯定会碰到很多的问题,有很多是我们所不懂的,不懂的东西我们就要虚心向同事请教,当别人教我们知识的时候,我们也应该虚心地接受。
同时,我们也不要怕犯错。
每一个人都有犯错的时候,第一次做错了不要紧,重要的是知错能改。
第四,要确立明确的目标,并端正自己的态度
平时,我们不管做什么事,都要明确自己的目标,就像我们到公司工作以后,要知道自己能否胜任这份工作,关键是看你自己对待工作的态度,态度对了,即使自己以前没学过的知识也可以在工作中逐渐的掌握。
因此,要树立正确的目标,只有这样我们才能把事情做好。