PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx

上传人:b****2 文档编号:1136836 上传时间:2023-04-30 格式:DOCX 页数:13 大小:327.49KB
下载 相关 举报
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第1页
第1页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第2页
第2页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第3页
第3页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第4页
第4页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第5页
第5页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第6页
第6页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第7页
第7页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第8页
第8页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第9页
第9页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第10页
第10页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第11页
第11页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第12页
第12页 / 共13页
PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx

《PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。

PIC16F877A单片机来制Nokia5110 LCD显示器Word文档下载推荐.docx

实验采用的单片机封装方式是如下图:

3设计方案:

本次实训应用PIC16F877A单片机来控制Nokia5110LCD显示器显示自己名字。

代码如下:

#include<

pic.h>

__CONFIG(XT&

WDTEN);

#defineuintunsigned 

int

#defineucharunsigned 

char

#definesce 

RD2//片选

#definedc 

RD1//1写数据,0写指令

#definesdin 

RC5//数据

#definesclk 

RC3//时钟

//-----------------------------------------------

//6x8font

//1pixelspaceatleftandbottom

//index=ASCII-32

constunsignedcharfont6x8[][6]=

{

{0x00,0x00,0x00,0x00,0x00,0x00},//sp

{0x00,0x00,0x00,0x2f,0x00,0x00},//!

{0x00,0x00,0x07,0x00,0x07,0x00},//"

{0x00,0x14,0x7f,0x14,0x7f,0x14},//#

{0x00,0x24,0x2a,0x7f,0x2a,0x12},//$

{0x00,0x62,0x64,0x08,0x13,0x23},//%

{0x00,0x36,0x49,0x55,0x22,0x50},//&

{0x00,0x00,0x05,0x03,0x00,0x00},//'

{0x00,0x00,0x1c,0x22,0x41,0x00},//(

{0x00,0x00,0x41,0x22,0x1c,0x00},//)

{0x00,0x14,0x08,0x3E,0x08,0x14},//*-10

{0x00,0x08,0x08,0x3E,0x08,0x08},//+

{0x00,0x00,0x00,0xA0,0x60,0x00},//,

{0x00,0x08,0x08,0x08,0x08,0x08},//-

{0x00,0x00,0x60,0x60,0x00,0x00},//.

{0x00,0x20,0x10,0x08,0x04,0x02},///

{0x00,0x3E,0x51,0x49,0x45,0x3E},//0

{0x00,0x00,0x42,0x7F,0x40,0x00},//1

{0x00,0x42,0x61,0x51,0x49,0x46},//2

{0x00,0x21,0x41,0x45,0x4B,0x31},//3

{0x00,0x18,0x14,0x12,0x7F,0x10},//4-20

{0x00,0x27,0x45,0x45,0x45,0x39},//5

{0x00,0x3C,0x4A,0x49,0x49,0x30},//6

{0x00,0x01,0x71,0x09,0x05,0x03},//7

{0x00,0x36,0x49,0x49,0x49,0x36},//8

{0x00,0x06,0x49,0x49,0x29,0x1E},//9

{0x00,0x00,0x36,0x36,0x00,0x00},//:

{0x00,0x00,0x56,0x36,0x00,0x00},//;

{0x00,0x08,0x14,0x22,0x41,0x00},//<

{0x00,0x14,0x14,0x14,0x14,0x14},//=

{0x00,0x00,0x41,0x22,0x14,0x08},//>

-30

{0x00,0x02,0x01,0x51,0x09,0x06},//?

{0x00,0x32,0x49,0x59,0x51,0x3E},//@

{0x00,0x7C,0x12,0x11,0x12,0x7C},//A

{0x00,0x7F,0x49,0x49,0x49,0x36},//B

{0x00,0x3E,0x41,0x41,0x41,0x22},//C

{0x00,0x7F,0x41,0x41,0x22,0x1C},//D

{0x00,0x7F,0x49,0x49,0x49,0x41},//E

{0x00,0x7F,0x09,0x09,0x09,0x01},//F

{0x00,0x3E,0x41,0x49,0x49,0x7A},//G

{0x00,0x7F,0x08,0x08,0x08,0x7F},//H-40

{0x00,0x00,0x41,0x7F,0x41,0x00},//I

{0x00,0x20,0x40,0x41,0x3F,0x01},//J

{0x00,0x7F,0x08,0x14,0x22,0x41},//K

{0x00,0x7F,0x40,0x40,0x40,0x40},//L

{0x00,0x7F,0x02,0x0C,0x02,0x7F},//M

{0x00,0x7F,0x04,0x08,0x10,0x7F},//N

{0x00,0x3E,0x41,0x41,0x41,0x3E},//O

{0x00,0x7F,0x09,0x09,0x09,0x06},//P

{0x00,0x3E,0x41,0x51,0x21,0x5E},//Q

{0x00,0x7F,0x09,0x19,0x29,0x46},//R-50

{0x00,0x46,0x49,0x49,0x49,0x31},//S

{0x00,0x01,0x01,0x7F,0x01,0x01},//T

{0x00,0x3F,0x40,0x40,0x40,0x3F},//U

{0x00,0x1F,0x20,0x40,0x20,0x1F},//V

{0x00,0x3F,0x40,0x38,0x40,0x3F},//W

{0x00,0x63,0x14,0x08,0x14,0x63},//X

{0x00,0x07,0x08,0x70,0x08,0x07},//Y

{0x00,0x61,0x51,0x49,0x45,0x43},//Z

{0x00,0x00,0x7F,0x41,0x41,0x00},//[

{0x00,0x55,0x2A,0x55,0x2A,0x55},//55-60

{0x00,0x00,0x41,0x41,0x7F,0x00},//]

{0x00,0x04,0x02,0x01,0x02,0x04},//^

{0x00,0x40,0x40,0x40,0x40,0x40},//_

{0x00,0x00,0x01,0x02,0x04,0x00},//'

{0x00,0x20,0x54,0x54,0x54,0x78},//a

{0x00,0x7F,0x48,0x44,0x44,0x38},//b

{0x00,0x38,0x44,0x44,0x44,0x20},//c

{0x00,0x38,0x44,0x44,0x48,0x7F},//d

{0x00,0x38,0x54,0x54,0x54,0x18},//e

{0x00,0x08,0x7E,0x09,0x01,0x02},//f-70

{0x00,0x18,0xA4,0xA4,0xA4,0x7C},//g

{0x00,0x7F,0x08,0x04,0x04,0x78},//h

{0x00,0x00,0x44,0x7D,0x40,0x00},//i

{0x00,0x40,0x80,0x84,0x7D,0x00},//j

{0x00,0x7F,0x10,0x28,0x44,0x00},//k

{0x00,0x00,0x41,0x7F,0x40,0x00},//l

{0x00,0x7C,0x04,0x18,0x04,0x78},//m

{0x00,0x7C,0x08,0x04,0x04,0x78},//n

{0x00,0x38,0x44,0x44,0x44,0x38},//o

{0x00,0xFC,0x24,0x24,0x24,0x18},//p-80

{0x00,0x18,0x24,0x24,0x18,0xFC},//q

{0x00,0x7C,0x08,0x04,0x04,0x08},//r

{0x00,0x48,0x54,0x54,0x54,0x20},//s

{0x00,0x04,0x3F,0x44,0x40,0x20},//t

{0x00,0x3C,0x40,0x40,0x20,0x7C},//u

{0x00,0x1C,0x20,0x40,0x20,0x1C},//v

{0x00,0x3C,0x40,0x30,0x40,0x3C},//w

{0x00,0x44,0x28,0x10,0x28,0x44},//x

{0x00,0x1C,0xA0,0xA0,0xA0,0x7C},//y

{0x00,0x44,0x64,0x54,0x4C,0x44},//z-90

{0x14,0x14,0x14,0x14,0x14,0x14}//horizlines

};

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

