毕业论文基于AT89C51单片机的简易收款机的设计19930_第1页
毕业论文基于AT89C51单片机的简易收款机的设计19930_第2页
毕业论文基于AT89C51单片机的简易收款机的设计19930_第3页
毕业论文基于AT89C51单片机的简易收款机的设计19930_第4页
毕业论文基于AT89C51单片机的简易收款机的设计19930_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、xxxxxxxxxx 大学本科毕业设计大学本科毕业设计 基于单片机的简易收款机的设计 学生姓名学生姓名 所所 在在 系系 专业名称专业名称 班班 级级 学学 号号 指导教师指导教师 基于单片机的简易收款机的设计 学生: 指导教师: 内容摘要内容摘要: :随着全球信息化的发展,人们的生活水平也不断在提高,人们所需要 的商品也越来越多,各大规模的超市也随之涌现,超市里的商品品种和数量数不 胜数,以致于不可能完全依靠人来管理。本设计正是基于此,解决超市人工收款任 务不方便的问题.本设计是基于 atmel 公司 at89c51 的简易超市收款机控制的设 计。通过 4x4 矩阵键盘,液晶显示器(字符型

2、1602) ,串行铁电存贮器(24c64) , 串行通讯口和单片机(at89c51)的配合,以程控的方式完成收款的目的,系统采 用 atmel 公司 1989 年生产的 at89c51 单片机为核心控制器,完成简易超市收款机 的基本功能。通过矩阵键盘输入商品号,系统经过一系列的分析处理,输出商品号, 数量,单价和总价等基本信息. 关键词关键词: 矩阵键盘 字符型液晶显示 铁电存贮 i2c simple cash register based on single-design abstract: with the development of global information, people

3、s living standards have also continued to improve, people need more and more merchandise, the large-scale supermarkets also the emergence of the supermarket variety and quantity of merchandise just to name a few that do not may completely rely on to manage people. the design is based on this, the se

4、ttlement of receivables design artificial supermarket. through the 4x4 matrix keyboard, liquid crystal display (character 1602), serial ferroelectric memory (24c64), using atmel corporation 1989 production at89c51 single-chip microcomputer as the core controller, complete the summary of the basic fu

5、nctions of supermarket cash registers, through the matrix keyboard input no. merchandise, the system through a series of analytical processing, the output of goods number, quantity, unit price, total price of such basic information. key words:matrix keyboard character lcd ferroelectric memory i2c 目

6、录 一一、引言、引言 .1 1 (一)本设计的背景.1 (二)本设计的目的和意义.1 二、总体方案设计二、总体方案设计 .2 2 (一)方案设计.2 (二)方案论证与选择.2 三、系统硬件电路设计三、系统硬件电路设计 .4 4 (一)单片机及其外围电路设计.4 (二)键盘电路的设计.5 (三) 、显示电路的设计.6 (四)存储器电路的设计.10 (五)串行通信接口电路的设计.12 四、系统软件程序设计四、系统软件程序设计 .1414 (一)单片机内部数据处理程序.14 (二)键盘处理程序.15 (三)lcd 液晶显示程序 .16 (四)串口通信程序.17 (五)存储器程序.18 五、设计总结五

7、、设计总结 .1919 六、致谢六、致谢 .1919 附录附录 .2020 附录一 硬件原理图.20 附录二 硬件 pcb 图.21 附录三 原程序代码.22 参考文献参考文献 .3030 一、引言、引言 (一)本设计的背景 当前,单片机被广泛地应用于人们生活的各个领域。单片机实际就是一台微 型计算机,虽然功能没有普通的计算机那么强大,可是它的体积很小,在很多场 合下普通计算机不能完成的工作,单片机却能出色的完成。单片机是一种集成电 路芯片,采用超大规模技术把具有数字处理能力(如算术运算,逻辑运算,数据 传送,中断处理)的微处理器(cpu) ,随机存取数据存储器(ram) ,只读程序 存储器(

8、rom) ,输入输出电路(i/o 口) ,可能还包括定时计数器,串行通信口 (sci) ,显示驱动电路(lcd 或 led 驱动电路) ,脉宽调制电路(pwm) ,模拟 多路转换器及 a/d 转换器等电路集成到一块单块芯片上,构成一个最小然而完善 的计算机系统。由此来看,单片机有着微处理器所不具备的功能,它可单独地完 成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。单片机在外 观上与常见的集成电路块一样,体积很小,多为黑色长条状,条状两侧各有一排 金属引脚,可与外电路连接。只需在电路中添加少许元器件,通过编写程序就可 以实现多种功能的单片机自动控制。比如说,单片机接上键盘可以进行信

