基于单片机的轴承售卖系统设计

目 录

摘 要 I
Abstract II
引 言 3
1总体方案设计及选择 5
1.1设计方案与选择 5
1.2总体方案设计 5
1.2.1系统总体设计 5
2 硬件电路的设计 8
2.1电源电路 8
2.2 控制核心STC89C52单片机 8
2.3 时钟电路 8
2.4 复位电路 8
2.5 按键模块 9
2.6 NFR24L01无线传输模块 10
2.7 LCD12864液晶屏显示模块 11
2.8 轴承样品展示模块 12
3 系统软件设计 13
3.1主程序流程图设计 13
3.1.1客户端的无线传输模块发送信息 13
3.1.2 厂家端的无线传输模块接收信息 13
3.2 软件开发环境及流程 14
4焊接与调试 16
4.1电路焊接 16
4.2调试 16
结 论 18
参考文献 19
附录1 原理图展示 21
附录2 源程序(部分) 22
致 谢 29

摘 要

众所周知,身处高速发展的时代,如果不能紧紧跟随新时代的脚步而做出改变,那么必将被时代做抛弃。时至今日,轴承售卖依然使用传统售卖的方式,即客户到轴承厂实地观摩样品,然后才能进行轴承的不同种类还有数量上的购买,因此,轴承行业一直处于落后状态。为了改变轴承业现状,更为了推动轴承业的大力发展,本设计利用当代流行的自动零售方式对轴承进行新形势售卖。
本设计在分析了硬件电路和软件设计之后,决定使用客户端和厂家端两部分来模拟买卖双方的轴承售卖过程。首先,设计STC89C52单片机作为系统的控制中心,选择可以显示中文的LCD12864液晶显示屏进行不同种类轴承名称及对应价格的展示,通过按键操作模拟客户查看样品的真实场景,为了让效果更直观,本设计中采用发光二极管和继电器来模拟样品展示仓的打开与关闭。在客户选择产品后,通过NRF24L01传输模块实现客户与厂家的信息交互,厂家接收到信息,通过按键操作查看处理,并可以在处理完信息后清除所有数据。本设计性能稳定、占用空间小、使用材料少、传输速度快,在进行了硬件与软件的调试之后,结果表明本设计在技术上完全可行,预期可以实现全部功能。
本设计很好的模拟了全新的轴承销售方式,这是轴承售卖行业的大胆尝试,具有创新性。

关键词:STC89C52单片机; 无限传输模块; LCD12864

Abstract

As we all know, in the era of high-speed development, if we can’t closely follow the steps of the new era to make changes, then we will be abandoned by the era. Up to now, the traditional way of selling bearings is still used, that is, customers go to the bearing factory to see the samples on the spot, and then they can buy different types and quantities of bearings. Therefore, the bearing industry has been in a backward state. In order to change the current situation of the bearing industry and promote the development of the bearing industry, this design uses the modern popular automatic retail mode to sell the bearing in the new situation.
After analyzing the hardware circuit and software design, the design decided to use the client and the manufacturer to simulate the selling process of the bearing. First of all, STC89C52 single chip microcomputer is designed as the control center of the system. LCD12864 liquid crystal display screen which can display different kinds of bearing names and corresponding prices is selected. The real scene of the sample is simulated by key operation. In order to make the effect more intuitive, led and relay are used in the design to simulate the opening and closing of the sample display bin. After the customer selects the product, the information exchange between the customer and the manufacturer is realized through the nRF24L01 transmission module. The manufacturer receives the information, views and processes it through the key operation, and clears all data after processing the information. After debugging the hardware and software, the result shows that the design is feasible in technology and expected to achieve all the functions.
This design well simulated the brand-new bearing sales mode, which is a bold attempt of the bearing sales industry, with innovation.

Keywords: STC89C52 single chip microcomputer; infinite transmission module; LCD12864

引 言