//******functiondeclaration********************

voidLCD_init(void);

voidinit(void);

voidLCD_write_byte(unsignedchardt,unsignedcharcommand);

voiddelay(uintx);

voidLCD_set_XY(unsignedcharX,unsignedcharY);

voidLCD_clear(void);

voidLCD_write_char(unsignedcharx,unsignedchary,unsignedcharc);

voidmain(void)

 

init();

LCD_init();

//初始化LCD模块 

LCD_clear();

//清屏幕

LCD_write_char(0,0,41);

//I

LCD_write_char(1,0,78);

//i

LCD_write_char(2,0,65);

//u

LCD_write_char(3,0,12);

//,

LCD_write_char(4,0,41);

//J

LCD_write_char(8,0,54)//i

LCD_write_char(6,0,44);

//a

LCD_write_char(7,0,47);

//n

LCD_write_char(9,0,37);

//Z

LCD_write_char(10,0,0);

//h

LCD_write_char(11,0,57);

//o

LCD_write_char(12,0,47);

LCD_write_char(13,0,53);

//g

while

(1)

asm("

CLRWDT"

);

}

//***********initialPICMCU************************

voidinit(void)

ADCON1=0X06;

OPTION=0x81;

TRISA=0B00000000;

TRISB=0B00000000;

TRISC=0B00000000;

