OLED显示时钟毕业设计论文_第1页
OLED显示时钟毕业设计论文_第2页
OLED显示时钟毕业设计论文_第3页
OLED显示时钟毕业设计论文_第4页
OLED显示时钟毕业设计论文_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、景德镇学院毕业设计论文 论文题目:oled显示时钟 学 系: 机械电子工程系 专   业: 通信技术   班   级: 11通信 班 学生姓名:       陈锡岗 学   号: 201102040107 指导教师: 石长华       2013年11月 9 日目 录 【摘要】.3【绪论】 .3第1章 设计要求与方案论证.51.1 引言. .51.2 功能要求. .51.3方案论证.5 1.3.1技术可行性.5 1.3.2 单片机的选择.6 1.

2、3.3 显示模块的选择.6 1.3.4总体方案论证与选择.6第2章 系统硬件电路设计 .72.1 电路设计. .72.2 系统硬件概述.7 2.2.1 主控制器stc89c52rc.7 2.2.2时钟电路ds1302.9 2.2.3 oled模块.11第3章 系统的软件设计.123.1程序设计. .133.2程序设计流程图.13第四章 结束语.13第五章 附录.13附录一(程序清单) .13 附录二(电路原理图). .50摘要随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。为了在观测时间,能够了解与人类密切相关的信息,比如星期、日期等,电子时钟诞生了,它集时间、

3、日期、星期等功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。该电子时钟主要采用stc89c52rc单片机作为主控核心,由ds1302时钟芯片提供时钟、ooled显示屏显示。stc89c52rc单片机是由atmel公司推出的,功耗小,电压可选用46v电压供电;ds1302时钟芯片是美国dallas公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且ds1302的使用寿命长,误差小;数字显示是采用的ooled显示屏来显示,可以同时显示年、月、日、星期、时、分

4、、秒和温度等信息。此外,该电子时钟还具有时间校准等功能。关键词:时钟电路; 时钟芯片ds1302;ooled显示屏; 单片机stc89c52rc; 绪论 随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子时钟,它是近代世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。第三次革命就是单片机数码计时技

5、术的应用,使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期的显示功能,它更符合消费者的生活需求!因此,电子时钟的出现带来了钟表计时业界跨跃性的进步我国生产的电子时钟有很多种,总体上来说以研究多功能电子时钟为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子时钟的设计,使其更加的具有市场。本设计为软件,硬件相结合的一组设计。在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。

6、基本的要了解一些主要器件的基本功能和作用。除了采用集成化的时钟芯片外,还有采用mcu的方案,利用stc89系列单片微机制成电子电路,采用软件和硬件结合的方法,控制ooled显示屏输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。stc89c52rc是由atmel公司推出的一种小型单片机。95年出现在中国市场。其主要特点为采用flash存贮器技术,降低了制造成本,其软件、硬件与mcs-51完全兼容,可以很快被中国广大用户接受。本文介绍了基于stc89c52rc单片机设计的电子时钟。首先我们在绪论中简单介绍了单片机的发展与其在中低端领域中的

7、优势以及课题的开发意义;接着介绍了stc89c52rc单片机的硬件结构和本毕业设计所要外扩的oled显示及其驱动方法,并在此基础上实现了时钟基本电路的设计;然后使用单片机c语言进行时钟程序的设计,程序采用模块化结构,使得逻辑关系简单明了,维护方便。 第1章 设计要求与方案论证1.1 引言 本文提出了一种基于stc89c52rc单片机的时钟设计方案,本方案以stc89c52rc单片机作为主控核心,与时钟芯片ds1302、按键、oled显示等模块组成硬件系统。在硬件系统中设有独立按键和oled显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间等,综上所述此电子时钟具有读取方

8、便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。1.2功能要求本电子时钟能动态显示年、月、日、星期、小时、分钟、秒1.3方案论证 1.3.1 技术可行性 随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成技术的最新发展之一是将cpu和外围芯片,如程序存储器、数据存储器、并行i/o口、串行i/o口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机(single-chip microcomputer)。而近年来推出的一些高档单片机还包括有许多特殊功能单元,如a/d、d/a转换器、调制解调器、通信控制

