当前位置:文档之家› 单片机实训报告

单片机实训报告

单片机原理及应用
实训报告
班级:
学号:
姓名:
指导教师:
实训总成绩:
一、节日彩灯设计
题目:8位逻辑电平模块上的LED小灯从左向右呈现“鞭甩”的实验现象,状态间隔为0.25秒;按键1开始,按键2结束。

原理图
程序代码:
#include<reg51.h>
#define uchar unsigned char
uchar tab[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
sbit S1=P1^4;
sbit S2=P1^7;
unsigned char i,j;
delay(unsigned int x)
{
for(j=0;j<x;j++)
for(i=0;i<10;i++);
}
void main()
{
uchar i,b,d;
while(1)
{if (S1==0)
{delay(50);
if(S1==0);
S1=b;
b=0;
{for(i=0;i<8;i++)
{
P2=tab[i];
delay(50);
{if (S2==0)
{delay(50);
if(S2==0);
S1=d;
d=1;
P2=0xff;
}}
}
}
}
}
}
设计思想总结
用C语言程序控制单片机最小系统,使IO口输出高低电平控制彩灯电路的闪烁。

节日彩灯控制器是利用将单片机的CPU、RAM、ROM、定时器/计数器及输入/输出、I/O接口电路集成在一块集成电路芯片上的特点。

通过其与发光二极
管及驱动电路的连接,从而构成一个完整的硬件电路。

然后通过对单片机的ROM 进行编程,实现对彩灯闪烁的控制。

二、定时器实现流水灯
题目:利用定时器/计数器T0产生2秒钟的定时,每当2秒定时到来时,更换指示灯点亮,依次循环点亮。

原理图
程序代码
#include <reg51.h>
#include<intrins.h>
int lamp = 0xfe ;
int cnt = 0;
main()
{P2 = 0xfe;
TMOD = 0x01;
TL0 = (65536 - 50000) % 256;
TH0 = (65536 - 50000) / 256;
TR0 = 1 ;
ET0 = 1;
EA = 1;
while(1)
P2=lamp;
}
void _time0(void ) interrupt 1
{
TL0 = (65536 - 50000) % 256;
TH0 = (65536 - 50000) / 256;
cnt++;
if(cnt == 40)
{cnt=0;
lamp=_crol_(lamp,1);
P2 = lamp;
}
}
设计思想总结
当AT89C51的P2口有低电平输出时,相应的发光二极管就会点亮。

应用这一原理我们可以容易的点亮一个LED,通过定时器来保证每个LED灯点亮时间大约为2秒。

三、LED数显屏设计
题目:P0端口控制动态数码管的段码显示,P2端口控制动态数码管的位码显示,P1.7接一个开关,当开关接高电平时,显示“12345”字样;当开关接低电平时,显示“54321”字样。

原理图
程序代码
#include<reg51.h>
unsigned char seg[]={0xf9,0xa4,0xb0,0x99,0x92}; unsigned char i,j;
sbit P1_7=P1^7 ;
delay( unsigned int x)
{
for (j=0;j<x;j++)
for(i=0;i<10;i++);
}
main()
{
unsigned char n,temp;
temp=0x01;
while(1)
{
for(n=0;n<5;n++)
{
P0=seg[n];
P2=temp;
delay(100);
P2=0x00;
temp=temp<<1;
}
temp=0x01;
while(P1_7==0)
{
for(n=5;n>0;n--)
{
P0=seg[n-1];
P2=temp;
delay(100);
P2=0x00;
temp=temp<<1;
}
temp=0x01;
}
}
}
设计思想总结
利用单片机进行LED汉字显示平设计与制作是利用单片机控制技术编写程序,通过程序控制LED的显示,显示所要显示的内容。

技术线路为通过程序控制AT89C51芯片输出高低电平、高低电平控制分别控制LED的亮和灭最终达到所要显示的内容。

在显示电路中主要靠按键来实现各种显示要求的选择与切换。

实训总结
通过本次单片机实训使得我更深层次的学习单片机原理与应用技术这门专业课程,同时对KEIL软件进行复习。

这次实训是我看到了我最薄弱的一点那就是编程,对于编程有很大的困难。

对以往学习过的编程知识没有好好掌握,特别是编程这方便的知识很薄弱。

学习过的知识在实际应用中仿佛是冰山一角,完全不够用,需要通过查阅很多资料才能解决到碰到的相关问题。

而且实训中出现的问题都是实际应用出比较典型的问题。

这次实训还让我深刻的体会了结构化程序设计的优势,让我懂得当我们要进行一个复杂的程序设计时应该先将其分解为多个不同的功能模块再分别编程实现,这样做不仅降低了编程的难度,也容易让编程者思路更加清晰,避免出现不必要的错误。

在做仿真时,仿真图正确也不一定就是说明一定正确。

相关主题