1、6控制系统实现 6.1软件编程 6.2Keil C与Proteus的联调及仿真结果127设计心得138参考文献 1.设计要求 (1 ) 单片机通过I/O口接收输入信号。 (2)单片机要通过I/O口控制液晶的初始化、显示方式以及要显示的字符。 (3)液晶屏上能够完成部分数字或常用字符的显示。 (4)能通过改变程序,提高测量精度。 (5)设计字符液晶频率计的电路图 ,并用proteus软件进行仿真。 (6)用单片机的c语言编写程序并导入单片机中进行模拟仿真。 2.设计方案与论证 2.1设计的思路(1)单片机部分: 考虑到目前所学习的内容和设计的目的,决定选取AT89C51.此单片机虽然属于低端机型
2、,但足以满足设计的要求。选取其它的高端机型有些浪费。 (2)显示部分: 该课程设计要求能够完成部分数字和常用字符的显示。若用数码管只能显示0F,不能显示其他的字符和符号,所以不能用数码管。而选用LCD1602恰好符合要求,所以应用LCD1602。综上可得:采用定时器T1实现外部信号的频率输入,并利用T1计数器的计数功能和T0定时器的定时功能将脉冲的频率输入到LCD屏上。且可利用单刀多置开关实现多频率显示。 2.2总体方案: 该设计以单片机为核心,显示器为外围设备,设计一个字符液晶显示的频率计。硬件上,单片机通过电路板电路与液晶显示电路相连;软件上单片机通过下载完整的程序对二者进行适时的控制,其
3、中的程序分为两部分,一部分是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
4、向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。本次设计主要用到单片机4个I/O口的3个,其中P0口与显示器相连,P1.0与开关K1相连,18、19引脚外接晶振电容为单片机提供时序9号脚为复位电路的接入脚。3.1.2单片机最小系统复位电路:由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现
5、高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就要让RC组合可以在RST脚上产生不少于2个机周期的高电平;复位输入高电平有效,当振荡器工作是,RST引脚出现两个机器周期以上的高电平,使单片机复位。此电路除具有上电复位功能外,若要复位只需按“RST”键,此电源Vcc经电阻分压,在RST端产生一个复位高电平;晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通
6、讯的场合)/12MHz(产生精确的方波便于12分频,方便定时操作);单片机:一片AT89S51/52或其他51系列兼容单片机;注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行;电源部分:接+5伏特的电压。 3.1.3 液晶显示电路: 字符型液晶显示模块LCD1602是一种用5*7点阵图形来显示字符的液晶液晶显示器,其引脚功能如下表所示编号符号引脚说明1VSS电源地D2DataI/OVDD电源正极10D3VL液晶显示偏 压信号11D4RS数据/命令选择端D5R/W读写选择端D6E使能信号14D
7、7D015BLA背光源正极D116BLK背光源负极读状态:输入:RS=L,RW=H,E=H 输出:D0D7=状态字 写指令:输入: RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:无读数据:RS=H,RW=H,E=H 输出: D0D7=数据写数据:RS=H,RW=L,D0D7=数据,E=高脉冲 输出: 无根据1062液晶显示器的读写时序操作,编写相应的单片机驱动程序,便可以实现液晶显示器的显示输出。3.2电路图 3.2.1液晶显示电路:3.2.2时钟电路3.2.3控制电路:3.2.4字符液晶显示频率计的完整电路图:3.3软件设计3.3.1 软件环境 KeilC软件介绍:Keil C51
8、是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。 Proteus软件介绍:Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿
9、真软件、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软件流程图; Y N N
10、主程序流程图 LCD程序流程图4.器件清单元件序号型号主要参数数量备注AT89C5112MHz液晶显示器LCD1602按键液晶显示器开关电阻10K地址锁存器74LS373与非门74LS00晶振单刀多置开关Sw-ROT4脉冲输入pulse瓷片电容22pf极性电容10uf 5器件识别与检测 :LCD1602是一种点阵字符型液晶显示模块,可以显示两行共32个字符,是一种很常用的小型液晶显示模块,在单片机系统、嵌入式系统等的人机界面中得到广泛应用。基本特性为 2行*16个字符 、5*7阵字符以及反射型EL或者LED背光,其中EL为100VAC400Hz,LED为4.2VDC。并且其采用并行接口的方式,
11、他的指令包括清屏、归位、输入方式设置、显示开关控制、光标位移、功能设置、DDRAM地址设置、读BF以及AC值、写数据、读数据。 6.控制系统实现(软件编程与调试)6.1软件编程:#includeabsacc.h#define uchar unsigned char#define uint unsigned int#define WCOMM XBYTE0x0000#define RCOMM XBYTE0x0001#define WDATA XBYTE0x0002#define RDATA XBYTE0x0003void BusyWait() while(RCOMM & 0x80) != 0x00
12、);void Write_Command(uchar cmd) BusyWait(); WCOMM=cmd; void Write_Data(uchar dat)WDATA=dat;void Initialise() Write_Command(0x30); Write_Command(0x01); Write_Command(0x06); Write_Command(0x0c); void ShowString(uchar *str) uchar i=0; Write_Command(0x80); while(stri!=0&iuchar code Prompt=Please press K
13、1 and wait for awhile,Current Frequency will show on the LCD.;uchar LCD_Disp_Buffer=Frequency-HZuchar Count=0;sbit K1=P10;void Initialise();void ShowString(uchar str);void Delay(uchar ms) uchar i; while (ms-) for (i=0;120;i+);void main() Initialise(); while (Prompti!) ShowString(Prompt+i); i+; Delay
14、(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);void INT_T0( ) interrupt 1 uint Tmp,i; if(+Count=20) TR1=TR0=0; Count=0; Tmp=TH1*256+TL1; LCD_Disp_Buffer9=Tmp/10000+0 LCD_Disp_Buffer10=Tmp/1000%10+ L
15、CD_Disp_Buffer11=Tmp/100%10+ LCD_Disp_Buffer12=Tmp%100/10+ LCD_Disp_Buffer13=Tmp%10+ if(LCD_Disp_Buffer9=) LCD_Disp_Buffer9= i=10; while(LCD_Disp_Bufferi=LCD_Disp_Bufferi-1= i!=13 ) LCD_Disp_Bufferi+= TH1=TL1=0;6.2 KeilC与Proteus的联调及仿真结果双击图标进入keil软件编程环境,建立工程,输入程序,编译并调试,生成*.HEX文件。返回桌面双击图标进入Proteus仿真环境
16、。打开绘制好的电路图文件,将刚生成的*.HEX文件添加到电路中完成联调并仿真。 仿真结果图此程序分为两部分:一部分是LCD液晶程序部分,一部分是主程序部分,在主程序部分通过调用液晶显示函数与定时、计数功能将波形脉冲的频率值显示在LCD上。其中液晶程序中先是LCD忙等待状态,待有频率输入时在执行写命令,之后写数据,在LCD初始化,最后显示函数显示字符串如按键K1按下,则显示频率。主程序中通过T1计数器计数和T0定时器定时功能将脉冲转换为计数值再转换为频率值显示在LCD屏幕上。 另外,虽然单片机只识别方波,但可以通过如下的电路将三角波、梯形波,正弦波等转化为方波进而测得其波形的频率。 波形转换电路
17、7设计心得: 我学的单片机的c语言课程主要是80C51单片机,在这次课设中通过使用89C51有了更深的了解,同时在找资料的过程中学到了许多课本上学不到的知识和经验,也让我认识到了实践的重要性。同时在这次课设中我增加了该频率计的功能,让它能测量更多波形的频率,通过对原有的输入设备的改进,提高了系统的测量精度,让我对单片机产生了更大的兴趣,所以在今后的学习与实践的道路上,我会更加努力学习与钻研,与此同时,在做课设的过程中,我得到了大家的帮助,让我认识到了协作的重要性。8参考文献:【1】 付家才单片机控制工程实践技术M北京:化学工业出版社 2004.3.【2】 李光才单片机课程设计 实例指导M 北京:北京航空航天大学出版社 2004.【3】 朱定华单片机原理及接口技术实验M北京:北方交通大学出版社2002.11.【4】刘湘涛江世明单片机原理与应用M. 北京:电子工业出版社,2006.【5】单片机的C语言程序设计与应用基于proteus的仿真,姜志海,电子 工业出版社,2007.4
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1