单片机实训报告课案.docx

上传人:b****7 文档编号:10609132 上传时间:2023-02-21 格式:DOCX 页数:43 大小:1.89MB
下载 相关 举报
单片机实训报告课案.docx_第1页
第1页 / 共43页
单片机实训报告课案.docx_第2页
第2页 / 共43页
单片机实训报告课案.docx_第3页
第3页 / 共43页
单片机实训报告课案.docx_第4页
第4页 / 共43页
单片机实训报告课案.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

单片机实训报告课案.docx

《单片机实训报告课案.docx》由会员分享,可在线阅读,更多相关《单片机实训报告课案.docx(43页珍藏版)》请在冰豆网上搜索。

单片机实训报告课案.docx

单片机实训报告课案

单片机实训报告

通过一周的单片机实训,使我们对这门课有了许多新的了解,弥补了在课堂上的学习的不足,相信这对我们以后的学习和工作都有很大的帮助。

我们一定要在最短的时间里对这些不足加以改正!

首先,在这次实训中我被单片机强大的功能所震撼,以前在课堂上完全没有能理解可编程单片机的优越性,这次通过ISIS7Professional仿真软件等辅助软件的共同效果,使这次实训有了鲜明的活力。

到这次实训不仅仅是一个软件的应用,更多的是使我们认识到学习到很多在课堂中无法得到的东西,特别是ISIS7Professional和KeiluVision4软件的功能使我们了解了当今开发系统的新方向。

单片机程序的简单录入是非常必要的。

比如LED灯显示,单只数码管,花样灯,交通灯,霓虹灯的应用和原理。

在这次实训中我们每个人通过一个八位流水灯的制作,是我们深深地体会到了单片机在县市政或重的小小应用,既增强了我们的好奇心,又巩固了我们的理论知识。

更让我们体会到了单片机手动的开始平台的完善和成熟。

只要你有想法,单片机就有可能让他成为现实。

这里我学习完ISIS7Professional和KeiluVision4软件后第一感觉是虽然这软件工作很繁琐但是会有相当不错的效果出现,这对我们以后工作一定会有帮助。

通过这几天的实训,使我的感触很深,真是“条条大路通罗马”,要达到目的,不同的人有不同的方法。

只要你的方法不错!

五花八门都可以,而且是各有特色。

走出的结果都有各自的独到之处。

在实训中有苦有甜,当我们为一个很难攻破的程序找出路时,心情烦躁,感觉自己很不可理喻,当程序一点一点编好后,自己从心底感觉到一点小小的安慰,看着自己的成果。

感觉很欣慰,有一丝丝的甜意,一周的实训使自己的思维逻辑也有了小小的进步。

1.实训目的:

2.实训软件

KeilC51V9.00

Protens-crack-ha-7.8sp2

3.实训过程

周一:

熟悉模拟软件中的零件

周二:

循环亮:

从左到右的流水灯

说明:

接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果

循环亮C语言程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

//延¨®时º¡À

voidDelayMS(uintx)

{

uchari;

while(x--)

{

for(i=0;i<120;i++);

}

}

//主¡Â程¨¬序¨°

voidmain()

{

uchari;

P2=0x01;

while

(1)

{

for(i=0;i<7;i++)

{

P2=_crol_(P2,1);//P2的Ì?

值¦Ì向¨°左Á¨®循-环¡¤移°?

动¡¥

DelayMS(150);

}

for(i=0;i<7;i++)

{

P2=_cror_(P2,1);//P2的Ì?

值¦Ì向¨°右®¨°循-环¡¤移°?

动¡¥

DelayMS(150);

}

}

}

周三:

交通灯:

LED模拟交通灯

说明:

东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。

交通灯C语言程序

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitRED_A=P0^0;//东?

西¡Â向¨°灯Ì?

sbitYELLOW_A=P0^1;

sbitGREEN_A=P0^2;

sbitRED_B=P0^3;//南?

