单片机课设.docx
- 文档编号:30287009
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:23
- 大小:478.73KB
单片机课设.docx
《单片机课设.docx》由会员分享,可在线阅读,更多相关《单片机课设.docx(23页珍藏版)》请在冰豆网上搜索。
单片机课设
单片机课程设计正文
题目:
LCD字符型显示器
班级:
学号:
姓名:
成绩:
指导教师:
邹连英
日期:
2015.12.11
目录
一、系统设计思路····················································1
二、原理图设计······················································1
2.1设计原理图整体轮廓············································1
2.2组成电路介绍·················································2
2.3键盘控制系统设计··············································3
2.4显示电路设计··················································3
三、软件设计························································6
3.1程序主流程图··················································7
3.2初始化流程图··················································7
3.3实时时钟延时中断子程序········································8
四、系统测试·························································8
4.1测试方法······················································8
4.2测试结果······················································8
4.3结果分析······················································8
五.课程设计心得体会··················································9
六.源程序···························································10
一、系统设计思路
本设计要实现的功能是:
设计接口电路并编程使液晶显示器显示字符“MCS-51Test!
”;用按键输入与显示数字;实现显示实时时钟。
按照系统的设计功能所要求的,液晶显示电子时钟原理图如图所示。
液晶显示电子时钟原理图
本系统以AT89C52单片机为核心,该单片机可把数据进行处理,从而把数据传输到显示模块LCD1602液晶显示器,实现时间和字符的显示。
以LCD液晶显示器为显示模块,把单片机传来的数据显示出来,并且显示多样化,还可以进行数字的输入并显示,主要靠按键来实现。
二、原理图设计
2.1设计原理图整体轮廓
2.2组成电路介绍
1)复位电路:
复位电路
复位电路有两种方式:
上电复位和按钮复位,我们主要用按钮复位方式。
如图所示:
2)晶振电路:
晶振电路如图所示:
晶振模块原理图
选取原则:
电容选取22pF,晶振为11.0592MHz。
3)电源:
AT89S52单片机的供电电源是5V的直流电。
4)EA非/Vpp脚:
我们没有用外部扩展ROM,因此EA非/Vpp为高电平,即接+5V电源。
2.3键盘控制系统设计
按键需要10个,分别实现为数字0~9的键入,原理图中有16个键位,但是部分并没有进行定义。
采用矩阵式按键,对于一组键,需通过接口电路与单片机相连。
可采取查询或者中断方式测试有无按键按下,然后判断是数字键还是功能键,若是数字键,则将键号对应的数字送入相关的输入缓冲区;若是功能键,则通过跳转指令转入执行该键的功能程序,执行完后再返回主程序,其电路如图所示:
按键输入电路
不同的按键对应的着不同的数字,当按下按键后,即会在LCD显示屏上显示相应的数字。
2.4显示电路设计
CD1602简介:
CD1602简介:
LCD1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用,正因为如此,所以他不能显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
(1)LCD1602的主要技术参数
显示容量:
16×2个字符;
芯片工作电压:
4.5—5.5V;
工作电流:
2.0mA(5.0V);
模块最佳工作电压:
5.0V;
字符尺寸:
2.95×4.35(W×H)mm。
(2)LCD1602引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下:
第1脚:
VSS为地电源;
第2脚:
VDD接5V正电源;
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度;
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器;
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据;
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;
第7~14脚:
D0~D7,为8位双向数据线;
第15脚:
背光源正极;
第16脚:
背光源负极。
(3)1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。
本显示电路将单片机的P0口作为液晶的数据口,由于P0口没有上拉电阻,所以需额外加一个排阻作为上拉电阻,利用P1口作为其读写控制端,LCD字符型显示器电路如图。
显示电路
LCD1602指令码
功能令:
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
说明
清显示
0
0
0
0
0
0
0
0
0
1
将DDRAM填满"20H",并且设定DDRAM的地址计数器(AC)到"00H"
归位
0
0
0
0
0
0
0
0
1
*
设定DDRAM的地址计数器(AC)到"00H",并且将游标移到开头原点位置;这个指令不改变DDRAM的内容
显示开关控制指令
0
0
0
0
0
0
1
D
C
B
[D=1:
整体显示ON],[C=1:
游标ON],[B=1:
游标位置反白允许]
进入模式设置指令
0
0
0
0
0
0
0
1
I/D
S
I/D=1,光标或闪烁向右移动,AC增加1。
I/D=0,光标或闪烁向左移动,AC减少1,S整个显示移动
光标或显示移位指令
0
0
0
0
0
1
S/C
R/L
*
*
光标或显示移位指令可使光标或显示在没有读写数据的情况下,向左或向右移动,指令不改变DDRAM的内容
功能设定
0
0
0
0
1
DL
N
F
*
*
[DL=0/1:
4/8位数据],[N=0/1,单行/双行显示],[F=0/1,5*8/5*10点阵显示模式]
设置CGRAM地址
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
CGRAM地址设置指令设置CGRAM地址指针,
设定DDRAM地址
0
0
1
0
AC5
AC4
AC3
AC2
AC1
AC0
DDRAM地址设置指令设置DDRAM地址。
一行地址范围00H~4FH,两行DDRAM地址第一行00H~27H,第二行40H~67H,加上高2位,[一行:
80H-A7H],[二行:
C0H-E7H]
读忙标志和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
BF:
忙标志位,BF=1,模块正在进行内部操作,此时模块不接受任何外部指令和数据。
BF=0,模块可以接受外部的指令和数据;同时可以读出地址计数器(AC)的值。
写RAM指令
1
0
D7
D6
D5
D4
D3
D2
D1
D0
将数据D7-D0写入到内部的RAM(DDRAM/CGRAM/IRAM/GRAM),将用户自定义的字符写入CGRAM中,D7~D5为000,D4~D0为5点的字模数据
读RAM指令
1
1
D7
D6
D5
D4
D3
D2
D1
D0
从内部RAM读取数据D7——D0(DDRAM/CGRAM/IRAM/GRAM)
三、软件设计
软件设计是本次设计中不可缺少的环节,是本次设计能够完成的最重要的环节之一。
在完成了硬件电路的设计之后,依据系统设计要求和硬件电路开始系统软件部分的设计。
本系统软件设计包括:
主程序、系统初始化子程序、延时中断子程序、时间设置子程序。
首先进行模块设计,最后进行各模块的整合以完成整个软件系统。
3.1程序主流程图
主流程图
3.2初始化流程图
系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化部分包括以下方面的内容:
(1)单片机定时器0初始化以及各种I/O口定义;
(2)1602液晶初始化清屏及设定工作方式;
(3)系统进入正常工作状态。
初始化流程图
3.3实时时钟延时中断子程序
延时中断子程序
四、系统测试
4.1测试方法
系统单片机代码采用C语言编写,proteus进行原理图的设计,keil软件进行代码的编译,通过keil与proteus软件的充分利用,将编译好的执行代码加载到原理图中的单片机里面进行原理图仿真,通过仿真对系统的代码程序和原理图进行测试,看是否达到系统的设计要求。
4.2测试结果
通过按不同的数字键调节,我们可以出入自己想要的数字,观察LCD液晶屏精确显示出我们所输入的数字。
同时还有显示字符MCS-51Test!
以及实时时钟
4.3结果分析
通过对将程序下载到单片机上测试发现完成了系统的功能要求。
LCD显示屏能够清晰显示出MCS-51Test!
和实时时钟,以及当按键时0~9数字的显示.
如下图,实际结果拍照所得:
五.课程设计心得体会
通过这次设计让我对单片机有更加深入的了解,提高了分析程序和硬件电路的能力,对编译调试和下载烧录程序的方法更加熟悉。
在找资料的过程中不仅掌握了课本上没有的知识,还提高了自己的搜索能力,我相信到将来这是一种很宝贵的财富。
学而知不足,这次设计让我学到了更多东西的同时也让我看到了自己知识的缺乏,从而促进我不断进取﹑不断进步。
这次设计我还明白了一个道理:
有些事情不是自己不会做,而是并没有去行动,所以才会觉得难。
在程序设计中遇到了很多问题,在老师和同学的帮忙下也一一顺利的解决了,我明白了团结合作的重要性。
在整个调试过程中,软件设计是很关键的一部,每个指令都关系到最后调试的结果,虽然仿真器运行汇编并没有错误,但是那只是检查了最基本的语句错误,关键在于整个程序的思路要清晰,理解要正确。
虽然课程设计只有短短的一周,但是和组员以及老师一起发现问题、解决问题,给我留下了深刻的记忆,这样不仅锻炼了我们的实际动手能力,还加深了对知识的理解,更是让我学会到与他人合作的重要性,也许就是一个简单的地址写入的问题就能难倒我几个小时,可是旁观者清,在同学老师的帮忙下,我一下子找到问题所在。
总之,这次设计是所学知识的一次综合检验,通过自己动手学到了很多宝贵的经验,虽然走了不少弯路,但那也是一次次深刻的教训。
这次设计是我的大学生涯得到了升华,个人价值得到了肯定,它将让我受益终生。
六.源程序
由于程序代码的复杂繁琐,此处只给出了MCS-51Test!
显示字符程序的代码#include
#defineucharunsignedchar
#defineuintunsignedint
sbitlcdrs=P1^0;
sbitlcdrw=P1^1;
sbitlcden=P1^2;
unsignedcharcodedate[]="MCS-51Test!
";
voidwrite_data(uchardat);
voidwrite_com(ucharcom);
voidclock_init()
{
uchari,j;
for(i=0;i<16;i++)
{
write_data(date[i]);
}
write_com(0x80+0x40);
for(j=0;j<16;j++)
{
;
}
}
voiddelay(uintcnt)
{//延时函数,使用晶振为11.0592MHz
uintx,y;
for(x=cnt;x>0;x--)
for(y=110;y>0;y--)
;
}
voidwrite_com(ucharcom)//写入指令数据到LCD
{
lcdrw=0;
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_data(uchardate)//写入字符显示数据到LCD
{
lcdrw=0;
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidinit1602()
{
lcdrw=0;
lcden=0;
write_com(0x38);
delay(5);
write_com(0x0f);
delay(5);
write_com(0x06);
delay(5);
write_com(0x01);
delay(5);
write_com(0x0c);
}
voidwrite_sfm(ucharadd,uchardate)//向指定地址写入数据
{
ucharshi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+add);
write_data(0x30+shi);
write_data(0x30+ge);
}
voidmain()
{
init1602();
write_com(0x80);
write_data(0x4d);
write_data(0x43);
write_data(0x53);
write_data(0x2d);
write_data(0x35);
write_data(0x31);
write_data(0x20);
write_data(0x54);
write_data(0x65);
write_data(0x73);
write_data(0x74);
write_data(0x21);
//clock_init();
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机