9、号输入; 接上显示器可以实现数据显示;接上喇叭可以实现声音输出等等。由于单片机体 积小巧、功能强大、应用灵活、价格便宜,所以应用十分广泛。 随着人们的生活水平的不断提高,对各种围绕人们生活圈的设备要求也是越 来越高,同时随着工业化大发展,一切家用设备、工业设备和商业设备都要求智 能化,傻瓜化,比如说数码相机,全自动洗衣机,电冰箱等;工业自动化设备, 那就是太多了,数控机床,智能化生产线等等;商业设备也是一样,自动取款机, 自动条码检测系统,自动收款机等等。伴随着人们生活水平的提高,人们所需要 的必须品也越来越多,各种规模的超市也数不胜数,超市里的商品品种和数量也 太多,以致于不可能完全用人来管

10、理。本设计正是基于此,研究超市现在流行的 简易收款机。 (二)本设计的目的和意义 超市收款机的主要任务就是,将各种商品的基本信息存贮起来,当识别到外 部输入的商品后,自动调出相关信息,比如说,商品的名称,商品货号,商品单 价,商品数量。通过用单价来乘上相应的商品的数量,计算出商品总价,来达到 收款的目的,完成整个收款的过程。根据上述,本设计的目的就是要完成超市收 款机简单的基本信息存贮,键盘输入数据,显示器显示相关内容,数据能够和 pc 机通信的功能。 二、总体方案设计 (一)方案设计 总体电路设计应该完成五个部分电路:1、单片机及外围电路,2、键盘电路, 3、显示电路,4、存储器电路,5、串

11、行通信接口电路。单片机采用较流行的八 位机 at89c51,根据内部的特性,完全能满足功能要求;因为需要输入的数字量 比较多,所以键盘采用 4x4 矩阵键盘;显示器使用液晶显示器;存储器采用铁电 存储器,操作方便,可靠,掉电可保存数据。图 1 为电路组成框图。 单 片 机 at89c51 矩阵 键盘 数据 存储器 lcd 显示器 串行 通信口 图 1 系统组成框图 (二)方案论证与选择 1键盘模块的选择 键盘的作用有两个,一是输入数据,二是功能操作。基于此,有很多种方案 实现这一操作。 方案一、采用直接式独立按键操作。这种方案的操作过程,就是直接从单片 机 i/o 口引出通上拉电阻,接一按键,

12、当按键按下时,单片机该端口为“0” ,单 片机通过对此端口逻辑“0”判断,来完成按键的识别,达到数据的输入,功能 的实现。从这一过程可知,完成任务需要单片机很多 i/o 口,花费了很多 cpu 资 源,此种方案不可取。 方案二、矩阵键盘。矩阵键盘,这里采用 4x4 矩阵键盘,一共有 16 组情况, 实现的方法也是利用单片机的 i/o 口,通过上拉电阻相接,4x4 正好用到了单片 机一个端口。采用这种方案既节约资源又方便,而且能够满足本设计的需要。 综上所述,在本设计中采用方案二。 2显示电路模块的选择 显示电路的主要任务是反应出操作结果和相关商口的信息。根据此,有四种 方案可完这一工作。 方案

13、一,可用七段共阳极 led 数码显示,将商口名称、单价等显示出来,可 以完成,将多个 led 数码管的段选线相应并联在一起,由一个 8 位 i/o 口控制, 而各位的共阳极或共阴极分别由相应的 i/o 口线控制,实现各位的分时选通,这 就是动态扫描显示方式,采用动太扫描显示方式,每一位 led 的选通时间为 1- 2ms。这个时间不能太短,因为发光二极管从导通到发光有一定的延时,导通时 间太短,发光太弱人眼无法看清,这个时间也不能太长,否占用 cpu 时间太长, 由于人眼有视觉暂留现象,只要每一位显示时间足够短,就能够造成多位同时显 示的假象,每一位显示的时间间隔不能超过 20ms,若时间间隔

14、太长,就会造成闪 烁现象,采用动态扫描方式,可降低功率消耗。此系统,所需数码管较多,操作 麻烦,并且不直观,当然其发光数码管价格较便易。在本系统中,此方案不可取。 方案二,用 led 数码管矩阵方式显示,这种方案的显示的原理和方案一都差 不多,用 16x16 点阵排列,将字型分成上下两个半部,上半部 16 列,每列用一 个字节表示(8 个点) ,下半部也是 16 列,每列也用一个字节表示(8 个点) ,因 此每个字需要 32 个字节来表示。当然这样主就可以显示汉字,但时和单片机相 连较为复杂,本系统要许多块这样的 16x16 点阵,同时这种 led 点阵方式显示, 造价较高,作为本电路,也是不

15、可取的。 方案三,采用带中文字库的 lcd 液晶显示器来完成显示,128x64 这种显示器 作为本系统设计,当然最好。便考虑到系统成本的问题,带中文字库的 lcd 价格 一般都比较贵,采用这种方案,势必会增加设计成本。本文也不采用这种方案。 方案四,采用两行字符型显示器,这种显示器,用英文显示相关信息,操作 方便,价格又较适中,二十多元钱一块,作为本设计,是最合适不过。 因此,结合上述方案,在本设计中,采用两行字符型 1602 显示器。 3存储器电路模块的选择 存储器的作用在本设计中主要起到基本商品信息的存储,和最后商品的出入 信息的存贮。完成这一项工作方案也是多种多样的。 方案一,用紫外线存