北À¡À向¨°灯Ì?

sbitYELLOW_B=P0^4;

sbitGREEN_B=P0^5;

ucharFlash_Count=0,Operation_Type=1;//闪¦¨¢烁?

次ä?

数ºy,ê?

操¨´作Á¡Â类¤¨¤型¨ª变À?

量¢?

//延¨®时º¡À

voidDelayMS(uintx)

{

uchari;

while(x--)for(i=0;i<120;i++);

}

//交?

通ª¡§灯Ì?

切D换?

voidTraffic_Light()

{

switch(Operation_Type)

{

case1:

//东?

西¡Â向¨°绿¨¬灯Ì?

与®?

南?

北À¡À向¨°红¨¬灯Ì?

亮¢¨¢

RED_A=1;YELLOW_A=1;GREEN_A=0;

RED_B=0;YELLOW_B=1;GREEN_B=1;

DelayMS(2000);

Operation_Type=2;

break;

case2:

//东?

西¡Â向¨°黄?

灯Ì?

闪¦¨¢烁?

,ê?

绿¨¬灯Ì?

关?

闭À?

DelayMS(300);

YELLOW_A=~YELLOW_A;GREEN_A=1;

if(++Flash_Count!

=10)return;//闪¦¨¢烁?

5次ä?

Flash_Count=0;

Operation_Type=3;

break;

case3:

//东?

西¡Â向¨°红¨¬灯Ì?

,ê?

南?

北À¡À向¨°绿¨¬灯Ì?

亮¢¨¢

RED_A=0;YELLOW_A=1;GREEN_A=1;

RED_B=1;YELLOW_B=1;GREEN_B=0;

DelayMS(2000);

Operation_Type=4;

break;

case4:

//南?

北À¡À向¨°黄?

灯Ì?

闪¦¨¢烁?

5次ä?

DelayMS(300);

YELLOW_B=~YELLOW_B;GREEN_B=1;

if(++Flash_Count!

=10)return;

Flash_Count=0;

Operation_Type=1;

}

}

//主¡Â程¨¬序¨°

voidmain()

{

while

(1)Traffic_Light();

}

单只数码管:

单只数码管循环显示0~9

说明:

主程序中的循环语句反复将0~9的段码送至P0口,使数字0~9循环显示

单只数码管C语言程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

//延¨®时º¡À

voidDelayMS(uintx)

{

uchart;

while(x--)for(t=0;t<120;t++);

}

//主¡Â程¨¬序¨°

voidmain()

{

uchari=0;

P0=0x00;

while

(1)

{

P0=~DSY_CODE[i];

i=(i+1)%10;

DelayMS(300);

}

}

霓虹灯:

花样流水灯

说明:

16只LED分两组按预设的多种花样变换显示

霓虹灯C语言程序

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodePattern_P0[]=

{

0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,

0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,

0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,

0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff

};

ucharcodePattern_P2[]=

{

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,

0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,

0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,

0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,

0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff

};

//延¨®时º¡À

voidDelayMS(uintx)

{

uchari;

while(x--)

{

for(i=0;i<120;i++);

}

}

//主¡Â程¨¬序¨°

voidmain()

{

uchari;

while

(1)

{//从䨮数ºy组Á¨¦中D读¨¢取¨?

数ºy据Y送¨ª至¨¢P0和¨ªP2口¨²显?

示º?

for(i=0;i<136;i++)

{

P0=Pattern_P0[i];

P2=Pattern_P2[i];

DelayMS(100);

}

}

}

八只数码管单独滚动:

8只数码管滚动显示单个数字

说明:

数码管从左到右依次滚动显示0~7,程序通过每次仅循环选通一只数码管

八只数码管单独滚动

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//延时

voidDelayMS(uintx)

{

uchart;

while(x--)for(t=0;t<120;t++);

}

//主程序

voidmain()

