单片机实习报告优选材料Word下载.docx

上传人:b****3 文档编号:18183017 上传时间:2022-12-14 格式:DOCX 页数:19 大小:153.96KB
下载 相关 举报
单片机实习报告优选材料Word下载.docx_第1页
第1页 / 共19页
单片机实习报告优选材料Word下载.docx_第2页
第2页 / 共19页
单片机实习报告优选材料Word下载.docx_第3页
第3页 / 共19页
单片机实习报告优选材料Word下载.docx_第4页
第4页 / 共19页
单片机实习报告优选材料Word下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机实习报告优选材料Word下载.docx

《单片机实习报告优选材料Word下载.docx》由会员分享,可在线阅读,更多相关《单片机实习报告优选材料Word下载.docx(19页珍藏版)》请在冰豆网上搜索。

单片机实习报告优选材料Word下载.docx

很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。

51单片机是基础入门的一个单片机,还是应用最广泛的一种。

2.2其他器件介绍

该电路设计思路为先通过变压器来将220V电压将为22V低压,然后再通过桥式整流电路将交流整流为直流,最后通过LM317变压输出所需的5V电压。

2.3显示系统设计

12864LCD是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×

64全点阵液晶显示器组成。

可完成图形显示,也可以显示8×

4个(16×

16点阵)汉字或者显示16×

4个(8×

16点阵)ASCII码。

分为两种,带字库的和不带字库的。

不带字库的LCD需要自己提供字库字模,此时可以根据个人喜好设置各种字体显示风格,设计上较为灵活。

带字库的LCD提供字库字模,但是只能显示GB2312的宋体。

各有优缺点,根据不同应用场景灵活选择。

其液晶模块原理图如下所示。

2.4键盘系统介绍

矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。

在行线和列线的每一个交叉点上,设置一个按键。

这样键盘中按键的个数是4×

4个。

这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。

图1为矩阵键盘电路图,行线接P3.4-P3.7,列线接P3.0-P3.3。

三、程序设计

3.1主程序流程图

3.2各部分流程图

矩阵键盘

12864驱动程序

四、实习心得

通过这次实训,使我们能够学以致用,在实践中进一步掌握并巩固我们的单片机理论知识。

虽然在实训中遇到了不少难题与困惑,暴露出了不少问题和缺乏实践的弱点,但是在老师与同学们的帮助与指导下,我们最终解决与克服了一个个的困难与困惑,顺利的完成了老师交给的实训任务。

通过几天下来的实训,感觉就是自己的知识实在是太浅了。

在课本上学到的知识感觉自己都懂了,但在实际应用中还是无从下手。

所以我们不应满足于课本上的知识,只有通过不断的实践,才能够真正掌握理论知识。

虽然只有几天的时光,但还是学了很多的东西,比之于平常的上课更觉得学到更多。

所以,这对于我们还是一门很必要的课程。

当然,要真正学有所用,我们还要在实践中去不断提高,不断完善。

其实刚开始还是不太喜欢实训,也有点害怕的。

但过后才觉得只有几天的实训时间还是有点少,毕竟是刚开始对单片机进行实际应用,还是很陌生的。

由于时间的仓促,自己的作品也远还没达到完善的地步。

我相信其中的酸甜苦辣最终都会化为甜美的甘泉。

想借此机会感谢一直以来给我帮助的所有老师和同学。

尤其我的指导老师们,他们一直都以一位长辈的风范来给我不厌其烦的指导。

在此,特向他们道声谢谢。

五、参考资料

[1]何立民.单片机应用系统设计.北京:

北京航空航天大学出版社,2004.[2]张洪润等.单片机应用设计200例.北京:

北京航空航天大学出版社,2006.

[2]刘德营,张志霞,龚丽农等.单片机原理及接口技术.北京:

中国水利水电出版社,2006

[3]陈伟人.单片微型计算机原理及其应用.北京.清华大学出版社,19893.何立民.单片机应用系统设计.北京:

航空航天大学出版社,19954.王建校等.51系列单片机及C51程序设计.北京:

科学出版社,2002

[4].余锡存,曹国华.单片机微机原理及接口技术[M].西安:

西安电子科技出版社,2000:

[5]付家才.单片机控制工程实践技术.北京:

化学工业出版社,2001

[6]雷晓平等.单片计算机及其应用.成都:

电子科技大学出版社,2005.

六、附录(程序清单)

#include<

reg51.h>

intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

/*************12864LCD引脚定义*************/

#defineLCD_dataP0//数据口

sbitLCD_RS=P3^0;

//寄存器选择输入

sbitLCD_RW=P3^2;

//液晶读/写控制

sbitLCD_EN=P3^1;

//液晶使能控制

#definedelayNOP();

{_nop_();

_nop_();

};

/*********************************************************/

