基于单片机的简易收款机的设计

上传人:仙*** 文档编号:68134828 上传时间:2022-04-01 格式:DOC 页数:34 大小:1.08MB
收藏 版权申诉 举报 下载
基于单片机的简易收款机的设计_第1页
第1页 / 共34页
基于单片机的简易收款机的设计_第2页
第2页 / 共34页
基于单片机的简易收款机的设计_第3页
第3页 / 共34页
资源描述:

《基于单片机的简易收款机的设计》由会员分享,可在线阅读,更多相关《基于单片机的简易收款机的设计(34页珍藏版)》请在装配图网上搜索。

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

2、采用Atmel公司1989年生产的AT89C51单片机为核心控制器,完成简易超市收款机的基本功能。通过矩阵键盘输入商品号,系统经过一系列的分析处理,输出商品号,数量,单价和总价等基本信息.关键词: 矩阵键盘 字符型液晶显示 铁电存贮 I2CSimple cash register based on single-designAbstract: With the development of global information, peoples living standards have also continued to improve, people need more and more

3、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 settlement of receivables design artificial supermarket. through the 4X4 matrix

4、 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 functions of supermarket cash registers, through the matrix keyboard input No.

5、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目 录一、引言1(一)本设计的背景1(二)本设计的目的和意义1二、总体方案设计2(一)方案设计2(二)方案论证与选择2三、系统硬件电路设计4(一)单片机及其外围电

6、路设计4(二)键盘电路的设计5(三)、显示电路的设计6(四)存储器电路的设计10(五)串行通信接口电路的设计12四、系统软件程序设计14(一)单片机内部数据处理程序14(二)键盘处理程序15(三)LCD液晶显示程序16(四)串口通信程序17(五)存储器程序18五、设计总结19六、致谢19附录20附录一 硬件原理图20附录二 硬件PCB图21附录三 原程序代码22参考文献30一、引言(一)本设计的背景当前,单片机被广泛地应用于人们生活的各个领域。单片机实际就是一台微型计算机,虽然功能没有普通的计算机那么强大,可是它的体积很小,在很多场合下普通计算机不能完成的工作,单片机却能出色的完成。单片机是一