9、器、锁相环、dma、浮点运算单元、pwm控制输出单元、pwm输出时的死区可编程控制功能等。因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工业流水线控制系统、作为家用电器的主控制器、分布式控制系统的终端节点或作为其主控制节点起中继的作用、数据采集系统、自动测试系统等。单片机的出现,并在各技术领域中得到如此迅猛的发展,与单片机构成计算机应用系统所形成的下述特点有关: 1、单片机构成的应用系统有较大的可靠性。这些可靠性的获得除了依靠单片机芯片本身的高可靠性以及应用有最少的联接外,还可以方便地采用软、硬件技术。2、系统扩展、系统配置较典型、规范,容易构成各种规模的应用系统,

10、应用系统有较高的软、硬件利用系数。 3、由于构成的应用系统是一个计算机系统,相当多的测、控功能由软件实现,故具有柔性特征,不须改变硬件系统就能适当地改变系统功能。4、有优异的性能、价格比。1.3.2 单片机的选择方案一:采用传统的stc89c52rc作为电机的控制核心。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。方案二:采用ftc10f04单片机,还带有非易失性flash程序存储器。它是一种高性能、低功耗的8位cmos微处理芯片,市场应用最多。其主要特点如下:8kb flash ro

11、m,可以擦除1000次以上,数据保存10年。由于本系统对cpu运算速度要求很高,需要执行很复杂的运算,方案一成本比较低,适合做设计,方案二运算速度高,性能好,所以两种方案都有可取之处。选用方案一作为主方案,方案二作为备用方案。1.3.3 显示模块的选择 方案一:使用液晶显示屏显示时间数字。 液晶显示屏(lcd)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。但由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多,其成本也偏高。在使用时,不能有静电干扰,否则易烧坏液晶的显

12、示芯片,不易维护。方案二:oled,即有机发光二极管(organic light-emitting diode) ,又称为有机电激光显示(organic electroluminesence display, oeld)具备轻薄、省电、超强兼容性、等特性,因此 oled 屏幕却具备了许多 lcd 不可比拟的优势。 目前 oled 显示屏广泛用于手机、mp3、工控显示设备上,具有亮度高、显示精度高、功耗低等特点。 根据以上的论述,采用方案二。在本系统中,我们采用了八段四位一体数码管串口的动态显示。1.3.4总体方案论证与选择按照系统设计功能的要求,初步确定系统由主控模块、时控模块、及显示模块和共

13、3个模块组成。主控芯片使用51系列stc89c52rc单片机,时钟芯片使用美国dallas公司推出的一种高性能、低功耗、带ram的实时时钟ds1302。采用ds1302作为计时芯片,可以做到计时准确。更重要的是,ds1302可以在很小电流的后备电源(2.55.5v电源,再2.5v时耗电小于300na),而且ds1302可以编程选择多种充电电流来为后备电源进行慢速充电,可以保证后备电源基本不耗电。显示模块采用oled有机发光二极管。第二章 系统硬件电路设计2.2系统硬件概述 2.2.1 主控制器stc89c52rc stc89c52rc单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机

14、,指令代码完全兼容传统8051单片机,12时钟、机器周期和6时钟、机器周期可以任意选择。 主要特性如下: 增强型8051单片机,6时钟、机器周期和12时钟、机器周期可以任意选择,指令代码完全兼容传统8051单片机。 工作电压:5.5v3.3v 工作频率范围:044mhz。 用户应用程序空间为8k字节 片上集成512字节ram 通用i/o口32个,复位后为:p1/p2/p3/p4是准双向口/弱上位,p0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为i/o口用时,需加上拉电阻。 isp(在系统可编程)/iap(再应用可编程),无需专用编程器,无需专用仿真器,可通过串口(rxd/p3.0,

15、txd/p3.1 )直接下载用户程序,数秒即可完成一片。 具有eeprom功能 具有看门狗功能 共3个16位定时器/计数器。及定时器t0、t1、t2 外部中断4路,下降沿中断或低电平触发电路,power down模式可由外部中断低电平触发中断方式唤醒 通用异步串行口(uart),还可用定时器实现多个uart 工作温度范围:-40+85度(工业级)/075度(商业级) pdip封装2.2.2时钟电路ds1302 ds1302的性能特性: 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行比较; 用于高速数据暂存的31*8位ram; 最少引脚的串行i/o; 2.55.5v电压工作范围; 2