想要推动行业的发展,就要顺应新时代的发展,不仅技术需要精益求精更新迭代,销售方式更是不能拘束于传统的销售方式,在这个新零售行业大力发展大受欢迎的时代,轴承售卖缺少这种营销手段和方法,所以必须增加更贴合现代的销售方式,在自动零售、智能销售上初步试验,这可以增加厂子和产品的曝光度,对轴承行业是一个好的推广作用。
基于单片机的轴承售卖系统设计是受到了自动零售行业面目前最受欢迎的自动售货机的启发,自动化是未来的发展趋势,不论是制造业、服务业还是零售业,我们都将看到更多的设备取代人工,在这样一个大的趋势下,自动售卖行业的前景时光明的[1]。
自动售货机这种简单便捷的售卖方式深受当下年轻人的喜爱[2],欧美日本等国对于自动售货机的拥有率一直属于全世界前列,他们不仅持续使用这种自动零售方式,更是自主研发使得自动售货机的功能更多样,操作更简洁。在这种大势所趋的自动售卖行业,作为在世界上拥有极高影响力的发展中国家中国,很早在自动售货机的研发使用上投入了大量资金,而且在未来的几年内自动售货机作为新零售行业目前最受欢迎的一种,它将成为快消品零售的一大新兴市场。截止到当前,世界上每天自主运营营收的自动售卖机至少有一千六百万台,而且每年自动售货机销售商品的总金额已经超过了2000亿美元[3],毋庸置疑自动售货机已成为零售业态增长最快的行业之一。
目前轴承厂大多的售卖方式还处于传统的传统的售卖方式,即客户方到厂子里查看轴承,然后才能对轴承的种类以及数量进行购买,在高速发展的新时代,传统的售卖方式无异于落后。近几年的轴承行业大不如从前,很多的轴承厂在金融危机后出现微薄营收甚至负营收,据不完全统计,上千家轴承厂倒闭,数万工人失业只能另谋出路。所以轴承行业必须改变,不仅需要引进先进技术、招收人才、购买新的机器,更是需要在轴承售卖方式上迎合新时代售卖,所以本设计的研究是鉴于国内外大力发展的智能零售行业所构思的一种轴承售卖方式,它摒弃传统轴承售卖方法,引进新时代售卖方式,从而起到对轴承行业的一种推广作用。
在设计上本设计采用单片机作为控制器,用LCD12864显示屏来显示轴承中文名称、价格等,用无线传输模块来模拟客户和厂家的信息交互[4],用按键来模拟客户对轴承的选择与查看以及厂家查看信息和数据清除,用继电器LED小灯来模拟样品展示,巧妙地模拟了客户与厂家的轴承售卖过程。

1总体方案设计及选择

1.1设计方案与选择
设计一个客户端和一个厂家端,客户端有一个查看样品选项当客户选择查看之后,系统接收到指令,然后通过控制,打开样品展示仓的仓门;当这个客户查验这个样品过后控制样品展示仓关闭。
(1)方案一
用电机模拟产品展示:当用户选择查看样品的时候,系统接到指令,单片机控制驱动芯片进而使一个电机转动模拟打开产品展示仓,然后在控制另一个电机转动模拟关闭产品展示仓。
(2)方案二
用步进电机模拟产品展示:当用户选择查看样品的时候,系统接到指令,步进电机跟着单片机的正转脉冲信号发生正转来模拟打开产品展示仓,然后再跟随着单片机的反转脉冲信号发生反转来模拟关闭产品展示仓。
(3)方案三
用继电器模拟产品展示:当用户选择查看样品的时候,系统接到指令,单片机控制继电器模拟电机开关[5],用电阻二极管组成一个继电器状态指示电路。当继电器吸合的时候,二极管亮,模拟打开产品展示仓;当继电器断开的时候,二极管熄灭,模拟关闭产品展示仓。
本设计选择四个产品展示,方案一需要8个电机,电机驱动需要芯片,单片机引脚不够;方案二需要4个步进电机,单片机引脚不够;方案三继电器在电路中起着自动调节、安全保护、转换电路等作用,而且指示电路可以更直观的看出继电器的状态,所以最后选择方案三。
1.2总体方案设计
1.2.1系统总体设计
基于单片机的轴承售卖系统主要是有厂家端部分和客户端组成。轴承售卖系统的客户端是实时采集客户操作的信息,客户可以在客户端看到轴承的名称以及对应的价格信息,当客户对某一种轴承有意向时可以选择查看该轴承样品,最后选择心仪的轴承产品。轴承售卖系统的厂家端会处理由客户端传来的信息,并展示价格。
功能总结如下:
(1)本设计由客户端和厂家端组成,客户端收集信息发给厂家端,厂家端展现客户选择的产品信息及总价,处理完信息后可以删除数据;
(2)液晶屏上展示轴承名称及其价格的信息;
(3)设置4个轴承产品查看演示,通过继电器及二极管模拟轴承样品展示仓的打开与关闭;
(4)客户与厂家的信息交互会同时展现。
为了实现上述功能,本设计由六部分组成:电源模块、STC89C52单片机为控制核心、按键模块、nRF24L01无线传输模块、LCD12864液晶显示模块、轴承样品查看模块[6]。
(1)电源模块:用5V电压供给用电设备提供电力供应;
(2)STC89C52单片机为控制核心:通过代码程序控制其他模块的运行;
(3)客户端按键模块:通过按键实现查看轴承样品及轴承产品选择;
(4)nRF24L01无线传输模块:通过无限传输模块实现客户与厂家的信息交互;
(5)LCD12864液晶显示模块:中文大屏显示,客户端显示轴承名称及其价格,厂家端显示客户选择的轴承及总金额;
(6)厂家端按键模块:通过按键查看客户选择的产品信息,在处理完之后通过按键删除数据;
(7)轴承样品查看模块:通过发光二极管和继电器模拟轴承样品展示仓的打开与关闭。
轴承售卖系统结构框图如图1.1所示。