16、储器 rom,这个存储器操作不方便,同时,本设计的数据 是不断变化的,因此这种方案不可取。 方案二,可以用海量存贮器来完,当然这个完全是可行的,掉电后信息也不 会掉失。它具有低功耗、大容量、擦写速度快、可整片或分扇区在系统编程、擦 除等特点。并且可由内部嵌入的算法完成对芯片的操作,因而在各种嵌入式系统 中得到了广泛的应用。作为一种非易失性存储器,它在系统中通常用来存放程序 代码。这种存贮器当然很好,但是,价格较贵,同时和本设计的单片机也不容易 实现接口,因为数据线和地址较复杂。 方案三,采用串行铁电存贮器,可在系统中读写,掉电可保存数据,用 i2c 总线进行操作,因此需用的单片机端口较少,站用

17、 cpu 资源较少,同时价格也不 贵,美中不足之处就是存贮容量没有海量存贮器大。 根据上述三种方案,兼顾价格、容量和可操作性,本设计选用第三种方案, 也就是用串 e2rom。 4串行通信接口电路的选择 串行通信接口标准经过使用和发展,目前已经有几种。但都是在 rs-232 标 准的基础上经过改进而形成的。所以,以 rs-232c 为主来讨论。rs-323c 标准是 美国 eia(电子工业联合会)与 bell 等公司一起开发的 1969 年公布的通信协议。 它适合于数据传输速率在 020000b/s 范围内的通信。这个标准对串行通信接口 的有关问题,如信号线功能、电器特性都作了明确规定。由于通信

18、设备厂商都生 产与 rs-232c 制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信 接口中广泛采用。这里使用 rs-232c。 三、系统硬件电路设计 本系统由五部分组成:单片机、键盘处理电路、显示器电路、存储器电路、 串行通信口等。下面将详细讨论这几部分电路的设计过程。 (一)单片机及其外围电路设计 微处理电路采用 aemel 公司的单片机,价格便宜、功能齐全、可靠性高、 使用普遍。at89c51 单片机是 atmel 公司 8 位单片机系列产品之一,是一种 40 引脚双列直插式芯片。at89c51 有 4k flash;128 字节 ram;32 条 i/o 引 线;2 个 16

19、 位定时器/计数器;一个 5 向量 2 级中断结构;一个全双工串行口; 一个片内震荡器和时钟电路。此外,at89c51 是用可降到 0 频率的静态逻辑操作 设计的,并支持两种可选的软件节能工作方式。空闲方式停止 cpu 工作,但允 许 ram、定时器/计数器、串行口和中断系统继续工作。掉点方式保持 ram 内 容,但振荡器停止工作,并禁止所有其他部件的工作直到下一个硬件复位。它含 有 4kb 可反复烧录及擦除内存和 128 字节的 ram,有 32 条可编程控制的 i/o 线, 5 个中断源,指令与 mcs-51 系列完全兼容。选用它作为核心控制新片,可使电 路极大地简化,而且程序的编写及固化

20、也相当方便、灵活。 主要性能:4kb 可重编程 flash 存储器;耐久性:1000 次写/擦除;2.76v 的操作范围;全静态操作:0hz24mhz;2 极加密程序存储器;1288 位内部 ram;32 条可编程 i/o 引线;2 个 16 位定时器/计数器;6 个中断源;可编程串行 uart 通道;直接 led 驱动输出;片内模拟比较器;低功耗空载和掉电方式。 本系统设计电路图 2 所示: 图 2 单片机电路图 如图 2 所示,p0 口为 lcd 的八根数据总线,p2.5、p2.6、p2.7 三根线为 lcd 的读写控制线和使能端。p3.6、p3.7 为存贮器的两根总线,主要用于数据的 读

21、取与存贮。p1 口为矩阵键盘列线与行线的接口,实现 4x4 键盘,完成相关的 工能操作,比如说,数字的输入,功能操作等。xtal1 和 xtal2 口接外部晶体 振荡器,保证单片机内部各部分有序的工作。p3.0、p3.1 口接串行端口,分别作 串行数据的接收端和发送端。rst 与 vss 之间连接一个下拉电阻,与 vcc 之间连 接一个电容,目的是保证可靠的复位。 (二)键盘电路的设计 这里采用的是矩阵键盘。如图 3 所示: 图 3 矩阵键盘实物图 矩阵键盘的实现可采用查询的办法,也可以采用中断的方法。4x4 的意思即: 4 根列线,4 根行线,列线通上拉电阻接到电源上,因此无按键按下时,各列