TRISD=0B00000000;

TRISE=0B00000000;

PORTA=0X00;

PORTB=0x00;

PORTC=0x01;

PORTD=0x01;

PORTE=0x07;

RBIE=0;

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

//********************writedataorcommand***********************************************************

voidLCD_write_byte(unsignedchardt,unsignedcharcommand)

unsignedchari;

sce=0;

//片选

dc=command;

//1写数据,0写指令。

for(i=0;

i<

8;

i++)

if(dt&

0x80)

sdin=1;

else

sdin=0;

dt=dt<

<

1;

sclk=0;

sclk=1;

//在时钟正边沿采样

//for循环传送八个bit。

dc=1;

sce=1;

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

//****************initiallcd**********************************************

voidLCD_init(void)

//sce为高时,串行接口被初始化。

sce为高时忽略时钟信号。

LCD_write_byte(0x21,0);

//0b00100001LCD功能设置:

芯片活动,水平寻址,使用扩展指令

LCD_write_byte(0xd0,0);

//设置VOP值

LCD_write_byte(0x20,0);

//LCD功能设置:

芯片活动,水平寻址,使用基本指令

LCD_write_byte(0x0C,0);

//设定显示配置:

普通模式

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

//*************defineXYcoordinate****************************************************

voidLCD_set_XY(unsignedcharX,unsignedcharY)

LCD_write_byte(0x40|Y,0);

//column0b01000000

LCD_write_byte(0x80|X,0);

//row 

0b10000000

//***********clearlcd***************************************************** 

voidLCD_clear(void)

unsignedchart;

unsignedchark;

LCD_set_XY(0,0);

for(t=0;

t<

6;

t++)

for(k=0;

k<

84;

k++)

LCD_write_byte(0x00,1);

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

//*******displaychar*********************************************************

//Lcdrow=48,48/8=6,y表示第y个6block,一共6个block,相当于6行,y相当于第y行。

//字符的宽度位6.

voidLCD_write_char(unsignedcharx,unsignedchary,unsignedcharc)

unsignedcharline;

LCD_set_XY(x*6,y);

for(line=0;

line<

line++)

LCD_write_byte(font6x8[c][line],1);

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

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

//************delayfunction,delayxms****************************************************

voiddelay(uintx)

uinta,b;

for(a=x;

a>

0;

a--)

for(b=110;

b>

b--);

外观:

最小系统:

实验电路图:

PIC16F877A实验电路图

4实验结果

通过Mplab软件编程之后,编译通过,之后使用ICD2下载程序到单片机上,经验证,通过接通电源后,成功控制Nokia5110LCD显示器显示自己的名字LiuJianZhong。

5心得体会

通过这次试验,我收获良多,单片机试验要求的是一种思维的创新,而不是简单的重复老师所说的试验步骤。

单片机随着城市的发展,已经得到了进一步的应用,在今后将会有更大的发展。

在这次试验当中,一开始我不断的调试,都无法显示出想要的效果,我开始以为是程序的问题,所以在程序上花了比较大的功夫,不过发现不管我怎样修改程序,都无法显示或者显示乱码。

于是,我请教了老师,老师告诉我这是电路连接的问题,后来经过我的仔细检查,发现真的是电路连接错误了。

于是在改进之后,达到了我预期的效果。

当然,在试验中我还遇到了许多问题,不过不管做什么事,计划是很重要的,做事没有顺序,做事情就会比较乱,很难成功。

而且做事要多动脑,选出最好的方法。

最后还要注重细节,细节决定成败,这句话在这次课题中不仅一次得到了验证。

今后在实验课上,我会更认真去动手操作,把理论与实际相结合!

参考文献

[1]李荣正王诚杰戴国银编著.PIC单片机原理及应用(第4版).北京:

北京航空航天大学出版社.2010

[2]童诗白华成英主编.模拟电子技术基础(第四版).北京:

高等教育出版社,2009

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

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2