在这里插入图片描述

图1.1轴承售卖系统结构框图
接上电源后,客户端单片机运行处理按键模块操作的信息通过无线传输模块发射,厂家端无线传输模块接收信息,单片机处理并控制液晶显示,处理完信息后通过按键模块删除数据,从而完成整套系统的运行。

2 硬件电路的设计

2.1电源电路
本设计选用5V电源作为系统的总电源,为整个系统进行供电,电路简单、稳定。DC为电源的DC插座,可以直接接USB电源线,一端插在DC插座上,另外一端可以插在5V电源上,如电脑USB、充电宝、手机充电器等。S1为开关,开关按下后,系统电源5V直流输出[7]。开关再次按下后,系统电源无5V电源输出。电源电路与发射指示灯电路如2.1所示。

在这里插入图片描述

图2.1电源电路图

2.2 控制核心STC89C52单片机
本设计采用的是STC89C52单片机作为控制核心,STC89C52单片机作为STC系列的单片机,它拥有着很多优点,比如它的执行速度比其它系列单片机要快上很多,因此受到欢迎。其还有着下载程序方便,可以高灵活、特高效的解决设计的方案等优点。最主要的是STC89C52单片机是一款单芯片、智能8位CPU和系统内可编程Flash[8],更是有着非常强的抗干扰能力,综上所述最终选择了这款芯片。
2.3 时钟电路
时钟电路又称作晶振电路,它是一种可以控制系统正常稳定运行的振荡电路。其中本设计选用了12.000MHZ的晶振[9],以及两个30pF的瓷片电容,以保证电路的正常运行。
2.4 复位电路
复位电路就是为了完成正常的单片机的启动,因为平常运行使用单片机的时候,有时会出现由于外界的影响而使程序不能正常运行的情况,所以需要让程序重新运行。为确定单片机能正常运行烧写的程序复位电路不可缺少,它一般有上电自动复位和外部按键手动复位两种,单片机在时钟电路工作以后,在RESET端[10]持续给出2个机器周期的高电平时就可以完成复位操作[11]。本设计中客户端、厂家端均选用了手动复位。
最小系统由电源电路、单片机、晶振电路、复位电路组成。客户端与厂家端的最小系统电路图如图2.2、2.3所示。
在这里插入图片描述

在这里插入图片描述

图2.2客户端最小系统 图2.3厂家端最小系统

2.5 按键模块
通过按键来模拟客户与厂家的真实操作。客户端的按键操作是模拟客户进行轴承样品的查看以及对产品的选择。客户端按键电路如图2.4所示。