22、线 均为高电平。当行线分别输出低电平时,有健按下,相应的列线上会出现低电平。 根据此原理,cpu 对整个键盘进行扫描。所谓扫描,即 cpu 不断轮流对行线置 低电平,然后检查列线输入状态,确定按键情况。电路如图 4 所示: 图 4 矩阵键盘图 如图 4 所示,4x4 矩阵键盘,一共有 16 个按键,用单片机的 p1 口,其内部 有上接电阻,在此可不用,在确定有按键按下后,先把 h1 置为低电平,其它都 为高电平,再读入 h5、h6、h7、h8 的值。若 h5 为“1” ,其它都为“0” ,则 “f”按下。依次类推,当 h8 为“1” ,其它都为“0” ,则“3”按下。根据此道 理,可判断,哪个

23、按键按下。本设计就是根据此,判断数据的输入和各功能的实 现。按键“a” 、 “b” 、 “c” 、 “d” 、 “e” 、 “f”为功能键,其它的为数字键。 (三) 、显示电路的设计 这里采用的是两行字符型 1602 显示器,下面详细介绍 1602 及其使用。 1.字符型点阵式 lcd 液晶显示屏 lcd 的应用很广泛,简单如手表上的液晶显示屏,仪表仪器上的液晶显示器 或者是电脑笔记本上的液晶显示器,都使用了 lcd。在一般的办公设备上也很常 见,如传真机,复印机,以及一些娱乐器材玩具等也常常见到 lcd 的足迹。 本设计要介绍的 lcd 为字符型点阵式 lcd 模块(liquid cryst

24、al display module)简称 lcm,或者是字符型 lcd。 字符型液晶显示模块是一类专门用于显示字母,数字,符号等的点阵式液晶 显示模块。在显示器件上的电极图型设计,它是由若干个 5*7 或 5*11 等点阵符 位组成。每一个点阵字符位都可以显示一个字符。点阵字符位之间有一空点距的 间隔起到了字符间距和行距的作用。目前市面上常用的有 16 字*1 行,16 字*2 行, 20 字*2 行和 40 字*2 行等的字符模块组。这些 lcm 虽然显示字数各不相同,但 是都具有相同的输入输出界面。本设计将以 wintech 16*2 字符型液晶显示模块 wm-c1602n 为例,详细介绍

25、字符液晶显示模块的应用技术。 一般字符 lcd 模块的控制器为日本日立新华通讯社的 hd44780 及其替代集 成电路,驱动器为 hd44100 及其替代的集成电路。 2. lcd 液晶显示屏的内部结构 液晶显示模块 wn-c1602n 的内部结构可以分成三部分:lcd 挖掘器、lcd 驱动器和 lcd 显示装置。如图 5 所示: 图 5 lcd 内部结构图 目前大多数的 lcd 液晶显示器的控制器都有采用一颗型号为 hd44780 的集 成电路作控制器。hd44780 是集控制器,驱动器于一体,专用于字符显示控制驱 动集成电路。hd44780 是字符型液晶显示控制器的代表电路,hd44780

26、 集成电路 的特点有: (1) hd44780 不仅作为控制器而且还具有驱动 40*16 点阵液晶像素的能力, 并且 hd44780 的驱动能力可通过外接驱动器扩展 360 列驱动。 (2)hd44780 的显示缓冲区及用户自定义的字符发生器 cgram 全部内藏 在芯片内。 (3)hd44780 具有适用于 m6800 系列 mpu 的接口,并且接口数据传输可 为 8 位数据和 4 位数据传输两种方式。 (4)hd44780 具有简单而功能较强的指令集,可实现字符移动,闪烁等显 示功能。 由于 hd44780 的 ddram 容量所限,hd44780 可控制的字符高达每行 80 个字,也就是

27、 5*80=400 点,hd44780 内藏有 16 路行驱动器和 40 路列驱动器, 所以 hd44780 本身就具驱动有 16*40 点阵 lcd 能力(即单行 16 个字符或两行 8 个字符) 。如果在外部加一 hd44100 外扩展多 40 路/列驱动,则可驱动 16*2lcd。 hd44780 内藏的字符发生存储器(cgrom)已经存储了 160 个不同的点阵字符 图形,如表 1 所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、 和日文假名等,每一个字符都有一个固定的代码。比如数字“1”的代码是 00110001b(31h) ,又如大写的英文字母“a”代码是 010000

28、01b(41h) 。 表 1 wm-c1602n 的 cgram 字符图形代码对应表 3. lcd 的应用 液晶显示模块 lcd1602 在显示“1”时,则只需将 ascii 码 31h 存入 ddram 即 可。显示时模块把地址 31h 中的点阵字符图形显示出来,就能看到数字“1”了。 ddram 有 80bytes 空间,共可显示 80 个字,地址与实际显示位置的排列顺序跟 lcd 的型号有关。 1602 采用标准的 16 脚接口,如表 2 所示。其中 vss 为地电源,vdd 接 5v 正 电源,vl 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比 度最高,对比度过高时会

