【毕业设计】24-基于单片机的电子显示屏的设计与应用(原理图+源码+仿真工程+论文+答辩PPT)
文章目录
- 资料下载链接
- 任务书
- 设计说明书
- 摘要
- 设计框架架构
- 设计说明书及设计文件
- 源码展示
资料下载链接
资料下载链接
资料链接:https://www.cirmall.com/circuit/29511/
包含此题目毕业设计全套资料:
1.原理图工程文件
2.源码工程文件
3.仿真工程文件
4.论文低重复率,27011字
5.原理图截图
6.仿真截图
7.答辩PPT
任务书
主要研究内容:
通过查阅资料,掌握单片机基本工作原理,使用AD软件绘制原理图,Visio软件绘制胸痛框图、流程图,并学会使用Keil软件与Proteus软件。
研究方法:
首先收集、查阅相关文献资料并进行归纳整理,查找参考文献资料,最后结合所学的专业理论知识,完成软件仿真、硬件电路搭建和论文内容。
要求:
1、使用液晶显示器显示图片。
2、能够保证显示过程中图片无延迟。
3、可以控制液晶显示器图片滚动、翻转。
设计说明书
摘要
本文基于单片机电子显示屏的设计与应用就是根据液晶显示器和单片机制作一款图像显示设备。可以实现图像的滚动和图像的反转功能。系统选择使用的主控芯片为STC89C52单片机;液晶显示器为LCD12864;人机交互设备选择使用独立按键。通过独立按键来实现图像的滚动和图像的反转功能。系统在设计上首先对系统的功能分析,然后确定系统的的设计方案,然后对系统的硬件电路和软件程序编写。硬件电路电路使用AD软件绘制,软件程序使用Keil,C语言编写。硬件和软件的设计上都是使用模块化的方式设计,方便在后期的维护、功能增添带来方便。最后系统的硬件和软件设计完成后,使用仿真软件Proteus来对系统仿真,测试功能。最后完成了设计。
在硬件电路的设计上考虑了系统的稳定性和抗干扰能力,通过模块化的方式设计系统,并且实现了系统功能,可以对本次设计系统进行推广应用。
设计框架架构
前 言 1
第一章 绪论 3
第一节 研究背景 3
第二节 显示器概述及液晶显示器特点 4
第三节 本文的主要研究内容 5
第二章 系统方案的分析与确定 7
第一节 系统设计要求 7
第二节 系统总体框架 7
第三节 主控制器选型 8
第四节 液晶显示器的显示原理 9
一、液晶显示器显示原理 9
二、字库标准介绍 13
第三章 系统硬件电路设计 14
第一节 单片机最小系统模块设计 14
一、单片机介绍 14
二、最小系统电路设计 16
第二节 电源模块设计 17
第三节 按键电路模块设计 18
第四节 LCD液晶显示模块电路设计 19
第五节 系统总电路图 20
第四章 系统的软件设计 22
第一节 Keil软件介绍 22
第二节 软件总设计 23
一、主程序设计流程 23
二、主程序设计源码 24
第三节 按键模块程序设计 25
一、按键设计流程 25
二、按键程序源码 26
第四节 LCD12864液晶显示模块程序设计 27
一、LCD12864程序设计流程 27
二、LCD12864程序设计源码 28
第五章 系统的仿真实现 30
第一节 Proteus软件介绍 30
第二节 系统电路搭建及调试 31
第三节 系统功能测试 32
结 论 35
致 谢 36
参考文献 37
附 录 39
一、英文原文 39
二、英文翻译 43
三、工程图纸 48
四、源代码 49
设计说明书及设计文件
论文低重复率,27011字
源码展示
void main()
{
uchar i,j,m;
uint k,x;
LCD_Initialise();
Set_LCD_POS(0,0);//初始化LCD显示位置
cls();
while(1)//进入主函数
{
if(S1!=0)//S1被按下
{
LCD_Write_Command_P2(LC_GRH_STP,0,0);//写命令
for(i=0;i<LCD_HEIGHT;i++)//LCD图片高度
{
Set_LCD_POS(i,0);//显示位置定位
LCD_Write_Command(LC_AUT_WR); //写命令
for(j=0;j<LCD_WIDTH;j++)//LCD图片高度
{
m = ImageX[i*LCD_WIDTH + j]; //LCD图片高度++
if(S2 == 0) //S2被按下
m = ~m;
LCD_Write_Data(m);//写信息
}
LCD_Write_Command(LC_AUT_OVR);//写命令
}
}
else
{
k = 0;
while(k!=128/8*LCD_HEIGHT)//高度显示为完成进入循环
{
LCD_Write_Command_P2(LC_GRH_STP,k%256,k/256); //写命令
for(x=0;x<5000;x++); //宽度显示
k+=LCD_WIDTH;
}
}
}
if(S1!=0)//S1是否被按下
{delay(20);//延时消抖
LCD_Write_Command_P2(LC_GRH_STP,0,0);//显示位置刷新
for(i=0;i<LCD_HEIGHT;i++)//显示高度未显示完成,进入循环
{
Set_LCD_POS(i,0);//显示位置定位
LCD_Write_Command(LC_AUT_WR);//写入命令
for(j=0;j<LCD_WIDTH;j++)/显示宽度未显示完成,进入循环
{
m = ImageX[i*LCD_WIDTH + j];//读取当前图片像素点信息
if(S2 == 0) //S2是否被按下
m = ~m;//像素信息取反
LCD_Write_Data(m);//写图取反后的像素信息
}
LCD_Write_Command(LC_AUT_OVR);
}