在这里插入图片描述

图2.4客户端按键电路

厂家端的按键操作是模拟厂家在接受了客户的信息之后,对其选择的产品和总金额进行查看,以及处理完信息后对数据进行清除。厂家端按键电路如图2.5所示。
在这里插入图片描述

图2.5厂家端按键电路

2.6 NFR24L01无线传输模块
为模拟客户与厂家的实时信息交互,选择了NFR24L01无线传输模块。NRF24L01是一款新型单片射频收发器件[12],工作于2.4 GHz~2.5 GHz ISM频段。它内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块。它的VCC脚接电压一般在1.9V到3.6V之间,当超过3.6V的时候会被烧毁,AMS1117-3.3芯片可以将输出的电压稳定在射频识别模块的额定电压3.3V,使其能够正常工作,本设计中选择了三个4007二极管代替。
这个模块有着节能、数据在空中停留时间短,抗干扰能力强等优点[13],所以最后选择使用NFR24L01无线传输模块来模拟客户与厂家之间的实时信息交互。
在客户端单片机收集客户信息后通过无线传输模块发射。其电路图如图2.6所示。

在这里插入图片描述

图2.6客户端无线传输模块

厂家端收集客户端发过来的信息,经过单片机整理,在液晶屏上显示。其电路图如图2.7所示。

在这里插入图片描述

图2.7厂家端无线传输模块

2.7 LCD12864液晶屏显示模块
本设计采用了LCD12864液晶屏显示模块,最初选择了LCD1602,但是1602只能够显示字母数字符号等,我的设计中需要有中文显示轴承不同种类的名称,有所有名称的展示会使产品更有冲击力更贴近现实,所以不能使用1602[14]。LCD12864液晶屏带有文字库,它可以进行文字的展示,而且所有的的功能都包含在一个小芯片里面,只需要一个微处理系统就可以进行操作,十分的简单便捷,所以最后选择了LCD12864液晶屏作为本设计的显示模块[15]。显示器的命令操作插脚为RS、RW和EN,连接到单片机的P2.7、P2.6和P2.5引脚。数据插脚D0-D7分别与单片机的P0.0-P0.7引脚相连。
客户端的液晶屏显示四种轴承的名称及对应价格。如图2.8所示。

在这里插入图片描述

图2.8客户端液晶屏

厂家端的液晶屏显示客户选定的轴承名称及总金额。如图2.9所示。

在这里插入图片描述

图2.9厂家端液晶屏

2.8 轴承样品展示模块
本设计中本模块推翻了电机的使用,最终选择了用继电器来模拟轴承样品模拟仓的打开与关闭。当STC89C52单片机引脚输出低电平的时候,厂家端的三极管饱和导通,这个时候电源电压就加到了继电器的线圈两端,继电器处于吸合状态,这时会有咔的一声,发光二极管通电亮起,模拟轴承样品展示仓已经成功打开,客户看到了此展示仓内的轴承样品;当STC89C52单片机引脚输出高电平的时候,三极管不在饱和导通处于截止状态,此时的继电器线圈两端没有了电位差,继电器内的衔铁释放[16],在这个时候发光二极管也进入了熄灭状态,模拟轴承样品展示仓已经关闭,客户不能继续查看展示仓里的轴承样品。本设计最终选择展示四个轴承样品即四个继电器电路分别显示。如图2.10所示。
在这里插入图片描述

图2.10展示模块

3 系统软件设计

3.1主程序流程图设计
3.1.1客户端的无线传输模块发送信息
客户端的无限传输模块通过STC89C52单片机对客户的操作信息进行收集,然后根据客户选择查看的轴承样品序列号给厂家端发射出对应的号码,流程图如图3.1所示。

在这里插入图片描述

图3.1客户端数据发射

3.1.2 厂家端的无线传输模块接收信息
厂家端的无线传输模块接收信息,单片机进行信息处理,LCD12864液晶显示屏[17]显示客户选择的产品信息以及总金额展示。具体的流程图如图3.2所示。
在这里插入图片描述

图3.2厂家端接受信息