{

uchari,wei=0x80;

while

(1)

{

for(i=0;i<8;i++)

{

P2=0xff;//关闭显示

wei=_crol_(wei,1);

P0=DSY_CODE[i];//发送数字段码

P2=wei;//发送位码

DelayMS(300);

}

}

}

周四:

单只数码管A-F亮:

单只数码管循环显示A~F

说明:

主程序中的循环语句反复将A~F的段码送至P0口,使字母A~F循环显示

单只数码管A-F亮

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodeDSY_CODE[]={0x88,0x83,0xc6,0xa1,0x86,0x8e};

//延¨®时º¡À

voidDelayMS(uintx)

{

uchart;

while(x--)for(t=0;t<150;t++);

}

//主¡Â程¨¬序¨°

voidmain()

{

uchari=0;

P0=0x00;

while

(1)

{

P0=~DSY_CODE[i];

i=(i+1)%6;

DelayMS(300);

}

}

点阵:

点阵屏循环显示A~F

说明:

主程序中的循环语句反复将A~F的段码送至P0口,使字母A~F循环显示

点阵C语言程序

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitK1=P3^7;

uchari,Second_Counts,Key_Flag_Idx;

bitKey_State;

ucharDSY_CODE[]=

{

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71

};

voidDelayMS(uintms)

{

uchart;

while(ms--)

{

for(t=0;t<120;t++);

}

}

voidKey_Event_Handle()

{

if(Key_State==0)

{

Key_Flag_Idx=(Key_Flag_Idx+1)%3;

switch(Key_Flag_Idx)

{

case1:

EA=1;ET0=1;TR0=1;break;

case2:

EA=0;ET0=0;TR0=0;break;

case0:

P0=0x3f;P2=0x3f;i=0;Second_Counts=0;

}

}

}

voidmain()

{

P0=0x3f;

P2=0x3f;

i=0;

Second_Counts=0;

Key_State=1;

TMOD=0x01;

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

while

(1)

{

if(Key_State!

=K1)

{

DelayMS(16);

Key_State=K1;

Key_Event_Handle();

}

}

}

voidDSY_Refresh()interrupt1

{

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

if(++i==2)

{

i=0;

++Second_Counts;

P0=DSY_CODE[Second_Counts/16];

P2=DSY_CODE[Second_Counts%16];

if(Second_Counts==256)Second_Counts=0;

}

}

滚动点阵:

两个点阵屏循环显示字母A~F

说明:

主程序中的循环语句反复将A~F的段码送至P0口,使字母A~F循环显示

滚动点阵C语言程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodeca[]=//存ä?

放¤?

字Á?

符¤?

A

{

0x00,0x1f,0x28,0x48,0x28,0x1f,0x00,0x00,//一°?

下?

皆?

为aA字Á?

符¤?

滚?

动¡¥的Ì?

形?

态¬?

0x1f,0x28,0x48,0x28,0x1f,0x00,0x00,0x00,//字Á?

符¤?

每?

次ä?

向¨°左Á¨®移°?

动¡¥一°?

格?

0x28,0x48,0x28,0x1f,0x00,0x00,0x00,0x1f,

0x48,0x28,0x1f,0x00,0x00,0x00,0x1f,0x28,

0x28,0x1f,0x00,0x00,0x00,0x1f,0x28,0x48,

0x1f,0x00,0x00,0x00,0x1f,0x28,0x48,0x28,

0x00,0x00,0x00,0x1f,0x28,0x48,0x28,0x1f,

0x00,0x00,0x1f,0x28,0x48,0x28,0x1f,0x00,//因°¨°为a是º?

8*8的Ì?

点Ì?

阵¨®所¨´以°?

只?

用®?

又®?

该?

字Á?

符¤?

的Ì?

八ã?

种?

形?

态¬?

一°?

共264个?

数ºy据Y

};

ucharcodecb[]=//存ä?

放¤?

字Á?

符¤?

B