7、种集成电路芯片,采用超大规模技术把具有数字处理能力(如算术运算,逻辑运算,数据传送,中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。由此来看,单片机有着微处理器所不具备的功能,它可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。单片机在外观上与常见的集成电路块一样,体积很小,多为黑色长条状,条状两侧各有一排金属引脚

8、,可与外电路连接。只需在电路中添加少许元器件,通过编写程序就可以实现多种功能的单片机自动控制。比如说,单片机接上键盘可以进行信号输入;接上显示器可以实现数据显示;接上喇叭可以实现声音输出等等。由于单片机体积小巧、功能强大、应用灵活、价格便宜,所以应用十分广泛。随着人们的生活水平的不断提高,对各种围绕人们生活圈的设备要求也是越来越高,同时随着工业化大发展,一切家用设备、工业设备和商业设备都要求智能化,傻瓜化,比如说数码相机,全自动洗衣机,电冰箱等;工业自动化设备,那就是太多了,数控机床,智能化生产线等等;商业设备也是一样,自动取款机,自动条码检测系统,自动收款机等等。伴随着人们生活水平的提高,人

9、们所需要的必须品也越来越多,各种规模的超市也数不胜数,超市里的商品品种和数量也太多,以致于不可能完全用人来管理。本设计正是基于此,研究超市现在流行的简易收款机。(二)本设计的目的和意义超市收款机的主要任务就是,将各种商品的基本信息存贮起来,当识别到外部输入的商品后,自动调出相关信息,比如说,商品的名称,商品货号,商品单价,商品数量。通过用单价来乘上相应的商品的数量,计算出商品总价,来达到收款的目的,完成整个收款的过程。根据上述,本设计的目的就是要完成超市收款机简单的基本信息存贮,键盘输入数据,显示器显示相关内容,数据能够和PC机通信的功能。二、总体方案设计(一)方案设计总体电路设计应该完成五个

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

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

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

13、数码管较多,操作麻烦,并且不直观,当然其发光数码管价格较便易。在本系统中,此方案不可取。方案二,用LED数码管矩阵方式显示,这种方案的显示的原理和方案一都差不多,用16X16点阵排列,将字型分成上下两个半部,上半部16列,每列用一个字节表示(8个点),下半部也是16列,每列也用一个字节表示(8个点),因此每个字需要32个字节来表示。当然这样主就可以显示汉字,但时和单片机相连较为复杂,本系统要许多块这样的16X16点阵,同时这种LED点阵方式显示,造价较高,作为本电路,也是不可取的。方案三,采用带中文字库的LCD液晶显示器来完成显示,128X64这种显示器作为本系统设计,当然最好。便考虑到系统成

14、本的问题,带中文字库的LCD价格一般都比较贵,采用这种方案,势必会增加设计成本。本文也不采用这种方案。方案四,采用两行字符型显示器,这种显示器,用英文显示相关信息,操作方便,价格又较适中,二十多元钱一块,作为本设计,是最合适不过。因此,结合上述方案,在本设计中,采用两行字符型1602显示器。3存储器电路模块的选择存储器的作用在本设计中主要起到基本商品信息的存储,和最后商品的出入信息的存贮。完成这一项工作方案也是多种多样的。方案一,用紫外线存储器ROM,这个存储器操作不方便,同时,本设计的数据是不断变化的,因此这种方案不可取。方案二,可以用海量存贮器来完,当然这个完全是可行的,掉电后信息也不会掉

15、失。它具有低功耗、大容量、擦写速度快、可整片或分扇区在系统编程、擦除等特点。并且可由内部嵌入的算法完成对芯片的操作,因而在各种嵌入式系统中得到了广泛的应用。作为一种非易失性存储器,它在系统中通常用来存放程序代码。这种存贮器当然很好,但是,价格较贵,同时和本设计的单片机也不容易实现接口,因为数据线和地址较复杂。 方案三,采用串行铁电存贮器,可在系统中读写,掉电可保存数据,用I2C总线进行操作,因此需用的单片机端口较少,站用CPU资源较少,同时价格也不贵,美中不足之处就是存贮容量没有海量存贮器大。 根据上述三种方案,兼顾价格、容量和可操作性,本设计选用第三种方案,也就是用串E2ROM。4串行通信接

16、口电路的选择串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。所以,以RS-232C为主来讨论。RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通信设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。这里使用RS-232C。三、系统硬件电路设计本系统由五部分组成:单片机、键盘处理电路、显示器电路、存储器电路、串行通信

17、口等。下面将详细讨论这几部分电路的设计过程。(一)单片机及其外围电路设计微处理电路采用AEMEL公司的单片机,价格便宜、功能齐全、可靠性高、使用普遍。AT89C51单片机是ATMEL公司8位单片机系列产品之一,是一种40引脚双列直插式芯片。AT89C51有4K FLASH;128字节RAM;32条I/O引线;2个16位定时器/计数器;一个5向量2级中断结构;一个全双工串行口;一个片内震荡器和时钟电路。此外,AT89C51是用可降到0频率的静态逻辑操作设计的,并支持两种可选的软件节能工作方式。空闲方式停止CPU工作,但允许RAM、定时器/计数器、串行口和中断系统继续工作。掉点方式保持RAM内容,

18、但振荡器停止工作,并禁止所有其他部件的工作直到下一个硬件复位。它含有4KB可反复烧录及擦除内存和128字节的RAM,有32条可编程控制的I/O线,5个中断源,指令与MCS-51系列完全兼容。选用它作为核心控制新片,可使电路极大地简化,而且程序的编写及固化也相当方便、灵活。主要性能:4KB可重编程Flash存储器;耐久性:1000次写/擦除;2.76V的操作范围;全静态操作:0Hz24MHz;2极加密程序存储器;1288位内部RAM;32条可编程I/O引线;2个16位定时器/计数器;6个中断源;可编程串行UART通道;直接LED驱动输出;片内模拟比较器;低功耗空载和掉电方式。本系统设计电路图2所

19、示:图2 单片机电路图如图2所示,P0口为LCD的八根数据总线,P2.5、P2.6、P2.7三根线为LCD的读写控制线和使能端。P3.6、P3.7为存贮器的两根总线,主要用于数据的读取与存贮。P1口为矩阵键盘列线与行线的接口,实现4X4键盘,完成相关的工能操作,比如说,数字的输入,功能操作等。XTAL1和XTAL2口接外部晶体振荡器,保证单片机内部各部分有序的工作。P3.0、P3.1口接串行端口,分别作串行数据的接收端和发送端。RST与Vss之间连接一个下拉电阻,与Vcc之间连接一个电容,目的是保证可靠的复位。(二)键盘电路的设计这里采用的是矩阵键盘。如图3所示:图3矩阵键盘实物图矩阵键盘的实

20、现可采用查询的办法,也可以采用中断的方法。4X4的意思即:4根列线,4根行线,列线通上拉电阻接到电源上,因此无按键按下时,各列线均为高电平。当行线分别输出低电平时,有健按下,相应的列线上会出现低电平。根据此原理,CPU对整个键盘进行扫描。所谓扫描,即CPU不断轮流对行线置低电平,然后检查列线输入状态,确定按键情况。电路如图4所示:图4矩阵键盘图如图4所示,4X4矩阵键盘,一共有16个按键,用单片机的P1口,其内部有上接电阻,在此可不用,在确定有按键按下后,先把H1置为低电平,其它都为高电平,再读入H5、H6、H7、H8的值。若H5为“1”,其它都为“0”,则“F”按下。依次类推,当H8为“1”

21、,其它都为“0”,则“3”按下。根据此道理,可判断,哪个按键按下。本设计就是根据此,判断数据的输入和各功能的实现。按键“A”、“B”、“C”、“D”、“E”、“F”为功能键,其它的为数字键。(三)、显示电路的设计这里采用的是两行字符型1602显示器,下面详细介绍1602及其使用。1.字符型点阵式LCD液晶显示屏LCD的应用很广泛,简单如手表上的液晶显示屏,仪表仪器上的液晶显示器或者是电脑笔记本上的液晶显示器,都使用了LCD。在一般的办公设备上也很常见,如传真机,复印机,以及一些娱乐器材玩具等也常常见到LCD的足迹。本设计要介绍的LCD为字符型点阵式LCD模块(Liquid Crystal Di

22、splay Module)简称LCM,或者是字符型LCD。字符型液晶显示模块是一类专门用于显示字母,数字,符号等的点阵式液晶显示模块。在显示器件上的电极图型设计,它是由若干个5*7或5*11等点阵符位组成。每一个点阵字符位都可以显示一个字符。点阵字符位之间有一空点距的间隔起到了字符间距和行距的作用。目前市面上常用的有16字*1行,16字*2行,20字*2行和40字*2行等的字符模块组。这些LCM虽然显示字数各不相同,但是都具有相同的输入输出界面。本设计将以WINTECH 16*2字符型液晶显示模块WM-C1602N为例,详细介绍字符液晶显示模块的应用技术。一般字符LCD模块的控制器为日本日立新

23、华通讯社的HD44780及其替代集成电路,驱动器为HD44100及其替代的集成电路。2. LCD液晶显示屏的内部结构液晶显示模块WN-C1602N的内部结构可以分成三部分:LCD挖掘器、LCD驱动器和LCD显示装置。如图5所示:图5 LCD内部结构图目前大多数的LCD液晶显示器的控制器都有采用一颗型号为HD44780的集成电路作控制器。HD44780是集控制器,驱动器于一体,专用于字符显示控制驱动集成电路。HD44780是字符型液晶显示控制器的代表电路,HD44780集成电路的特点有:(1) HD44780不仅作为控制器而且还具有驱动40*16点阵液晶像素的能力,并且HD44780的驱动能力可

24、通过外接驱动器扩展360列驱动。(2)HD44780的显示缓冲区及用户自定义的字符发生器CGRAM全部内藏在芯片内。(3)HD44780具有适用于M6800系列MPU的接口,并且接口数据传输可为8位数据和4位数据传输两种方式。(4)HD44780具有简单而功能较强的指令集,可实现字符移动,闪烁等显示功能。由于HD44780的DDRAM容量所限,HD44780可控制的字符高达每行80个字,也就是5*80=400点,HD44780内藏有16路行驱动器和40路列驱动器,所以HD44780本身就具驱动有16*40点阵LCD能力(即单行16个字符或两行8个字符)。如果在外部加一HD44100外扩展多40

25、路/列驱动,则可驱动16*2LCD。HD44780内藏的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。比如数字“1”的代码是00110001B(31H),又如大写的英文字母“A”代码是01000001B(41H)。表1 WM-C1602N的CGRAM字符图形代码对应表3. LCD的应用液晶显示模块LCD1602在显示“1”时,则只需将ASCII码31H存入DDRAM即可。显示时模块把地址31H中的点阵字符图形显示出来,就能看到数字“1”了。DDRAM有80bytes

26、空间,共可显示80个字,地址与实际显示位置的排列顺序跟LCD的型号有关。1602采用标准的16脚接口,如表2所示。其中VSS为地电源,VDD接5V正电源,VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端,当E端由高电平跳变成低电平

27、时,液晶模块执行命令。D0-D7为8位双向数据线。表2 LCD1602引脚说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3VL液晶显示偏压信号11D4Data I/O4RS数据/命令选择端(H/L)12D5Data I/O5R/W读/写选择端(H/L)13D6Data I/O6E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源正极本设计电路如图6所示:图6 LCD1602电路连接图如图6所示,有八根数据线与单片机的P0口相连,三根读写控制线,背光调节电位器,可调节

28、背光亮度。(四)存储器电路的设计本设计采用串行铁电存贮器FRAM,采用I2C总线工作方式。FRAM铁电存储器的核心技术是美国Ramtron公司研制的铁电晶体材料。这一特殊材料使得铁电存储产品同时拥有随机存储器(RAM)和非易失性存储器(EPROM、E2ROM、FLash)的特性。1. 铁电晶体材料的工作原理当把电场加载到铁电晶体材料上,晶阵中的中心原子会沿着电场方向运动,达到稳定状态,一个状态存储逻辑0,另一个状态存储逻辑1。中心原子在常温下没有电场的作用时停留在此状态达一百年以上,铁电存储器不需要定时刷新,断电情况下能保存数据不变。由于在整个物理过程中没有任何原子碰撞,铁电存储器(FRAM)

29、拥有高速读写,超低功耗和无限次写入等特性。2. 存储器的基础知识传统存储器有两大类:易失存储器(volatile memory)和非易失存储器(non-volatile memory),易失性存储器像SRAM和DRAM存储器在没有电源的情况下都不能保存数据,但这种存储器拥有高性能,存取速度快和无限次的写入次数,易用等优点。非易失性存储器像EPROM、E2ROM和FLash能在断电后保存数据不变,但由于所有这些存储器均起源只读存储器(ROM)技术,因此它们都有写入速度慢,写入次数有限和使用时功耗大等缺点。 表3是16K位铁电存储器(FRAM)的性能和16K位E2ROM性能比较情况,FRAM第一个

30、最明显的优点是:FRAM可以跟随总线速度写入,无需任何等候时间,而E2ROM需等几毫秒(ms)才能写入一下数据。FRAM第二大优点是几乎无限次的写入。E2ROM的写入次数是每百万次(10的6次方),而新一代的铁电存储器(FRAM)却是一亿亿次(10的6次方)写入寿命。FRAM的第三大优点是超低功能。E2ROM的慢速和高电流写入一个字节令它需要高出FRAM2500倍的能量。表3 性能比较表型号待机电流写入电流写入次数字节写入时间整片写入时间FM2401610UA150US1E1372US47AMSAT24C1618UA3mA1E610MS1.3SST24C16300UA3mA1E610MS1.3

31、S24AA16100UA3mA1E610MS1.3SX24C16150UA3mA1E610MS1.3S3. 铁电存贮器FRAM的应用FRAM无限次快速擦写和非易性的特点,令它的系统工程师可以把现在在电路上分离的SRAM和E2ROM两种存储器整合到一个FRAM里,为整个系统节省了功耗,降低了成本,减小了体积,同时增加了整个系统的可靠性。 典型应用包括:仪器仪表、工业控制、家用电器、复印机、打印机、机顶盒、网络设备、游戏机、计算机等等。 4. I2C总线知识该存贮器采用I2C总线方式工作,在软件操作时,就得用I2C总线方式进行读写。I2C总线是由PHILIPS公司发明的一种高性能芯片间串行同步传输

32、总线。与SPI、MicroWire接口不同,它仅仅需要两根信号线(串行数据线SDA和串行时钟线SCL),就实现了完善的双工同步数据传送,能够极其方便地构成多机系统和外围器件扩展系统。I2C总线采用了器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址端,从而使硬件系统具有更简单、更灵活的扩展方法。鉴于I2C总线的众多功能优越性,目前,以PHILIPS公司为主的许多著名半导体制造公司,纷纷研制出了大量的种类繁多的(已经达数百种型号)带有I2C总线硬件接口的单片机、通用外围器件,例如RAM、EEPROM、NVRAM、I/O、ADC、DAC、日历时钟RTC、LED驱动器、LCD驱动器、温度

33、传感器等等。另外,还开发了面向一些特殊应用系统中专用配套的I2C总线芯片,例如无线电、无绳电话、移动手机、电视机、音响系统、家庭影院等系统中的双音多频(DTMF)拨号器、语音合成器、数字调谐器、编码器、解码器、图像处理器、频率合成器、音调控制器、立体声处理器等等。本设计电路如图7:图7存储器电路图如图7所示,电路用24C64存贮器,A0、A1、A2为地址选择端,主要作用是用于级连,在总线上挂接多个这样的存贮器时使用,VSS为接地端,VCC为电源正极连接端,WP为写保护控制端,SCL、SDA分别为I2C总线的串行时钟连接端和串行数据连接端,数据的写入与读出就是通过这个端两个端操作的,同时电路中在

34、这两个端口加了两只上接电阻,作用是由于存贮器内部是采用开漏输出的。(五)串行通信接口电路的设计串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232C标准的基础上经过改进而形成的。RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。 RS-232C标准(协议)的全称是EIA-RS-232C标准,其中

35、EIA(Electronic Industry Association)代表美国电子工业协会,RS(ecommeded standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有有EIA�RS-232-C、EIA�RS-422-A、EIA�RS-423A、EIA�RS-485。 这里只介绍EIA�RS-232-C(简称232,RS232)。 例如,目前在IBM PC机上的COM1、COM2接口,就是RS-232C接口。1.

36、RS-232C电气特性RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(ecommeded standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有有EIA�RS-232-C、EIA�RS-422-A、EIA�RS-423A、EIA�RS-485。 这里只介绍EIA�RS-232-C(简称232,RS232)

37、。 例如,目前在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状态,正电压)+3V+15V;(5)信号无效(断开,OFF状态,负电压)=-3V-15V。以上规定说明了RS-323C标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平告语+3V;对于控制信号;接通状态(

38、ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,应保证电平在(315)V之间。2. 连接器的机械特性:连接器:由于RS-232C并未定义连接器的物理特性,因此,出现了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

39、,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电流环接口,使用DB-9连接器,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。它只提供异步通信的9个信号。DB-25型连接器的引脚分配与DB-25型引脚信号完全不同。因此,若与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线。电缆长度:在通信速率低于20kb/s时,RS-232C所直接连接的最大物理距离为15m(50

40、英尺)。最大直接传输距离说明:RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。可见这个最大的距离是在码元畸变小于4%的前提下给出的。为了保证码元畸变小于4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于2500pF。3. RS-232C的接口信号RS-232C规标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线。在本设计中电路连接图如图8所示:图8 串行通信口连接图如图8所示,MAX232中电平转换芯片。将差分电平,转换成单片机等可识别的TTL电平,电路中RXD、TXD两根线分别和单

41、片机相连P3口的串行通讯口相连,RXD为数据据接收端,单片机通过这个端口读取PC机等送来的信号,TXD为数据发送端口,主要向PC等设备发送信号。图右边还有一个9针串行通信口,主要和PC机相连。四、系统软件程序设计 本设计程序共分成五个部分:键盘处理程序、LCD显示程序、单片机内部数据处程序、存贮程序、串口和PC机通信程序。(一)单片机内部数据处理程序单片机内部数据处理程序,即是系统的主程序。当插上电源后,单片机对系统进行一系列的初始化,包括LCD显示初始化,串口初始化和菜单的初始化,以及判断有无按键按下,并做出相应的处理。主程序流程图如图9:图9 主程序流程图(二)键盘处理程序键盘处理程序,主

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

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

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

45、室的各位老师,他们在我平常的学习与日常生活中,给了我许多关心与帮助。在此我表示深深的感谢!附录附录一 硬件原理图附录二 硬件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 /按键功能函数#include key4.h /按键检测和键值读取函数 /bit w24c64,r24c64;void

46、main() initlcd(); /初始LCD initurat(); /初始串口 menu(); /初始菜单 /inorder(0xc0);/indata(0x38);/测试LCD第二行是否显示 while(1) key1(); if(w!=0) /如果有键按下则读键值 key2(w); /读键值 /*结束*/2、键盘代码unsigned char w1,w2;void key1(void) P1=0x0f; w1=P1&0x0f; if(w1!=0x0f) / 按键 delay(100); if(w1!=0x0f) /再一次检测按键 P1=0xf0; w2=P1&0xf0; w=(w1

47、| w2); else w=0; /未按键/-/unsigned charvoid key2(unsigned char j) unsigned char i; switch(j) /-以下为数字键 case 0x77: i=0x30;indata(i);strcc+=0;break; case 0x7b: i=0x31;indata(i);strcc+=1;break; case 0x7d: i=0x32;indata(i);strcc+=2;break; case 0x7e: i=0x33;indata(i);strcc+=3;break; case 0xb7: i=0x34;indata

48、(i);strcc+=4;break; case 0xbb: i=0x35;indata(i);strcc+=5;break; case 0xbd: i=0x36;indata(i);strcc+=6;break; case 0xbe: i=0x37;indata(i);strcc+=7;break; case 0xd7: i=0x38;indata(i);strcc+=8;break; case 0xdb: i=0x39;indata(i);strcc+=9;break; /以下为功能键 case 0xDD: manage_key1();i=0;break;/A写24C64 case 0xD

49、E: manage_key2();i=0;break;/B读24C64 case 0xE7: manage_key3();i=0;break;/C 串行通讯,发送数据 case 0xeb: manage_key4();i=0;break;/D 串行通讯,接受数据 case 0xED: manage_key5();i=0;break;/E 显示计算结果 case 0xEE: manage_key6();i=0; /f 清屏 while(1) /等待按键的释放 key1(); if(w1=0x0f) delay(10); if(w1=0x0f) break; /*结束*/3、液晶显示器代码#inc

50、lude#define RS P2_5 /定义LCD控制口#define RW P2_6#define E P2_7#define XS P0void busy(void) /检查忙信号 _nop_(); do XS=0xff; RS=0; RW=1; E=0; _nop_(); E=1; while(P0_7); void inorder(unsigned char order)/写命令 XS=order; RS=0; RW=0; E=0;busy();E=1; void indata(unsigned char datar) /写数据 XS=datar; RS=1; RW=0; E=0;

51、busy(); E=1;void initlcd (void) inorder(0x01); inorder(0X38);/8位2行5X7点阵 inorder(0X0f);/显示器开,光标开,闪烁开 inorder(0X06);/文字不动,光标自动右移 inorder(0x01);/清显示/=显示处理程序=void xianshi(void) unsigned long x,y,z,sum;x=(str0*100+str1*10+str2); /得到“货号”y=(str3*1000+str4*100+str5*10+str6);/得到“单价”值(3位数) z=(str7*100+str8*10

52、+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%100000)%10000)%1000)%100)/10; /十位str15=(sum%100000)%10000)%1000)%100)%10; /个位/*菜单显示*/在第一行显示NO. price amount sum(¥)void menu