3.2 软件开发环境及流程
本设计中单片机开发环境是Keil 5[18],不仅提供了完整的Windows开发环境界面,支持C语言开发,该软件开发界面如图3.3所示。
在这里插入图片描述

图3.3开发界面图
开发时需要建立“Project”工程,选择“New uVision Project”,为新建的工程命名后点击保存;然后选择本设计选取的单片机型号“STC89C52”;成功建立工程后,点“Source Group”按键[19],可添加.c文件,如果想编辑文件,点击“Add”就可以了[20]。具体开发流程如图3.4所示。

在这里插入图片描述

图3.4软件开发流程图

4焊接与调试

4.1电路焊接
本设计还是使用的传统焊接方式,焊枪焊锡手工焊成,根据电路图需要焊接的地方比较多,比较复杂,焊接的过程中必须仔细认真,如果焊错任何一个,那么整个系统无法正常运行,所以在指导老师的指导下,多次试验完成了焊接,可以正常运行的实物照片如图4.1所示。
在这里插入图片描述

图4.1实物图照片

4.2调试
在系统用USB线和电脑连接之前,应仔细检查焊接的所有线路所有点,是否有裸露未焊接完全,或者断裂等问题。确认焊接没问题之后,将厂家端STC89C52单片机烧入液晶显示程序,检验液晶显示有没有问题。然后将其中一片STC89C52与液晶及按键模块相连,写入电表计数的程序,测试按键和液晶显示是否正常。然后将NRF24L01的两端分别与两端STC89C52相连,写入发射一个常数的程序,检测无线传输模块及程序是否能正常运行。最后将液晶显示、按键等程序整合,检测系统是否能将客户端的轴承样品序列号发送到厂家端并在12864液晶屏上显示,检测双重提示能否实现。最后部分功能展示如图4.2所示。

在这里插入图片描述

图4.2部分功能展示

结 论

本设计采用了有着下载程序方便,可以高灵活、特高效的解决设计的方案等优点的STC89C52单片机为操作核心,它负责运行整个系统。用可显示中文的LCD12864大液晶屏来模拟客户看到的操作界面,上面展示着各类轴承的名称价格,让人看得更清晰、更加一目了然。通过按键操作来模拟了客户的真实操作,比如对物品的选定与查看。其中客户与厂家可以通过NFR24L01无线传输模块来实时信息交互,通过发光二极管和继电器模拟了轴承样品展示仓的打开与关闭,客户端的单片机收集客户的选择信息并通过无线传输模块发射信息,厂家端的无线传输模块接收信息,并且在液晶屏幕上显示。通过按键操作模拟厂家查看客户的选择信息并展示总金额,以及清除所有数据。两种综上所述,本设计是运用了所学的专业知识来表现出所有的设计想法,它很好的模拟了客户与厂家的一种新型轴承售卖方式,它摒弃传统轴承售卖方法,引进新时代售卖方式,从而起到对轴承行业的一种推广作用。
功能的实现更让我确信了在这个新零售行业的大力发展的时代,轴承的售卖方式需要跟随时代的脚步,所以它必须跳出那个传统售卖的舒适圈,依靠新思维新方法去带动整个行业进入新发展,希望这种新型的轴承售卖方式可以对现在的轴承行业起到一点改变,祝愿轴承行业越来越好。

参考文献