29、产生“鬼影”,使用时可以通过一个 10k 的电位器调整 对比度。rs 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 rw 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 rs 和 rw 共同 为低电平时可以写入指令或者显示地址,当 rs 为低电平 rw 为高电平时可以读忙 信号,当 rs 为高电平 rw 为低电平时可以写入数据。e 端为使能端,当 e 端由高 电平跳变成低电平时,液晶模块执行命令。d0-d7 为 8 位双向数据线。 表 2 lcd1602引脚说明表 编号符号引脚说明编号符号引脚说明 1vss电源地9d2data i/o 2vdd电源正极10d3dat

30、a i/o 3vl液晶显示偏压信号11d4data i/o 4rs数据/命令选择端(h/l)12d5data i/o 5r/w读/写选择端(h/l)13d6data i/o 6e使能信号14d7data i/o 7d0data i/o15bla背光源正极 8d1data i/o16blk背光源正极 本设计电路如图 6 所示: 图 6 lcd1602 电路连接图 如图 6 所示,有八根数据线与单片机的 p0 口相连,三根读写控制线,背光调 节电位器,可调节背光亮度。 (四)存储器电路的设计 本设计采用串行铁电存贮器 fram,采用 i2c 总线工作方式。fram 铁电存 储器的核心技术是美国 r

31、amtron 公司研制的铁电晶体材料。这一特殊材料使得铁 电存储产品同时拥有随机存储器(ram)和非易失性存储器 (eprom、e2rom、flash)的特性。 1. 铁电晶体材料的工作原理 当把电场加载到铁电晶体材料上,晶阵中的中心原子会沿着电场方向运动, 达到稳定状态,一个状态存储逻辑 0,另一个状态存储逻辑 1。中心原子在常温 下没有电场的作用时停留在此状态达一百年以上,铁电存储器不需要定时刷新, 断电情况下能保存数据不变。由于在整个物理过程中没有任何原子碰撞,铁电存 储器(fram)拥有高速读写,超低功耗和无限次写入等特性。 2. 存储器的基础知识 传统存储器有两大类:易失存储器(vo

32、latile memory)和非易失存储器(non- volatile memory) ,易失性存储器像 sram 和 dram 存储器在没有电源的情况下 都不能保存数据,但这种存储器拥有高性能,存取速度快和无限次的写入次数, 易用等优点。非易失性存储器像 eprom、e2rom 和 flash 能在断电后保存数据 不变,但由于所有这些存储器均起源只读存储器(rom)技术,因此它们都有写 入速度慢,写入次数有限和使用时功耗大等缺点。 表 3 是 16k 位铁电存储器(fram)的性能和 16k 位 e2rom 性能比较情况, fram 第一个最明显的优点是:fram 可以跟随总线速度写入,无需

33、任何等候时 间,而 e2rom 需等几毫秒(ms)才能写入一下数据。fram 第二大优点是几乎 无限次的写入。e2rom 的写入次数是每百万次(10 的 6 次方) ,而新一代的铁电 存储器(fram)却是一亿亿次(10 的 6 次方)写入寿命。fram 的第三大优点 是超低功能。e2rom 的慢速和高电流写入一个字节令它需要高出 fram2500 倍 的能量。 表 3 性能比较表 型号待机电流写入电流写入次数字节写入时间整片写入时间 fm2401610ua150us1e1372us47ams at24c1618ua3ma1e610ms1.3s st24c16300ua3ma1e610ms1.

34、3s 24aa16100ua3ma1e610ms1.3s x24c16150ua3ma1e610ms1.3s 3. 铁电存贮器 fram 的应用 fram 无限次快速擦写和非易性的特点,令它的系统工程师可以把现在在电 路上分离的 sram 和 e2rom 两种存储器整合到一个 fram 里,为整个系统节 省了功耗,降低了成本,减小了体积,同时增加了整个系统的可靠性。 典型应 用包括:仪器仪表、工业控制、家用电器、复印机、打印机、机顶盒、网络设备、 游戏机、计算机等等。 4. i2c 总线知识 该存贮器采用 i2c 总线方式工作,在软件操作时,就得用 i2c 总线方式进行读 写。i2c 总线是由

35、 philips 公司发明的一种高性能芯片间串行同步传输总线。与 spi、microwire 接口不同,它仅仅需要两根信号线(串行数据线 sda 和串行时 钟线 scl) ,就实现了完善的双工同步数据传送,能够极其方便地构成多机系统 和外围器件扩展系统。i2c 总线采用了器件地址的硬件设置方法,通过软件寻址 完全避免了器件的片选线寻址端,从而使硬件系统具有更简单、更灵活的扩展方 法。 鉴于 i2c 总线的众多功能优越性,目前,以 philips 公司为主的许多著名半 导体制造公司,纷纷研制出了大量的种类繁多的(已经达数百种型号)带有 i2c 总线硬件接口的单片机、通用外围器件,例如 ram、e