53、(void) inorder(0x80); /光标指向LCD第二行首地址 indata(0x4e); /NO. indata(0x4f); indata(0x20); /空格 indata(0x44); /price indata(0x4A); indata(0x20); /空格 indata(0x20); /空格 indata(0x53); /amount indata(0x4C); indata(0x20); /空格 indata(0x53); /Sum(¥) indata(0x75); indata(0x6D); indata(0x28); indata(0x5C); indata(0x

54、29); inorder(0xc0);/光标指向LCD第二行首地址/*结束*/4、串行口程序代码#define uchar unsigned charvoid initial();void sendd();void received();/*串行口初始化*/void initurat(void) TMOD=0x20; TL1=0xe8; TH1=0xe8; SCON=0x50; TR1=1; /*发送数据*/void sendd( ) uchar i;for(i=0;i16;i+) TI=0; SBUF=stri; while(TI=0); /*接收数据*/void received()uch

55、ar i; /while(i=SBUF)!=0x01); / RI=0; while(RI=0);for(i=0;i16;i+) RI=0; stri=SBUF; while(RI=0); /*结束*/5、24C64的读写程序代码#include#define uchar 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)

56、/开始总线的活动 sda=1; scl=1;_nop_();_nop_(); _nop_(); _nop_(); sda=0; _nop_();_nop_();_nop_(); _nop_(); /- void stop(void) /停止总线活动,器件进入低功耗状态 sda=0; _nop_();_nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_(); sda=1; _nop_();_nop_();_nop_();_nop_(); /- void ack(void) /应答信号 sda=0; _nop_();_nop_();_nop_();_nop_(); scl=1;_nop_();_nop_();_nop_();_nop_(); scl=0; /允许从器件改变当前SDA的状态,以便于下一次的读入 /-

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!