16、.5v时耗小于300na; 用于时钟或ram数据读/写的单字节或多字节(脉冲方式)数据传送方式; 简单的三线接口; 可选的慢速充电(至vcc1)的能力。ds1302在任何数据传送时必须先初始化,把rst脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在sclk的上升沿被访问到。在开始8个时钟周期,把命令字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8+8,在多字节方式下为8+字节数,最大可达248字节数。如果在传送过程中置rst脚为低电平,则会终止本次数据传送,并且i/o引脚变为高阻态。上电运行时,在vcc2.5v之前,rst

17、脚必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。ds1302的控制字如表所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到ds1302中。位6如果为0,则表示存取日历时钟数据;为1则表示存取ram数据。位51(a4a0)指示操作单元的地址。最低有效位(位0)如果为0,则表示药进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。为了提高对32个地址寻址能力(地址/命令位15=逻辑1),可以把时钟/日历或ram寄存器规定为多字节(burst)方式。位6规定时钟或ram,而位0规定读或写。在时钟/日历寄存器中的地址931或ram寄存器中

18、的地址31不能存储数据。在多字节方式下,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写ram时,为了传送数据不必写所有的31字节,不管是否谢了全部31字节,所写的每一字节都将传送至ram。表2.1 ds1302控制字 ds1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为bcd码形式。其日历、时间寄存器及其控制字如上表所示,其中奇数为读操作,偶数为写操作。时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,ds1302停止振荡,进入低功耗的备份方式,通常在对ds1302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,

19、时钟将开始启动。 am-pm/12-24小时方式:小时寄存器的位7定义为12或24小时方式选择位。它为高电平时,选择12小时方式。在此方式下,位5为第二个10小时位(2023h)。ds1302的晶振选用32768hz,电容推荐值为6pf。因为振荡频率较低,也可以不接电容,对计时精度影响不大。2.2.3 oled显示模块oled 模块采用 4 线 spi 操作,黄蓝双色屏和蓝色屏操作相同。管脚从左到右定义为:gnd: 电源地vcc: 供电电源 3.3v、5v 都可以d0: clk 时钟d1: mosi 数据res: 复位dc: 数据/命 第3章 系统的软件设计3.1 程序设计电子时钟的程序主要包

20、括3个方面的内容:一是ds1302从单片机中读取数据进行计数,二是利用按键进行时间的调整,三是单片机中读取ds1302中的数据驱动oled数码管显示时间。stc89c52rc单片机主要i/o口的分配:p10、p11、p12分别接时钟芯片的sclk、i/o、rst引脚,p13、p14、p15、p16接四个独立按键。 第4章 结束语2013年10月,我开始了我的毕业论文工作,时至今日,论文基本完成。从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。历经了一个多月的奋战,紧张而又充实的毕业设计终于落下了帷幕。回想这段日子的经历和感受,我感慨万千,在这次毕业设计的过程

21、中,我拥有了无数难忘的回忆和收获。当我终于完成了所有打字、绘图、排版、校对的任务后整个人都很累,但同时看着电脑荧屏上的毕业设计稿件我的心里是甜的,我觉得这一切都值了。这次毕业论文的制作过程是我的一次再学习,再提高的过程。在论文中我充分地运用了大学期间所学到的知识。我不会忘记这难忘的几个月的时间。毕业论文的制作给了我难忘的回忆。在我徜徉书海查找资料的日子里,面对无数书本的罗列,最难忘的是每次找到资料时的激动和兴奋;亲手用protel dxp设计电路图的时间里,记忆最深的是每一步小小思路实现时那幸福的心情;为了论文我曾赶稿到深夜,但看着亲手打出的一字一句,心里满满的只有喜悦毫无疲惫。这段旅程看似荆