36、eprom、nvram、i/o、adc、dac、日历时钟 rtc、led 驱动器、 lcd 驱动器、温度传感器等等。另外,还开发了面向一些特殊应用系统中专用配 套的 i2c 总线芯片,例如无线电、无绳电话、移动手机、电视机、音响系统、家 庭影院等系统中的双音多频(dtmf)拨号器、语音合成器、数字调谐器、编码 器、解码器、图像处理器、频率合成器、音调控制器、立体声处理器等等。 本设计电路如图 7: 图 7 存储器电路图 如图 7 所示,电路用 24c64 存贮器,a0、a1、a2 为地址选择端,主要作用 是用于级连,在总线上挂接多个这样的存贮器时使用,vss 为接地端,vcc 为电 源正极连接

37、端,wp 为写保护控制端,scl、sda 分别为 i2c 总线的串行时钟连 接端和串行数据连接端,数据的写入与读出就是通过这个端两个端操作的,同时 电路中在这两个端口加了两只上接电阻,作用是由于存贮器内部是采用开漏输出 的。 (五)串行通信接口电路的设计 串行通信接口标准经过使用和发展,目前已经有几种。但都是在 rs-232c 标 准的基础上经过改进而形成的。rs-323c 标准是美国 eia(电子工业联合会)与 bell 等公司一起开发的 1969 年公布的通信协议。它适合于数据传输速率在 020000b/s 范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、 电器特性都作了明确

38、规定。由于通行设备厂商都生产与 rs-232c 制式兼容的通信 设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。 rs-232c 标准(协议)的全称是 eia-rs-232c 标准,其中 eia(electronic industry association)代表美国电子工业协会,rs(ecommeded standard)代 表推荐标准,232 是标识号,c 代表 rs232 的最新一次修改(1969),在这之前, 有 rs232b、rs232a。它规定连接电缆和机械、电气特性、信号功能及传送过程。 常用物理标准还有有 eiars-232-c、eiars-422-a、eiars-

39、 423a、eiars-485。 这里只介绍 eiars-232-c(简称 232,rs232)。 例如,目前在 ibm pc 机上的 com1、com2 接口,就是 rs-232c 接口。 1. rs-232c 电气特性 rs-232c 标准(协议)的全称是 eia-rs-232c 标准,其中 eia(electronic industry association)代表美国电子工业协会,rs(ecommeded standard)代 表推荐标准,232 是标识号,c 代表 rs232 的最新一次修改(1969),在这之前, 有 rs232b、rs232a。它规定连接电缆和机械、电气特性、信号

40、功能及传送过程。 常用物理标准还有有 eiars-232-c、eiars-422-a、eiars- 423a、eiars-485。 这里只介绍 eiars-232-c(简称 232,rs232)。 例如,目前在 ibm pc 机上的 com1、com2 接口,就是 rs-232c 接口。 eia-rs-232c 对电器特性、逻辑电平和各种信号线功能都作了规定, 如下: (1)在 txd 和 rxd 上,逻辑 1(mark)=-3v-15v; (2)逻辑 0(space)=+315v; (3)在 rts、cts、dsr、dtr 和 dcd 等控制线上; (4)信号有效(接通,on 状态,正电压)

41、+3v+15v; (5)信号无效(断开,off 状态,负电压)=-3v-15v。 以上规定说明了 rs-323c 标准对逻辑电平的定义。对于数据(信息 码):逻辑“1”(传号)的电平低于-3v,逻辑“0”(空号)的电平告 语+3v;对于控制信号;接通状态(on)即信号有效的电平高于+3v,断开 状态(off)即信号无效的电平低于-3v,也就是当传输电平的绝对值大于 3v 时,电路可以有效地检查出来,介于-3+3v 之间的电压无意义,低于- 15v 或高于+15v 的电压也认为无意义,因此,应保证电平在(315)v 之 间。 2. 连接器的机械特性: 连接器:由于 rs-232c 并未定义连接器

42、的物理特性,因此,出现了 db-25、db-15 和 db-9 各种类型的连接器,其引脚的定义也各不相同。下 面分别介绍两种连接器。 (1)db-25: pc 和 xt 机采用 db-25 型连接 db-25 连接器定义了 25 根信号线,分为 4 组: 异步通信的 9 个电压信号(含信号地 sg) 2,3,4,5,6,7,8,20,22; 20ma 电流环信号 9 个(12,13,14,15,16,17,19,23,24) ; 空 6 个(9,10,11,18,21,25) ; 保护地(pe)1 个,作为设备接地端(1 脚) 。 (2)db-9 连接器: 在 at 机及以后,不支持 20ma

43、 电流环接口,使用 db-9 连接器,作为提供多 功能 i/o 卡或主板上 com1 和 com2 两个串行接口的连接器。它只提供异步通信 的 9 个信号。db-25 型连接器的引脚分配与 db-25 型引脚信号完全不同。因此, 若与配接 db-25 型连接器的 dce 设备连接,必须使用专门的电缆线。电缆长度: 在通信速率低于 20kb/s 时,rs-232c 所直接连接的最大物理距离为 15m(50 英尺) 。 最大直接传输距离说明:rs-232c 标准规定,若不使用 modem,在码元畸变 小于 4%的情况下,dte 和 dce 之间最大传输距离为 15m(50 英尺) 。可见这个最 大