ucharcodeDIS1[]={"

存款利率"

ucharcodeDIS2[]={"

一年:

2.79%"

ucharcodeDIS3[]={"

二年:

3.37%"

ucharcodeDIS4[]={"

五年:

5.56%"

ucharcodeDIS5[]={"

请一号到窗台"

ucharcodeDIS6[]={"

办理业务"

ucharcodeDIS7[]={"

请二号到窗台"

ucharcodeDIS8[]={"

请四号到窗台"

ucharcodeDIS10[]={"

"

ucharcodeDIS9[]={"

欢迎光临"

ucharindex=0;

ucharkey,s=0;

uintv;

voidmatrixkeyscan();

//矩阵

voiddelay(intms)

{

while(ms--)

{

uchari;

for(i=0;

i<

150;

i++)

_nop_();

_nop_();

}

}

voidmatrixkeyscan()

uchartemp;

P2=0xfe;

temp=P2;

temp=temp&

0xf0;

if(temp!

=0xf0)

delay(10);

temp=P2;

temp=temp&

if(temp!

{

switch(temp)

case0xee:

key=1,index=0;

break;

case0xde:

key=2,index=0;

case0xbe:

key=3,index=0;

case0x7e:

key=4,index=0;

while(temp!

{

temp=P2;

temp=temp&

}

P2=0xfd;

temp=P2;

temp=temp&

if(temp!

{

delay(10);

temp=P2;

switch(temp)

{

case0xed:

key=5,index=0;

break;

case0xdd:

key=2,

index=0,

s++;

case0xbd:

key=7;

index=0;

case0x7d:

key=8;

while(temp!

}

}

}

voiddelay1(intms)

while(ms--)

uchary;

for(y=0;

y<

100;

y++);

}

bitlcd_busy()

{

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

delayNOP();

result=(bit)(P0&

0x80);

LCD_EN=0;

return(result);

voidlcd_wcmd(ucharcmd)

{

while(lcd_busy());

LCD_RW=0;

P0=cmd;

voidlcd_wdat(uchardat)

LCD_RS=1;

P0=dat;

voidlcd_init()

lcd_wcmd(0x34);

//扩充指令操作

delay(5);

lcd_wcmd(0x30);

//基本指令操作

lcd_wcmd(0x0C);

//显示开,关光标

lcd_wcmd(0x01);

//清除LCD的显示内容

voidlcd_pos(ucharX,ucharY)

ucharpos;

if(X==1)

{X=0x80;

elseif(X==2)

{X=0x90;

elseif(X==3)

{X=0x88;

elseif(X==4)

{X=0x98;

pos=X+Y;

lcd_wcmd(pos);

//显示地址

voidphotodisplay(uchar*bmp)

uchari,j;

//写数据时,关闭图形显示

32;

i++)

lcd_wcmd(0x80+i);

//先写入水平坐标值

lcd_wcmd(0x80);

//写入垂直坐标值

for(j=0;

j<

16;

j++)//再写入两个8位元的数据

lcd_wdat(*bmp++);

delay1

(1);

lcd_wcmd(0x88);

j++)

lcd_wcmd(0x36);

//写完数据,开图形显示

voidclr_screen()

//清屏

voidbytecode()

uchars;

clr_screen();

//设置显示位置为第一行

for(s=0;

s<

s++)

lcd_wdat(0x30+s);

lcd_wcmd(0x90);

//设置显示位置为第二行

lcd_wdat(0x40+s);

//设置显示位置为第三行

lcd_wdat(0x50+s);

lcd_wcmd(0x98);

//设置显示位置为第四行

lcd_wdat(0x60+s);

voidmain()

uchari,key1;

index=40;

v=1000;

s=0;

delay(10);

//上电,等待稳定

lcd_init();

//初始化LCD

while

(1)

matrixkeyscan();

if(s>

=2)

if(key==1)

lcd_pos(1,0);

//设置显示位置为第一行

lcd_wdat(DIS1[i]);

lcd_pos(2,0);

//设置显示位置为第二行

lcd_wdat(DIS2[i]);

lcd_pos(3,0);

//设置显示位置为第三行

lcd_wdat(DIS3[i]);

lcd_pos(4,0);

//设置显示位置为第四行

lcd_wdat(DIS4[i]);

lcdflag();

elseif(key==4)

v-=220;

if(v<

100)

v=220;

key=key1;

elseif(key==5)

v+=220;

elseif(key==2){

key1=key;

lcd_pos(1,0);

lcd_wdat(DIS10[index+i]);

if(s==0)

for(i=16;

i>

0;

i--)

lcd_wdat(DIS5[44-index-i]);

lcd_wdat(DIS6[44-index-i]);

else

lcd_wdat(DIS5[index+i]);

lcd_wdat(DIS6[index+i]);

index+=2;

if(index>

=28)

index=0;

delay(v);

elseif(key==3){

lcd_wdat(DIS7[index+i]);

delay(500);

else{

lcd_wdat(DIS10[index+i]);

lcd_wdat(DIS9[index+i]);

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

当前位置:首页 > 高等教育 > 艺术

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

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