滚动条目(1602 液晶显示,纵向、横向)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

滚动条目(1602 液晶显示,纵向、横向)

一、设计目的

1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与

调试能力。

2.学会电路设计方法和性能指标测试方法。

3.培养实践技能,提高分析和解决实际问题的能力。

二、设计任务及要求

1.1602 液晶上显示两行字符。

2.单片机控制两行字符纵向滚动。

三、设计步骤

1.硬件设计

(1)确定目标:设计整个系统是由那些模块组成,各个模块之间的信号传输,并画出电路图。

(2)系统分析:根据系统功能,选择各模块所用电路形式。

(3)总电路图:连接各模块电路。

(4)PCB 设计:为提高学生的动手能力,学生自行设计印刷电路板,并焊接。

2.软件设计

(1)设计硬件底层驱动并封装出接口。

(2)分析系统功能,设计软件流程图并编写功能代码。

(3)将各模块电路连起来,运行程序调试,并评估该系统的各项指标。

四、总体设计思路

1.硬件设计思路及系统框图。

2.软件设计思路及程序流程框图。

五、实验设备及元器件

1.万用表

2.示波器

3.稳压电源

六、设计报告要求

1.设计目的。

2.设计指标。

3.总体设计框图,并说明每个模块所实现的功能。

4.功能模块,可有多个方案,并进行方案论证与比较,要有详细的原理说明。

5.总电路图设计,有原理说明。

6.软件设计框图及思路。

7.实现仪器,工具。

8.分析测量结果,并讨论提出改进意见。

9.总结:遇到的问题和解决办法、体会、意见、建议等。

七、注意事项

1.焊接时要对各个功能模块电路进行单个测试,需要时可设计一些临时电路用于调试。2.测试电路时,必须要保证焊接正确,才能打开电源,以防元器件烧坏。

3. 按照原理图焊接时必须要保证可靠接地。

合肥工业大学单片机课程设计

源代码

Lcd1602.c

/*************** writer:shopping.w ******************/ #include

#include

#define uchar unsigned char

#define uint unsigned int

sbit RS = P2^0;

sbit RW = P2^1;

sbit EN = P2^2;

void Delayms(uint ms)

{

uchar i;

while(ms--)

{

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

}

}

uchar Busy_Check()

{

uchar LCD_Status;

RS = 0;

RW = 1;

EN = 1;

Delayms(1);

LCD_Status = P0;

EN = 0;

return LCD_Status;

}

void Write_LCD_Command(uchar cmd)

{

while((Busy_Check()&0x80)==0x80);

RS = 0;

RW = 0;

EN = 0;

P0 = cmd;

EN = 1;

Delayms(1);

EN = 0;

}

void Write_LCD_Data(uchar dat)

{

while((Busy_Check()&0x80)==0x80);

RS = 1;

RW = 0;

EN = 0;

P0 = dat;

EN = 1;

Delayms(1);

EN = 0;

}

void Initialize_LCD()

{

Write_LCD_Command(0x38);

Delayms(1);

Write_LCD_Command(0x01);

Delayms(1);

Write_LCD_Command(0x06);

Delayms(1);

Write_LCD_Command(0x0c);

Delayms(1);

}

void ShowString(uchar x,uchar y,uchar *str) {

uchar i = 0;

if(y == 0)

Write_LCD_Command(0x80 | x);

if(y == 1)

Write_LCD_Command(0xc0 | x);

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

{

Write_LCD_Data(str[i]);

}

}

主程序

Main.c

/*************** writer:shopping.w ******************/ #include

#include

#define uchar unsigned char

#define uint unsigned int

void Initialize_LCD();

void ShowString(uchar,uchar,uchar *);

sbit K1 = P3^0;

sbit K2 = P3^1;

sbit K3 = P3^2;

uchar code Prompt[]="PRESS K1--K4 TO START DEMO PROG"; uchar const Line_Count = 6;

uchar code Msg[][80]=

{

"Many CAD users dismiss",

"process of creating PCB",

"of view.with PCB layout",

"placement and track routing,",

"can often be the most time",

"And if you use circuit simulation",

"you are going to spend even more"

};

uchar Disp_Buffer[32];

void Delayxms(uint ms)

{

uchar i;

while(ms--)

{

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

}

}

void V_Scroll_Display()

{

uchar i,j,k = 0;

uchar *p = Msg[0];

uchar *q = Msg[Line_Count] + strlen(Msg[Line_Count]);

while(p

{

for(i=0;(i<16)&&(p

{

if(((i==0)||(i==15))&& *p == ' ')

p++;

相关文档
最新文档