44、的距离是在码元畸变小于 4%的前提下给出的。为了保证码元畸变小于 4%的要 求,接口标准在电气特性中规定,驱动器的负载电容应小于 2500pf。 3. rs-232c 的接口信号 rs-232c 规标准接口有 25 条线,4 条数据线、11 条控制线、3 条定时线、7 条备用和未定义线。在本设计中电路连接图如图 8 所示: 图 8 串行通信口连接图 如图 8 所示,max232 中电平转换芯片。将差分电平,转换成单片机等可识 别的 ttl 电平,电路中 rxd、txd 两根线分别和单片机相连 p3 口的串行通讯 口相连,rxd 为数据据接收端,单片机通过这个端口读取 pc 机等送来的信号, t

45、xd 为数据发送端口,主要向 pc 等设备发送信号。图右边还有一个 9 针串行通 信口,主要和 pc 机相连。 四、系统软件程序设计 本设计程序共分成五个部分:键盘处理程序、lcd 显示程序、单片机内部数 据处程序、存贮程序、串口和 pc 机通信程序。 (一)单片机内部数据处理程序 单片机内部数据处理程序,即是系统的主程序。当插上电源后,单片机对系 统进行一系列的初始化,包括 lcd 显示初始化,串口初始化和菜单的初始化, 以及判断有无按键按下,并做出相应的处理。主程序流程图如图 9: 图 9 主程序流程图 (二)键盘处理程序 键盘处理程序,主要作用就是通过用户的按键识别,判断当前的系统任务,

46、 通过前面的硬件分析,采用 4x4 矩阵,一共十六组状态。一方面是数字的输入输 出,另一方面的一系列的功能操作。经过键盘扫描程序扫描是否有按键按下,如 果有再判断是数字键还是功能键,并做出相应的处理;如果没有则返回继续检查 有克按键按下。键盘处理程序流程图如图 10 所示。 图 10 键盘处理程序流程图 (三)lcd 液晶显示程序 lcd 处理程序,完成信息的显示,包括商品号,单价,数量,总计金额等这 些资料。lcd 根据键盘处理程序中按键的性质(数字键还是功能键)来操作。流 程图如图 11 图 11 lcd 显示流程图 (四)串口通信程序 串口通信程序,完成将完交的数量,以及总金额,卖出与进

47、入的商品告知 pc 机完成汇总。流程图如图 12: 图 12 串口通信流程图 (五)存储器程序 存贮器程序,完成对 24c64 的数据读取与写入,同时要有掉电保存的 功能。流程图如图 13: 图 13 存储器流程图 五、设计总结 本系统的制作,性能和效果都比较好,通过键盘有操作,lcd 直观的显示, 和串口的通信及信息的存贮都能达到设计的要求,实现超市简易的收款工作。本 设计的成本较低,操作简单。但是,本设计也存在上些不足,比如 lcd 字符型液 晶显示器不带有中文字库,不能显示中文,这样显示的内容不是很直观。再如, 系统没有留出打印口,不能打印出凭条等等。不过,在本设计的基础上很容易通 过改

48、善设备,对系统进行升级,使功能更齐全,设计更完美。 通过这次的毕业设计,我体会到应该掌握丰富的理论知识,理论知识是设计 的前提。但同时又决不能局限于理论。在设计过程中,深深感受到自己在对一些 器件的了解上,还存在很大差距,对他们的功能,参数都不是太熟悉。但是通过 这次理论与实际的结合之后,认识比以前有不少提高。 六、致谢 本毕业设计,在设计过程中,从理论到实践,从画框图,到具体电路,从学 习认识元器件,到最后完成一个系统,从中学习了许多新的专业知识,同时也学 会了许多社会人文知识。在此,对我毕业设计提拱指导帮助的所有老师,表示是 忠心的感谢,对在设计过程中遇到困难时,得到同仁们帮助的朋友、同学

49、,表示 诚挚的谢意!真诚感谢成都学院的领导和老师,感谢电信教研室的各位老师,他 们在我平常的学习与日常生活中,给了我许多关心与帮助。在此我表示深深的感 谢! 附录 附录一 硬件原理图 附录二 硬件 pcb 图 附录三 原程序代码 1、主程序代码 #include unsigned char w,cc=0; unsigned char str16=0;/液晶显示显存 #include lcd.h /包含液晶显示器的一些操作函数 #include iic.h /24c64 的读写函数 #include urat.h /串行口的操作函数 #include manage.h /按键功能函数 #incl