[1] 刘畅, 张清, 彭晴晴, 张会新. 多路传感器信号采集无线传输模块设计[J].现代电子技术, 2019, 42(18):99-102
[2] 牟福生, 胡丽莎, 张莹莹, 王家伟, 李素文, 韦民红. 基于STM32和机智云智能门锁的设计与实现[J].高师理科学刊, 2019, 39(07):48-52
[3] 聂怀龙. 小型冰淇淋自动售货机的设计与实验研究[D].浙江大学, 2019:70-74
[4] 肖新帅. 集群式自动售货机控制系统设计[D].西安工程大学, 2019:76-84
[5] 胡念祖. 基于ARM和嵌入式Web服务器的自动售货机设计[D].西安工程大学, 2019:68-72
[6] 张欢. 无人售货机订单服务模块的设计与实现[D].山东大学, 2019:80-84
[7] 韩笑. 基于FPGA的自动售卖机系统的设计与实现[D].吉林大学, 2019:45-49
[8] 朱月松. 米/面一体无人售卖机的设计与实现[D].河南工业大学, 2019:74-78
[9] 张鑫. 基于智能推荐的自动售卖系统设计[D].天津工业大学, 2019:78-82
[10] 王虎伟, 刘少杰, 刘星, 冯洪威, 谷旭龙. 自动售货机无线支付系统[J].机械工程与自动化, 2018(06):146-147
[11] 李宏胜. 基于QFD方法的自动售货机设计研究[D].沈阳理工大学, 2019:52-55
[12] 范赛. 基于STM32的现冲饮料自动售货机电控系统设计[D].山东科技大学, 2018:85-89
[13] 徐杨帆. 基于LLC串联谐振医疗恒温槽加热电源研制[D].安徽工业大学,2018
[14] 柯嘉诚. 智能饮料调配售卖机信息管理系统设计[D].中国计量大学, 2018:69-71
[15] 马大玲, 易明胜, 赵宇豪, 刘莹, 黎立泉, 夏雄平. 厨房烟雾报警器的设计与制作[J].电子测试,2019(09):17-19
[16] 周涛, 郝英杰, 盛庆华. 可穿戴式无线空中鼠标[J].电子制作,2018(13):23-25
[17] 王朋飞, 王新, 王丽, 张齐山, 余声. 基于微机控制下的智能售货机系统设计[J].电工材料, 2019(06):50-53
[18] 丁福星, 崔丽珍, 边泽山. 基于物联网的智能售货柜系统设计与实现[J].内蒙古科技大学学报, 2019,38(04):355-359
[19] 高一歌. 基于服务设计的智能自动售货系统人机交互研究[J].设计, 2019, 32(07):40-43
[20] 武振东. 基于PDDM方法的自动售货机设计研究[D].沈阳理工大学, 2019:30-34

附录1 原理图展示

客户端
在这里插入图片描述

厂家端

在这里插入图片描述

附录2 源程序(部分)

#include “LCD12864.h”
#include “coon.h”
#include <reg52.h>
#include <intrins.h>

#define DATA_LCD12864 P0 //数据口

sbit RS_LCD12864 = P2^7; //片选
sbit RW_LCD12864 = P2^6; //液晶读/写控制
sbit EN_LCD12864 = P2^5; //液晶使能控制

/*********************************************************************
原型: char *version_LCD12864()
功能: 返回当前驱动的版本号
返回: 当前驱动的版本号
*********************************************************************/
#ifdef NEED_VERSION_LCD12864
char *version_LCD12864()
{
return “LCD12864 V1.1”;
}
#endif

/*********************************************************************
原型: bit busy_LCD12864()
功能: 检测液晶是否空闲
*********************************************************************/
bit busy_LCD12864()
{
bit result;

RS_LCD12864 = 0;
RW_LCD12864 = 1;
EN_LCD12864 = 1;
delay_5us();
result = (bit)(DATA_LCD12864&0x80);
EN_LCD12864 = 0;
return(result);

}

/*********************************************************************
原型: void cmd_LCD12864(uchar pCmd, uint pMs)
功能: 向LCD发送指令, EN高脉冲发送
参数: pCmd 需要发送的指令字
pMs 发送指令后等待的毫秒数
*********************************************************************/
void cmd_LCD12864(uchar pCmd, uint pMs)
{
while(busy_LCD12864());
RS_LCD12864 = 0;
RW_LCD12864 = 0;

EN_LCD12864 = 0;
_nop_(); _nop_();
DATA_LCD12864 = pCmd;
_nop_(); _nop_();
EN_LCD12864 = 1;
_nop_(); _nop_();
EN_LCD12864 = 0;

delay_ms(pMs);

}