{

0x00,0x00,0x7f,0x49,0x49,0x36,0x00,0x00,

0x00,0x7f,0x49,0x49,0x36,0x00,0x00,0x00,

0x7f,0x49,0x49,0x36,0x00,0x00,0x00,0x00,

0x49,0x49,0x36,0x00,0x00,0x00,0x00,0x7f,

0x49,0x36,0x00,0x00,0x00,0x00,0x7f,0x49,

0x36,0x00,0x00,0x00,0x00,0x7f,0x49,0x49,

0x00,0x00,0x00,0x00,0x7f,0x49,0x49,0x36,

0x00,0x00,0x00,0x7f,0x49,0x49,0x36,0x00,

};

ucharcodecc[]=//存ä?

放¤?

字Á?

符¤?

C

{

0x00,0x3e,0x41,0x41,0x41,0x41,0x22,0x00,

0x3e,0x41,0x41,0x41,0x41,0x22,0x00,0x00,

0x41,0x41,0x41,0x41,0x22,0x00,0x00,0x3e,

0x41,0x41,0x41,0x22,0x00,0x00,0x3e,0x41,

0x41,0x41,0x22,0x00,0x00,0x3e,0x41,0x41,

0x41,0x22,0x00,0x00,0x3e,0x41,0x41,0x41,

0x22,0x00,0x00,0x3e,0x41,0x41,0x41,0x41,

0x00,0x00,0x3e,0x41,0x41,0x41,0x41,0x22,

};

ucharcodecd[]=//存ä?

放¤?

字Á?

符¤?

D

{

0x00,0x00,0x7e,0x42,0x42,0x3c,0x00,0x00,

0x00,0x7e,0x42,0x42,0x3c,0x00,0x00,0x00,

0x7e,0x42,0x42,0x3c,0x00,0x00,0x00,0x00,

0x42,0x42,0x3c,0x00,0x00,0x00,0x00,0x7e,

0x42,0x3c,0x00,0x00,0x00,0x00,0x7e,0x42,

0x3c,0x00,0x00,0x00,0x00,0x7e,0x42,0x42,

0x00,0x00,0x00,0x00,0x7e,0x42,0x42,0x3c,

0x00,0x00,0x00,0x7e,0x42,0x42,0x3c,0x00,

};

ucharcodece[]=//存ä?

放¤?

字Á?

符¤?

E

{

0x00,0x00,0x7f,0x49,0x49,0x49,0x41,0x00,

0x00,0x7f,0x49,0x49,0x49,0x41,0x00,0x00,

0x7f,0x49,0x49,0x49,0x41,0x00,0x00,0x00,

0x49,0x49,0x49,0x41,0x00,0x00,0x00,0x7f,

0x49,0x49,0x41,0x00,0x00,0x00,0x7f,0x49,

0x49,0x41,0x00,0x00,0x00,0x7f,0x49,0x49,

0x41,0x00,0x00,0x00,0x7f,0x49,0x49,0x49,

0x00,0x00,0x00,0x7f,0x49,0x49,0x49,0x41,

};

ucharcodecf[]=//存ä?

放¤?

字Á?

符¤?

F

{

0x00,0x00,0x7f,0x48,0x48,0x48,0x40,0x00,

0x00,0x7f,0x48,0x48,0x48,0x40,0x00,0x00,

0x7f,0x48,0x48,0x48,0x40,0x00,0x00,0x00,

0x48,0x48,0x48,0x40,0x00,0x00,0x00,0x7f,

0x48,0x48,0x40,0x00,0x00,0x00,0x7f,0x48,

0x48,0x40,0x00,0x00,0x00,0x7f,0x48,0x48,

0x40,0x00,0x00,0x00,0x7f,0x48,0x48,0x48,

0x00,0x00,0x00,0x7f,0x48,0x48,0x48,0x40,

};

uchari=0,t=0,Num_Index=0;

intc=0;

voidmain()

{

P3=0x80;

Num_In

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1