50、ude key4.h /按键检测和键值读取函数 /bit w24c64,r24c64; void main() initlcd(); /初始 lcd initurat(); /初始串口 menu(); /初始菜单 /inorder(0 xc0); /indata(0 x38);/测试 lcd 第二行是否显示 while(1) key1(); if(w!=0) /如果有键按下则读键值 key2(w); /读键值 /*结束*/ 2、键盘代码 unsigned char w1,w2; void key1(void) p1=0 x0f; w1=p1 if(w1!=0 x0f) / 按键 delay(1

51、00); if(w1!=0 x0f) /再一次检测按键 p1=0 xf0; w2=p1 w=(w1 | w2); else w=0; /未按键 /- /unsigned char void key2(unsigned char j) unsigned char i; switch(j) /-以下为数字键 case 0 x77: i=0 x30;indata(i);strcc+=0;break; case 0 x7b: i=0 x31;indata(i);strcc+=1;break; case 0 x7d: i=0 x32;indata(i);strcc+=2;break; case 0 x7

52、e: i=0 x33;indata(i);strcc+=3;break; case 0 xb7: i=0 x34;indata(i);strcc+=4;break; case 0 xbb: i=0 x35;indata(i);strcc+=5;break; case 0 xbd: i=0 x36;indata(i);strcc+=6;break; case 0 xbe: i=0 x37;indata(i);strcc+=7;break; case 0 xd7: i=0 x38;indata(i);strcc+=8;break; case 0 xdb: i=0 x39;indata(i);str

53、cc+=9;break; /以下为功能键 case 0 xdd: manage_key1();i=0;break;/a 写 24c64 case 0 xde: manage_key2();i=0;break;/b 读 24c64 case 0 xe7: manage_key3();i=0;break;/c 串行通讯,发送数据 case 0 xeb: manage_key4();i=0;break;/d 串行通讯,接受数据 case 0 xed: manage_key5();i=0;break;/e 显示计算结果 case 0 xee: manage_key6();i=0; /f 清屏 whil

54、e(1) /等待按键的释放 key1(); if(w1=0 x0f) delay(10); if(w1=0 x0f) break; /*结束*/ 3、液晶显示器代码 #include #define rs p2_5 /定义 lcd 控制口 #define rw p2_6 #define e p2_7 #define xs p0 void busy(void) /检查忙信号 _nop_(); do xs=0 xff; rs=0; rw=1; e=0; _nop_(); e=1; while(p0_7); void inorder(unsigned char order)/写命令 xs=order

55、; rs=0; rw=0; e=0; busy(); e=1; void indata(unsigned char datar) /写数据 xs=datar; rs=1; rw=0; e=0; busy(); e=1; void initlcd (void) inorder(0 x01); inorder(0x38);/8 位 2 行 5x7 点阵 inorder(0x0f);/显示器开,光标开,闪烁开 inorder(0x06);/文字不动,光标自动右移 inorder(0 x01);/清显示 /=显示处理程序= void xianshi(void) unsigned long x,y,z,

56、sum; x=(str0*100+str1*10+str2); /得到“货号” y=(str3*1000+str4*100+str5*10+str6); /得到“单价”值(3 位数) z=(str7*100+str8*10+str9); /得到“数量”值(3 位数) sum= y*z; /总价=单价*数量 str10=sum/100000; /十万位 str11=(sum%100000)/10000; /万位 str12=(sum%100000)%10000)/1000; /千位 str13=(sum%100000)%10000)%1000)/100; /百位 str14=(sum%10000

57、0)%10000)%1000)%100)/10; /十位 str15=(sum%100000)%10000)%1000)%100)%10; /个位 /*菜单显示*/ /在第一行显示 no. price amount sum(¥) void menu(void) inorder(0 x80); /光标指向 lcd 第二行首地址 indata(0 x4e); /no. indata(0 x4f); indata(0 x20); /空格 indata(0 x44); /price indata(0 x4a); indata(0 x20); /空格 indata(0 x20); /空格 indata(

58、0 x53); /amount indata(0 x4c); indata(0 x20); /空格 indata(0 x53); /sum(¥) indata(0 x75); indata(0 x6d); indata(0 x28); indata(0 x5c); indata(0 x29); inorder(0 xc0);/光标指向 lcd 第二行首地址 /*结束*/ 4、串行口程序代码 #define uchar unsigned char void initial(); void sendd(); void received(); /*串行口初始化*/ void initurat(voi

59、d) tmod=0 x20; tl1=0 xe8; th1=0 xe8; scon=0 x50; tr1=1; /*发送数据*/ void sendd( ) uchar i; for(i=0;i16;i+) ti=0; sbuf=stri; while(ti=0); /*接收数据*/ void received() uchar i; /while(i=sbuf)!=0 x01); / ri=0; while(ri=0); for(i=0;i16;i+) ri=0; stri=sbuf; while(ri=0); /*结束*/ 5、24c64 的读写程序代码 #include #define u

60、char unsigned char #define sda p3_6 /定义 sda 口 #define scl p3_7/定义 scl 口 /- void delay(uchar a)/24c64 和其他一些地方需要的延时函 uchar b,c; for(b=0;ba;b+) for(c=0;c225;c+); /- void start(void) /开始总线的活动 sda=1; scl=1; _nop_();_nop_(); _nop_(); _nop_(); sda=0; _nop_();_nop_();_nop_(); _nop_(); /- void stop(void) /停止

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论