22、棘密布,实则蕴藏着无尽的宝藏。我从资料的收集中,掌握了很多单片机及其接口应用的知识,让我对我所学过的知识有所巩固和提高,并且让我对当今单片机的最新发展技术有所了解。在整个过程中,我学到了新知识,增长了见识。在今后的日子里,我仍然要不断地充实自己,争取在所学领域有所作为。脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。在这次毕业设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非

23、常感谢帮助我的同学。在此更要感谢我的指导老师和同学,是你们的细心指导和关怀,使我能够顺利的完成毕业论文。在此我要向石老师致以最衷心的感谢和敬意。程序 /main.c/#include "reg52.h"#include "oled.h"#include "ds1302.h" #define uchar unsigned char #define uint unsigned int uchar hour,minute,second,year,mooth,day,week;void main_oled_display(void); /ol

24、ed显示函数void time_oled_display(void); /oled显示时间函数void day_oled_display(void); /oled显示日期函数void main_time_delay(ushort16 ustime); /延时函数void main(void) oled_init(); /modifytime(13,11,3,10,42,10); /初始化ds3231时钟,2013/11/2,09/20/30 initds1302(); /烧写一次时间初值即可,以后只要读出时间 main_oled_display();/每次开机先用汉字显示设计者信息 while

25、(1) gettime_ds1302(); /调用后能一次读出ds3231中数据放在数组ds3231_buf中 time_oled_display();/显示当前时间 day_oled_display(); /oled在指定位置显示当前日期 return;/oled显示时间函数void time_oled_display(void)hour=tableds13022; /gps或时钟芯片读取时间放在此变量中minute=tableds13021; /gps或时钟芯片读取时间放在此变量中second=tableds13020; /gps或时钟芯片读取时间放在此变量中oled_p16x32imag

26、e(0, 0, hour/10);/大字体显示小时十位值oled_p16x32image(16, 0, hour%10);/大字体显示小时个位值oled_p16x32image(32, 0, 10); /显示大字体冒号oled_p16x32image(48, 0, minute/10);/大字体显示分钟十位值oled_p16x32image(64, 0, minute%10);/大字体显示分钟个位值oled_p6x8char(80,3,second/10+'0');/小字体显示秒钟十位值oled_p6x8char(88,3,second%10+'0');/小字体

27、显示秒钟个位值/oled显示日期函数void day_oled_display(void)year=tableds13026; /gps或时钟芯片读取时间放在此变量中mooth=tableds13024; /gps或时钟芯片读取时间放在此变量中day=tableds13023; /gps或时钟芯片读取时间放在此变量中oled_p8x16char(0, 5, 2+'0');oled_p8x16char(8, 5, 0+'0');oled_p8x16char(16, 5, year/10+'0');oled_p8x16char(24, 5, year

28、%10+'0');/显示20*年oled_p8x16char(32, 5, '-'); /分隔标记oled_p8x16char(40, 5, mooth/10+'0');oled_p8x16char(48, 5, mooth%10+'0');/显示月oled_p8x16char(56, 5, '-'); /oled_p8x16char(64, 5, day/10+'0');/显示日期oled_p8x16char(72, 5, day%10+'0');void main_oled_di

29、splay(void) ushort16 i; oled_p14x16str(32, 0, (uchar8*)"景德镇学院"); oled_p14x16str(16, 1, (uchar8*)"机械电子工程系"); for (i = 0; i <= 100; i+) main_time_delay(40); oled_printchar(58, 5, (char8)i); main_time_delay(500); oled_fill(0x00); /清屏 return;void main_time_delay(ushort16 ustime) u

30、char8 j; long32 i; for (i = (long32)10 * ustime; i > 0; i-) for(j = 110; j > 0; j-) return;/main.c/ / ds1302.c/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit rst=p12;sbit dat=p11;sbit clk=p10;void ds1302_write(char comm,char dat1)char temp,t;rst=0;clk=0;rst=1;t

