B••-
M'fl
FI.1
F3.m:
>
T12
puttdS
FPS
piJim
Pl4
n.am
rm
IFUfTI
FHfl
FU
F3Jncr
「冷■■屮-H>□-Nn*——
4.2硬件设计
4.2.1矩阵按键
键盘是单片机系统中最常用的人机对话输入设备,用户通过按键向单片机输入指令和数据。
该模块利用16个的小按键,提供0-9,+、-、*、/、=、清零键。
键盘控制程序需完成的任务有:
给电路提供输入的符号,让LCD显示屏显示输
入的按键是什么。
在编写的程序中,可以检查是否有按键按下,有键按下时,如无
硬件去抖动电路时,应用软件延时方法消除按键抖动;当有多个按键按下时,只
响应一个按键,不管持续多长时间,仅执行一次按键功能程序。
其结构图如下所示:
矩阵键盘结构图
422AT89C52主芯片
AT89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储
器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
ST89C52
单片机包含中央处理器、程序存储器、数据存储器、定时/计数器、并行接口、
串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。
时钟电路:
STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
内部方式的时钟电路如图4—2(a)所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶体振荡频率可以在1.2〜12MHz之间选择,电容值在5〜30pF之间选择,电容值的大小可对频率起微调的作用。
外部方式的时钟电路如图4—2(b)所示,RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz
的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
II
KTALI
XTAL-2
^sv
(a)外部方式时钟电路(b)内部方式时钟电路
复位及复位电路:
(1)复位操作,复位是单片机的初始化操作。
其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
除PC之外,复位操作还对其他一些寄存
器有影响,;
(2)复位信号及其产生,RST引脚是复位信号的输入端。
复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。
若使
用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。
整个复位电路包括芯片内、外两部分。
外部电路产生的复位信号(RST)送至施密特
触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出
进行采样,然后才得到内部复位操作所需要的信号。
复位操作有上电自动复位
相按键手动复位两种方式。
本系统的复位电路采用上电复位方式。
AT89C52具体介绍如下:
①主电源引脚(2根)VCC(Pin40):
电源输入,接+5V电源GND(Pin20):
接地线②外接晶振引脚(2根)XTAL1(Pin19):
片内振荡电路的输入端XTAL2(Pin20):
片内振荡电路的输出端③控制引脚(根)RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号PSEN(Pin29):
外部存储器读选通信
号EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
④可编程输入/输出引脚(32
根)STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
PO口(Pin39〜Pin32):
8位双向I/O口线,名称为P0.0〜P0.7P1口(Pin1〜Pin8):
8位准双向I/O口线,名称为P1.0〜P1.7P2口(Pin21〜Pin28):
8位准双向I/O口线,名称为P2.0〜P2.7,P3口
(Pin10〜Pin17):
8位准双向I/O口线,名称为P3.0〜P3.7
AT89C52的外部结果如下图:
AT89C52主要功能:
兼容MCS51指令系统
8K可反复擦写FlashROM
32个双向I/O□
256x8bit内部RAM
3个16位可编程定时/计数器中断
时钟频率0-24MHZ
2个串行中断
P可编程UART串行通道
2个外部中断源
共6个中断源
2个读写中断口线
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
423LCD显示
本次设计在显示部分采用的是LCM1602B,它是一个双行显示的液晶显示器。
其
中采用标准的16脚接口,其中:
LM016L
oo
o
(2
LCD结构图
第1脚:
vss为地电源
第2脚:
VDD接5V正电源
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当
RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7〜14脚:
D0〜D7为8位双向数据线。
第15〜16脚:
分别为背光灯正负极,A接正极,K接负极。
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高
电平、0为低电平)
4.3软件设计
软件设计和硬件设计一样也由三部分组成,其中包括:
键盘模块、显示模块、计算模块,现分别对这三部分分别介绍。
4.3.1键盘模块
矩阵按键扫描程序是一种节省10口的方法,按键数目越多节省10口就越可观,思路:
先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。
但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。
本程序中,如果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时间。
本键盘扫描程序的优点在于:
不用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。
另外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。
矩阵键盘需要初始化,并且分别对其行、列进行扫描,在扫描过程中判断是否有键按下,
432计算模块
AT89C52单片机是一块芯片中集成了CPU、RAM、ROM、定时器、计数器、和多功能I/O等一台计算器所需要的基本功能部分。
如果按功能划分,它由如下功能部分组成,即微处理器(CPU)、数据处理器(RAM)、程序处理器
(ROM/CPROM)、并行I/O口、串行口、定时器、计数器、中断系统及特殊功能寄存器(SFR)。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实
现不同的功能,尤其是特殊一些功能,通过使用单片机编写的程序可以凸显高智能、高效率以及高可靠性!
因此我们采用单片机作为计算器的主要功能部件,可
以很快实现运算功能
在计算模块中,必须保证按键按下的数和LCD液晶显示的数保持一致,则
需要把+、-、*、/等字符转换成数据,根据以上要求,计算模块的程序流程图:
433显示模块
本电路采用的是LCD液晶显示输出数据,在流程图中应包括对LCD液晶显示器初始化,取要显示的数据,要是有两位数据需要显示,则在显示完第一位数据后需要进行延迟来显示第二位数据,则根据以上要求,显示模块的流程图如图:
五、制作及调试过程
5.1制作过程
根据设计的电路图焊接电路板,操作注意事项有:
①保持烙铁头的清洁,因为焊接时烙铁头长期处于高温状态,其表面很容易氧化并沾上一层黑色杂质形成隔热层,使烙铁头失去加热作用。
②采用正确的加热方法,要靠增加接触面积加快传热,而不要用烙铁对焊件加力。
应该让烙铁头与焊件形成面接触而不是点接触。
③加热要靠焊锡桥,要提高烙铁头加热的效率,需要形成热量传递的焊锡桥。
④在焊锡凝固之前不要使焊件移动或振动用镊子夹住焊件时,一定要等焊锡凝固后再移去镊子。
⑤焊锡量要合适,过量的焊锡会增加焊接时间,降低工作速度。
⑥不要用过量的焊剂,适量的焊剂是非常有必要的。
过量的松香不仅造成焊后焊点周围脏不美观,而且当加热时间不足时,又容易夹杂到焊锡中形成“夹渣”缺陷。
在我自己的焊接当中,也出现了焊锡量不足和过多的状况,最后导致接入电源后无法正常使用的现象。
同时注意元件的焊接顺序也很重要,选择合适的焊接顺序,不仅便于焊接,而且不至于导致元件破损。
5.2软件调试
本电路软件设计采用C语言编写程序(具体程序在附件中给出)。
程序设计主要包括简易计算的编程,按键编程,时间控制编程,液晶屏LCD1602的显示编程。
编写好c文件后,用keil软件生成hex文件。
在Proteus布置的电路图中,点击芯片,将生成的的hex文件导入芯片中,进行软件仿真。
其仿真结果如下:
・】吸,K].unk和质E心・口
*14p^rflT
mmtaHLiUi
raxvEi*a.**i4ravM*
nmrf£.n*・8iEi■□"I
U^3
...F-
-f*'1*.
■■
对于计算器的性能,主要的衡量指标就在于计算的精度,本次制作的计算器性能情况如下:
按第一个数,再按‘+—*/'再按第二个数,然后按‘='显示出结果,然后按C清屏;
加最大999999+999999=1999998
减最大999999-0=999999;
乘最大99999*99999=9999800001;
除1/3=0.3333保留小数点后4位,若分母为0则显示ERROR。
5.3硬件调试
焊接好的电路板接入电源后,若LCD的15脚16脚有接,则LCD背景灯光发光。
调节继电器的电阻值,可以调节背景灯光的亮度。
按下按键,LCD显示
按下的字符,根据课设的任务要求,调试结果如下图所示,可以看到,实物调节可以实现了课设要求。
结论
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻
炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程•随着科学
技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在
生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
通过这次课程设计,最大的一点体会是单片机学的不够扎实,不会的很多啊,当然这次的课程设计做计算器程序用的是c语言,不是课上初学的汇编,所以很难适应,尽管大家都知道汇编编这个程序也很困难,但还是互相学习,至V处找资料看,问同学,所以我的软件主程序才能编译成功,系统才能调试出结果。
很感谢那些热心教导我的同学和指导我的老师。
首先在硬件电路的制作中,在焊接电路板的途中,由于我的粗心,将两个接口焊接在了一起,导致了两个接口短路了,在后来的检测中才发现。
同时在焊接完了,接上电源才发现那个晶振是坏的,后来换了才使电路板可以使用。
在这次课设中,整个硬件电路还是做得令自己比较满意的。
在软件方面,感觉困难更多一些,一开始真的很着急,毫无头绪啊,一时间,XX,论坛,贴吧逛了个遍,找了很多资料,也参考了同学的程序,其中每一个子程序模块都认真去读,去分析,化为己用,程序是一遍一遍的改啊,可是怎么没编译比通过啊,后来在同学的帮助下才使程序能过编译通过。
且,在这之前从来没有使用keil这个软件,使用keil软件生成hex文件完全是自己摸索的情况下完成的。
在使用开发板烧入程序中也出现了错误,导致出现了LCD乱码的情况,在后来中这些问题都在一次次修改过,纠错中解决了。
总的来说,软件设计能够把结果调出来还是很激动的,尽管还有很多未知的问题没有出现。
致谢本次课设是在汪弦老师的带领下完成的。
在此要感谢老师和同学们的帮助,使我能够圆满的完成这次课设的任务。
在这次为期约一个多月的课程设计里,大大培养了我的动手能力和同学间的相互合作精神。
通过这次课程设计我们进一步加深了对所用到的各种元器件的功能的理解,这对我以后的学习会很有帮助。
本次课程设计是一个要求动手能力很强的设计,而且也是一个有严谨的态度才能完成的设计,它要求我必须一丝不苟,在此还要感谢学校开了这次课设课题,这次课不仅使我加深了单片机的课程知识,更是加强了我的动手能使,非常感谢!
参考文献
[1]丁元杰.单片微机原理及应用(第三版).北京:
机械工业出版社,2005.7
[2]李建忠.单片机原理及应用(第一版).西安电子科技大学出版社,2002
[3]李维绨.郭强.液晶显示与应用技术。
北京电子工业出版社,2003
单片机控制系纥课程设计成绩评定表
序号
评价指标
满分值
得分
1
任务书及设计要求全面、准确
10
2
方案的选择及其论证充分、合理
10
3
基本原理框图的设计思路正确、有新意
10
4
各功能模块的电路仿真
15
5
系统的安装调试,基本功能的实现
25
6
作品的扩展功能与创新
10
7
报告结构合理、规范,条理清晰
10
8
课程设计过程中的学习态度认真、出勤率高
10
总评
教师评语:
指导教师年月日