字符液晶显示的频率计文档格式.docx
- 文档编号:19345927
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:16
- 大小:958.03KB
字符液晶显示的频率计文档格式.docx
《字符液晶显示的频率计文档格式.docx》由会员分享,可在线阅读,更多相关《字符液晶显示的频率计文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
6控制系统实现·
6.1软件编程·
6.2KeilC与Proteus的联调及仿真结果·
12
7设计心得·
13
8参考文献·
1.设计要求
(1)单片机通过I/O口接收输入信号。
(2)单片机要通过I/O口控制液晶的初始化、显示方式以及要显示的字符。
(3)液晶屏上能够完成部分数字或常用字符的显示。
(4)能通过改变程序,提高测量精度。
(5)设计字符液晶频率计的电路图,并用proteus软件进行仿真。
(6)用单片机的c语言编写程序并导入单片机中进行模拟仿真。
2.设计方案与论证
2.1设计的思路
(1)单片机部分:
考虑到目前所学习的内容和设计的目的,决定选取AT89C51.此单片机虽然属于低端机型,但足以满足设计的要求。
选取其它的高端机型有些浪费。
(2)显示部分:
该课程设计要求能够完成部分数字和常用字符的显示。
若用数码管只能显示0~F,不能显示其他的字符和符号,所以不能用数码管。
而选用LCD1602恰好符合要求,所以应用LCD1602。
综上可得:
采用定时器T1实现外部信号的频率输入,并利用T1计数器的计数功能和T0定时器的定时功能将脉冲的频率输入到LCD屏上。
且可利用单刀多置开关实现多频率显示。
2.2总体方案:
该设计以单片机为核心,显示器为外围设备,设计一个字符液晶显示的频率计。
硬件上,单片机通过电路板电路与液晶显示电路相连;
软件上单片机通过下载完整的程序对二者进行适时的控制,其中的程序分为两部分,一部分是LCD1602液晶程序,一部分是频率计的主程序部分,其中主程序部分的功能是在按下K1键时程序启动T0定时器和T1计数器,T1计数器1s内的计数值即信息源的频率值。
2.3总体框图:
5V
从图中可以看出单片机控制的液晶显示的频率计的主要功能模块分为两部分:
分别是液晶显示和电源模块两部分。
3设计原理及电路图
3.1硬件原理:
单片机通过I/O口接收输入信号,在通过I/O口控制液晶的初始化、显示方式及要显示的字符。
3.1.1AT89C51介绍:
T89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,
32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
本次设计主要用到单片机4个I/O口的3个,其中P0口与显示器相连,P1.0与开关K1相连,18、19引脚外接晶振电容为单片机提供时序9号脚为复位电路的接入脚。
3.1.2单片机最小系统
①复位电路:
由电容串联电阻构成,由图并结合"
电容电压不能突变"
的性质,可以知道,当
系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就要让RC组合可以在RST脚上产生不少于2个机周期的高电平;
②复位输入高电平有效,当振荡器工作是,RST引脚出现两个机器周期以上的高电平,使单片机复位。
此电路除具有上电复位功能外,若要复位只需按“RST”键,此电源Vcc经电阻分压,在RST端产生一个复位高电平;
③晶振电路:
典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的方波便于12分频,方便定时操作);
④单片机:
一片AT89S51/52或其他51系列兼容单片机;
注意:
对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;
当接低电平时,复位后直接从外部ROM的0000H开始执行;
⑤电源部分:
接+5伏特的电压。
3.1.3液晶显示电路:
字符型液晶显示模块LCD1602是一种用5*7点阵图形来显示字符的液晶液晶显示器,其引脚功能如下表所示
编号
符号
引脚说明
1
VSS
电源地
D2
DataI/O
VDD
电源正极
10
D3
VL
液晶显示偏压信号
11
D4
RS
数据/命令选择端
D5
R/W
读写选择端
D6
E
使能信号
14
D7
D0
15
BLA
背光源正极
D1
16
BLK
背光源负极
读状态:
输入:
RS=L,RW=H,E=H输出:
D0~D7=状态字
写指令:
输入:
RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:
无
读数据:
RS=H,RW=H,E=H输出:
D0~D7=数据
写数据:
RS=H,RW=L,D0~D7=数据,E=高脉冲输出:
无
根据1062液晶显示器的读写时序操作,编写相应的单片机驱动程序,便可以实现液晶显示器的显示输出。
3.2电路图
3.2.1液晶显示电路:
3.2.2时钟电路
3.2.3控制电路:
3.2.4字符液晶显示频率计的完整电路图:
3.3软件设计
3.3.1软件环境
KeilC软件介绍:
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。
因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
Proteus软件介绍:
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编辑器。
3.3.2软件原理:
软件调试主要是编写相应的程序,在电路仿真软件上进行仿真,直至达到预期效果。
根据系统硬件设计要求,软件设计主要包括:
单片机控制程序模块:
作为系统的总控制程序模块
液晶显示模块:
使用字符型液晶显示器显示用户的选择。
3.3.3软件流程图;
YNN
主程序流程图LCD程序流程图
4.器件清单
元件序号
型号
主要参数
数量
备注
AT89C51
12MHz
液晶显示器
LCD1602
按键液晶显示器开关
电阻
10K
地址锁存器
74LS373
与非门
74LS00
晶振
单刀多置开关
Sw-ROT4
脉冲输入
pulse
瓷片电容
22pf
极性电容
10uf
5器件识别与检测:
LCD1602是一种点阵字符型液晶显示模块,可以显示两行共32个字符,是一种很常用的小型液晶显示模块,在单片机系统、嵌入式系统等的人机界面中得到广泛应用。
基本特性为2行*16个字符、5*7阵字符以及反射型EL或者LED背光,其中EL为100VAC400Hz,LED为4.2VDC。
并且其采用并行接口的方式,他的指令包括清屏、归位、输入方式设置、显示开关控制、光标位移、功能设置、DDRAM地址设置、读BF以及AC值、写数据、读数据。
6.控制系统实现(软件编程与调试)
6.1软件编程:
#include<
reg51.h>
absacc.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineWCOMMXBYTE[0x0000]
#defineRCOMMXBYTE[0x0001]
#defineWDATAXBYTE[0x0002]
#defineRDATAXBYTE[0x0003]
voidBusyWait()
{
while((RCOMM&
0x80)!
=0x00);
}
voidWrite_Command(ucharcmd)
BusyWait();
WCOMM=cmd;
}
voidWrite_Data(uchardat)
WDATA=dat;
voidInitialise()
Write_Command(0x30);
Write_Command(0x01);
Write_Command(0x06);
Write_Command(0x0c);
voidShowString(uchar*str)
{
uchari=0;
Write_Command(0x80);
while(str[i]!
='
\0'
&
i<
16)
Write_Data(str[i++]);
for(;
16;
i++)Write_Data('
'
);
string.h>
ucharcodePrompt[]="
PleasepressK1andwaitforawhile,CurrentFrequencywillshowontheLCD..."
;
ucharLCD_Disp_Buffer[]="
Frequency-----HZ"
ucharCount=0;
sbitK1=P1^0;
voidInitialise();
voidShowString(ucharstr[]);
voidDelay(ucharms)
uchari;
while(ms--)for(i=0;
120;
i++);
voidmain()
Initialise();
while(Prompt[i]!
)
ShowString(Prompt+i);
i++;
Delay(15);
IE=0x8A;
TMOD=0x51;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
while
(1)
if(K1==0)
{
Delay(10);
if(K1==0)
{
TR1=TR0=1;
}
ShowString(LCD_Disp_Buffer);
voidINT_T0()interrupt1
uintTmp,i;
if(++Count==20)
TR1=TR0=0;
Count=0;
Tmp=TH1*256+TL1;
LCD_Disp_Buffer[9]=Tmp/10000+'
0'
LCD_Disp_Buffer[10]=Tmp/1000%10+'
LCD_Disp_Buffer[11]=Tmp/100%10+'
LCD_Disp_Buffer[12]=Tmp%100/10+'
LCD_Disp_Buffer[13]=Tmp%10+'
if(LCD_Disp_Buffer[9]=='
)LCD_Disp_Buffer[9]='
i=10;
while(LCD_Disp_Buffer[i]='
LCD_Disp_Buffer[i-1]=='
i!
=13)
LCD_Disp_Buffer[i++]='
TH1=TL1=0;
6.2KeilC与Proteus的联调及仿真结果
双击图标进入keil软件编程环境,建立工程,输入程序,编译并调试,生成*.HEX文件。
返回桌面双击图标进入Proteus仿真环境。
打开绘制好的电路图文件,将刚生成的*.HEX文件添加到电路中完成联调并仿真。
仿真结果图
此程序分为两部分:
一部分是LCD液晶程序部分,一部分是主程序部分,在主程序部分通过调用液晶显示函数与定时、计数功能将波形脉冲的频率值显示在LCD上。
其中液晶程序中先是LCD忙等待状态,待有频率输入时在执行写命令,之后写数据,在LCD初始化,最后显示函数显示字符串如按键K1按下,则显示频率。
主程序中通过T1计数器计数和T0定时器定时功能将脉冲转换为计数值再转换为频率值显示在LCD屏幕上。
另外,虽然单片机只识别方波,但可以通过如下的电路将三角波、梯形波,正弦波等转化为方波进而测得其波形的频率。
波形转换电路
7设计心得:
我学的单片机的c语言课程主要是80C51单片机,在这次课设中通过使用89C51有了更深的了解,同时在找资料的过程中学到了许多课本上学不到的知识和经验,也让我认识到了实践的重要性。
同时在这次课设中我增加了该频率计的功能,让它能测量更多波形的频率,通过对原有的输入设备的改进,提高了系统的测量精度,让我对单片机产生了更大的兴趣,所以在今后的学习与实践的道路上,我会更加努力学习与钻研,与此同时,在做课设的过程中,我得到了大家的帮助,让我认识到了协作的重要性。
8参考文献:
【1】付家才.单片机控制工程实践技术[M].北京:
化学工业出版社2004.3.
【2】李光才.单片机课程设计实例指导[M].北京:
北京航空航天大学出版社2004.
【3】朱定华.单片机原理及接口技术实验[M].北京:
北方交通大学出版社2002.11.
【4】刘湘涛.江世明.单片机原理与应用[M].北京:
电子工业出版社,2006.
【5】单片机的C语言程序设计与应用——基于proteus的仿真,姜志海,电子工业出版社,2007.4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符 液晶显示 频率计