31、emp=comm;for(t=0;t<8;t+)if(temp&0x01)dat=1;else dat=0;clk=1;temp=(temp>>1);clk=0;temp=dat1;for(t=0;t<8;t+)if(temp&0x01)=1)/0000 0001dat=1;else dat=0;clk=1;temp=temp>>1;clk=0;rst=0;uchar ds1302_read(char comm)char temp,t;rst=0;clk=0;rst=1;temp=comm;for(t=0;t<8;t+)if(temp&

32、amp;0x01)dat=1;else dat=0;clk=1;temp=temp>>1;clk=0;temp=0;/00000000 for(t=0;t<8;t+)temp=temp>>1;if(dat=1)temp=temp|0x80;else temp=temp&0x7f;clk=1;clk=0;rst=0;return temp;/ds1302.c/#ifndef _ds1302_h_#define _ds1302_h_/ds1302管脚定义sbit t_clk=p05; /位定义1302芯片的接口,根据时钟芯片与单片机实际连接进行修改sbit t

33、_io=p06; /位定义1302芯片的接口,根据时钟芯片与单片机实际连接进行修改sbit t_rst=p07; /位定义1302芯片的接口,根据时钟芯片与单片机实际连接进行修改unsigned char tableds13027=55,59, 23, 4, 3, 5, 11; /初始化时时间日期设置,由使用者进行修 /秒 分 时 日 月 星期 年/ds1302头文件中所有函数声明(7个)void delay1us(unsigned int k);void write1302(unsigned char );/向1302写一个字节数据void writeset1302(unsigned cha

34、r ,unsigned char );/根据命令字,向1302写一个字节数据unsigned char read1302(void);/从1302读一个字节数据unsigned char readset1302(unsigned char cmd);/根据命令字从1302读取一个字节数据void initds1302(void);/初始化1302 ,同时会将数组tableds1302中初始值写入到时钟芯片内void gettime_ds1302(void);/获取1302的时间void delay1us(unsigned int k)unsigned int i;for(i=0;i<k;

35、i+);/*函数功能:向1302写一个字节数据入口参数:x*/ void write1302(unsigned char dat) unsigned char i; t_clk=0; /拉低t_clk,为脉冲上升沿写入数据做好准备 delay1us(2); /稍微等待,使硬件做好准备 for(i=0;i<8;i+) /连续写8个二进制位数据 t_io=dat&0x01; /取出dat的第0位数据写入1302delay1us(2); /稍微等待,使硬件做好准备t_clk=1; /上升沿写入数据delay1us(2); /稍微等待,使硬件做好准备t_clk=0; /重新拉低t_clk

36、,形成脉冲dat>>=1; /将dat的各数据位右移1位,准备写入下一个数据位 void writeset1302(unsigned char cmd,unsigned char dat)t_rst=0; /禁止数据传递 t_clk=0; /确保写数居前t_clk被拉低t_rst=1; /启动数据传输delay1us(2); /稍微等待,使硬件做好准备write1302(cmd); /写入命令字write1302(dat/10<<4)|(dat%10); /写数据t_clk=1; /将时钟电平置于已知状态t_rst=0; /禁止数据传递unsigned char rea

37、d1302(void) unsigned char i,dat;delay1us(2); /稍微等待,使硬件做好准备for(i=0;i<8;i+) /连续读8个二进制位数据dat>>=1; if(t_io=1) /如果读出的数据是1dat|=0x80; /将1取出,写在dat的最高位 t_clk=1; /将t_clk置于高电平,为下降沿读出delay1us(2); /稍微等待t_clk=0; /拉低t_clk,形成脉冲下降沿delay1us(2); /稍微等待 return dat; /将读出的数据返回 unsigned char readset1302(unsigned c

38、har cmd)unsigned char temp,dat1,dat2; t_rst=0; /拉低t_rst t_clk=0; /确保写数居前t_clk被拉低 t_rst=1; /启动数据传输 write1302(cmd); /写入命令字 temp=read1302(); /读出数据 t_clk=1; /将时钟电平置于已知状态 t_rst=0; /禁止数据传递dat1=temp/16; /16进制转成bcddat2=temp%16;temp=dat1*10+dat2; /转换成10进制数字 return (temp); /将读出的数据返回/*函数功能: 1302进行初始化设置*/ void