/*********************************************************************
原型: void data_LCD12864(uchar pData, uint pMs)
功能: 向LCD发送数据, EN高脉冲发送
参数: pData 需要发送的数据
pMs 发送数据后等待的毫秒数
*********************************************************************/
void data_LCD12864(uchar pData, uint pMs)
{
while(busy_LCD12864());
RS_LCD12864 = 1;
RW_LCD12864 = 0;

EN_LCD12864 = 0;
DATA_LCD12864 = pData;
_nop_(); _nop_();
EN_LCD12864 = 1;
_nop_(); _nop_();
EN_LCD12864 = 0;

delay_ms(pMs);

}

/*********************************************************************
原型: void init_LCD12864()
功能: 液晶初始化
*********************************************************************/
void init_LCD12864()
{
//cmd_LCD12864(0x34, 1); //扩充指令操作
cmd_LCD12864(0x30, 1); //基本指令操作
cmd_LCD12864(0x01, 1); //清除LCD的显示内容
cmd_LCD12864(0x0C, 1); //显示开,关光标
}

/*********************************************************************
原型: void corsor_LCD12864(bit pFlag)
功能: 打开/关闭光标, pFlag=1打开光标, 0关闭光标
*********************************************************************/
#ifdef NEED_CURSOR_LCD12864
void cursor_LCD12864(bit pFlag)
{
cmd_LCD12864(0x30, 1); //基本指令操作
if( pFlag == 0 )
cmd_LCD12864(0x0C, 1); //显示开,关光标
else
cmd_LCD12864(0x0F, 1); //显示开,开光标
}
#endif

/*********************************************************************
原型: void cls_LCD12864()
功能: 清屏
*********************************************************************/
#ifdef NEED_CLS_LCD12864
void cls_LCD12864()
{
//cmd_LCD12864(0x34, 1); //扩充指令操作
cmd_LCD12864(0x30, 1); //基本指令操作
cmd_LCD12864(0x01, 1); //清屏
}
#endif

/*********************************************************************
原型: void flicker_LCD12864(uint pMs)
功能: 全屏闪烁
参数: pMs 闪烁间隔的毫秒数
*********************************************************************/
#ifdef NEED_FLICKER_LCD12864
void flicker_LCD12864(uint pMs)
{
cmd_LCD12864(0x08, pMs);
cmd_LCD12864(0x0c, pMs);
cmd_LCD12864(0x08, pMs);
cmd_LCD12864(0x0c, pMs);
}
#endif

/*********************************************************************
原型: void pos_LCD12864(uchar x, uchar y)
功能: 设置显示位置
参数: x 横向坐标
y 纵向坐标
*********************************************************************/
void pos_LCD12864(uchar x, uchar y)
{
if (x == 0) { x = 0x80; }
else if(x == 1) { x = 0x90; }
else if(x == 2) { x = 0x88; }
else if(x == 3) { x = 0x98; }

cmd_LCD12864(x+y, 0);     //显示地址

}

/*********************************************************************
原型: void show_str_LCD12864(uchar *pStr, uchar x, uchar y)
功能: 在指定位置开始显示指定字符串
参数: x 横向坐标
y 纵向坐标
*********************************************************************/
void show_str_LCD12864(uchar *pStr, uchar x, uchar y)
{
pos_LCD12864(x, y);

while(*pStr != 0)
{
	data_LCD12864(*pStr, 1);
	pStr++;
}

}