39、initds1302(void)unsigned char i,add;add=0x80;writeset1302(0x8e,0x00); /允许写入for(i=0;i<7;i+)writeset1302(add,tableds1302i); add+=2; writeset1302(0x90,0xa6); /写充电控制寄存器.writeset1302(0x8e,0x80); /禁止写入/*程序功能:获取ds1302时间*/void gettime_ds1302()unsigned char i,add=0x81;writeset1302(0x8e,0x00); /允许向ds1302写入

40、数据for(i=0;i<7;i+) tableds1302i=readset1302(add); /获得的数据已转换为十进制 add+=2;writeset1302(0x8e,0x80); /获取完一次时间,禁止向ds1302写入数据,提高可靠#endif /oled.h/#ifndef _oled_h_#define _oled_h_#include <intrins.h>/#include "oled.h"#define oled_image_white 1#define oled_image_black 0#define oled_max_row_n

41、um 64#define oled_max_column_num 128#ifndef void #define void void#endif /* void */#ifndef uchar8 #define uchar8 unsigned char#endif /* uchar8 */#ifndef char8 #define char8 char #endif /* char8 */#ifndef ushort16 #define ushort16 unsigned short#endif /* ushort16 */#ifndef short16 #define short16 sho

42、rt#endif /* short16 */#ifndef ulong32 #define ulong32 unsigned long int #endif /* ulong32 */#ifndef long32 #define long32 long int#endif /* long32 */#ifndef ulong64 #define ulong64 unsigned long long int#endif /* ulong64 */#ifndef long64 #define long64 long long int#endif /* long64 */#ifndef true #d

43、efine true 1#endif /* true */#ifndef false #define false 0#endif /* false */sbit oled_scl = p10; /oled电路板上d0脚接51单片机p1.0sbit oled_sda = p11; /oled电路板上d1脚接51单片机p1.1sbit oled_rst = p12; /oled电路板上rst脚接51单片机p1.2sbit oled_dc = p13; /oled电路板上dc脚接51单片机p1.3const uchar8 code big_numbr64=/*- 调入了一幅图像:阴码、列行式、逆向1

44、6×32点阵 -*/*- 宽度x高度=16x32 数字0 -*/ 0x00,0xf8,0xf4,0xec,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0xcc,0xf4,0xf8,0x00,0x00,0xff,0x7f,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x7f,0xff,0x00,0x00,0xfe,0xfc,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xfc,0xfe,0x00,0x00,0x5f,0x6f,0x77,0x

45、70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x6f,0x5f,0x3f,0x00,/*"数字0.bmp",0*/, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xf8,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

46、0x00,0xf8,0xfc,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x1f,0x3f,0x00,/*"数字1.bmp",1*/,0x00,0x04,0x0c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0xcc,0xf4,0xf8,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xbf,0x7f,0xff,0x00,0x00,0xfe

47、,0xfd,0xfb,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x00,0x00,0x5f,0x6f,0x77,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x60,0x40,0x00,/*"数字2.bmp",2*/,0x00,0x04,0x0c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0xec,0xf4,0xf8,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x8

48、0,0x80,0x80,0x80,0xbf,0x7f,0xff,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xfb,0xfd,0xfe,0x00,0x00,0x40,0x60,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x6f,0x5f,0x3f,0x00,/*"数字3.bmp",3*/,0x00,0xfc,0xf8,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xf0,0xf8,0x00,0x00,0xff,0x7f,0xbf,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xbf,0x7f,0xff,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xfb,0xfd,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x1f,0x3f,0x00,/*"数字4.bmp",4*/,0x00,0xf8,0xf4

温馨提示

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

评论

0/150

提交评论