/*********************************************************************
原型: void image_LCD12864(uchar *pBmp)
功能: 在指定位置开始显示指定字符串
参数: x 横向坐标
y 纵向坐标
*********************************************************************/
#ifdef NEED_IMAGE_LCD12864
/*void image_LCD12864(uchar *pBmp)
{
uchar i=0, j=0;

cmd_LCD12864(0x34, 0);        //扩充指令

for(i=0; i<32; i++)
{
	cmd_LCD12864(0x80+i, 0);    //先写入水平坐标值
	cmd_LCD12864(0x80, 0);      //写入垂直坐标值
	for(j=0; j<16; j++)            //再写入两个8位元的数据
		data_LCD12864(*pBmp++, 0);
}

for(i=0; i<32; i++)
{
	cmd_LCD12864(0x80+i, 0);
	cmd_LCD12864(0x88, 0);
	for(j=0; j<16; j++)
		data_LCD12864(*pBmp++, 0);
}
cmd_LCD12864(0x36, 1);       //写完数据,开图形显示

}*/
void image_LCD12864(uint x, uint y, uint w, uint h, uchar *pBmp)
{
uchar i=0, j=0;
uchar y1=0, y2=0;

cmd_LCD12864(0x34, 0);        //扩充指令

//上半屏
if( y<32 )  //需要在上半屏显示
{
	y1 = y;
	if( (y+h)<32 )
		y2 = y + h;
	else
		y2 = 32;
	for(i=y1; i<y2; i++)
	{
		cmd_LCD12864(0x80+i, 0);         //先写水平坐标值
		cmd_LCD12864(0x80+(x/8), 0);     //再写垂直坐标值
		for(j=0; j<(w/8); j++)            //写入数据
			data_LCD12864(*pBmp++, 0);
	}
}

//下半屏
if( 32<=(y+h) )  //需要在下半屏显示
{
	if( y < 32 )
	{
		y1 = 0;
	}
	else
	{
		y1 = y - 32;
	}
	y2 = y + h - 32;
	for(i=y1; i<y2; i++)
	{
		cmd_LCD12864(0x80+i, 0);
		cmd_LCD12864(0x88+(x/8), 0);
		for(j=0; j<(w/8); j++)
			data_LCD12864(*pBmp++, 0);
	}
}

cmd_LCD12864(0x36, 1);       //写完数据,开图形显示

}
#endif

致 谢

大学在眨眼之间匆匆溜过,我在这四年间学到了丰富的专业知识,以及良好的科研能力。让我在遇到问题时懂得冷静下来思考解决方法,找到更好的思考逻辑;这次的毕业性的项目设计让我在一次次失败又爬起来的经历中更加了解自己,清楚自己的长处与短板;让我学会如何更好的和他人合作,互利互惠,实现最终的共赢。这样的时光在整个人生之中闪闪发光,让人只要一回忆起来就会觉得心中被温暖与力量填满。在以后的人生中,每当遇到困难的事情,没有勇气面对时,都应该细细的回想这段时间的拼搏,回想自己最初拼搏的初心:不忘初心,方得始终。在这里我要感谢我的指导老师胡海龙和于宏波老师,在大学四年的学习和课题研究期间,他们给予我许多悉心的指导和帮助,他们不仅教给我知识更是告诉我很多为人处世的道理。尤其是这次毕业论文设计,在整个论文的选题、理论研究、需求分析、总体设计、详细设计的过程中,自始至终得到了两位老师的悉心指导和深切关怀。还要感谢他们对我论文不厌其烦的精心修改,多次耐心地审阅了论文全稿,并提出了许多宝贵的意见。在他们的大力帮助支持下,我顺利的完成了此次大学修行。
最后希望我们的绿岛景色越来越美,祝愿我们可敬又可爱的老师们每天开心,祝愿智能工程学院荣登全国第一,祝愿母校沈阳城市学院成为世界一流学府。

相关推荐

  1. 基于51单片机万年历系统设计

    2024-03-10 15:44:06       31 阅读
  2. 基于51单片机秒表系统设计

    2024-03-10 15:44:06       19 阅读
  3. 基于单片机霓虹灯控制系统设计

    2024-03-10 15:44:06       20 阅读
  4. 基于单片机激光测距系统设计

    2024-03-10 15:44:06       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 15:44:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 15:44:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 15:44:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 15:44:06       20 阅读

热门阅读

  1. lvs集群

    lvs集群

    2024-03-10 15:44:06      19 阅读
  2. jmeter快速使用

    2024-03-10 15:44:06       23 阅读
  3. HTTPS安全机制解析:如何保护我们的数据传输

    2024-03-10 15:44:06       20 阅读
  4. 读书·基于RISC-V和FPGA的嵌入式系统设计·第二章

    2024-03-10 15:44:06       21 阅读
  5. Clickhouse: 随笔杂记

    2024-03-10 15:44:06       28 阅读
  6. Verdi VC Apps Batch mode 使用

    2024-03-10 15:44:06       22 阅读
  7. SQLite 简介

    2024-03-10 15:44:06       20 阅读