当前位置:文档之家› 12864电子万年历

12864电子万年历

12864电子万年历
12864电子万年历

最近仿制了杜洋老师的12864电子万年历,今天与大家分享一下

背面

Stc单片机专用下载器

温度传感器通过接口扩展到线路板外消除元件温升对温度精度的影响,电源采用usb接口或

者带有dc005插头的电源适配器进行供电

源程序

DY12864LCC_V2.hex

基于51单片机的万年历的设计

单片机课程实训SCM PRACTICAL TRAINING

目录 第一部分课程设计任务书 (1) 一、课程设计题目 (1) 二、课程设计时间 (1) 三、实训提交方式 (1) 四、设计要求 (1) 第二部分课程设计报告 (2) 一、单片机发展概况 (2) 二、MCS-51单片机系统简介 (2) 三、设计思想 (3) 四、硬件电路设计 (3) 1. 总体设计 (3) 2. 晶振电路 (4) 3. 复位电路 (4) 4. DS1302时钟电路 (5) 5. 温度采集系统电路 (5) 6. 按键调整电路 (6) 7. 闹钟提示电路 (6) 五、软件设计框图 (7) 六、程序源代码 (8) 1. 主程序 (8) 2. 温度控制程序 (11) 3. 日历设置程序 (13) 4. 时钟控制程序 (18) 5. 显示设置程序 (20) 七、结束语 (23) 八、课程设计小组分工 (23) 九、参考文献 (23)

第一部分课程设计任务书 一、课程设计题目 用中小规模集成芯片设计制作万年历。 二、课程设计时间 五天 三、实训提交方式 提交实训设计报告电子版与纸质版 四、设计要求 (1)显示年、月、日、时、分、秒和星期,并有相应的农历显示。(2)可通过键盘自动调整时间。 (3)具有闹钟功能。 (4)能够显示环境温度,误差小于±1℃ (5)计时精度:月误差小于20秒。

第二部分课程设计报告 一、单片机发展概况 单片机诞生于20世纪70年代末,它的发展史大致可分为三个阶段: 第一阶段(1976-1978):初级单片机微处理阶段。该时期的单片机具有 8 位CPU,并行 I/O 端口、8 位时序同步计数器,寻址范围 4KB,但是没有串行口。 第二阶段(1978-1982):高性能单片机微机处理阶段,该时期的单片机具有I/O 串行端口,有多级中断处理系统,15 位时序同步技术器,RAM、ROM 容量加大,寻址范围可达 64KB。 第三阶段(1982-至今)位单片机微处理改良型及 16 位单片机微处理阶段民用电子产品、计算机系统中的部件控制器、智能仪器仪表、工业测控、网络与通信的职能接口、军工领域、办公自动化、集散控制系统、并行多机处理系统和局域网络系统。 二、MCS-51单片机系统简介 MCS-51系列单片机产品都是以Intel公司最早的典型产品8051为核心构成的。MCS-51单片机由CPU 、RAM 、ROM 、I/O接口、定时器/计数器、中断系统、内部总线等部件组成。8051单片机的基本性能有: ◆8位CPU; ◆布尔代数处理器,具有位寻址能力; ◆128B内部RAM,21个专用寄存器; ◆4KB内部掩膜ROM; ◆2个16位可编程二进制加1定时器/计数器; ◆32个(4×8位)双向可独立寻址的I/O口; ◆1个全双工UART(异步串行通信口); ◆5个中断源,两级中断结构; ◆片内振荡器及时钟电路,晶振频率为1.2MHz~12MHz; ◆外部程序/数据存储器寻址空间均为64KB; ◆111条指令,大部分为单字节指令; ◆单一+5V电源供电,双列直插40引脚DIP封装。

基于51单片机的12864万年历

#include // 该程序具有显示日期、月份、日期和时间功能#include #include #define uchar unsigned char #define uint unsigned int #define sint signed int #define disp_off 0x3e //显示关 #define disp_on 0x3f //显示开 #define disp_x 0xb8 //页地址为0页 #define disp_z 0xc0 //行地址为0行 #define disp_y 0x40 //列地址为0列 #define comm 0 //命令标志位 #define dat1 1 //数据标志位 #define data_ora P0 //液晶12864的数据端与单片机的P0相连 sbit di =P2^0; //Data or Instrument Select,H:写数据,L:写指令sbit rw =P2^1; //Write or Read,H:read,L:write sbit e =P2^4; //读写使能 sbit cs1=P2^2; //cs1=H,选择左半屏 sbit cs2=P2^3; //cs2=H,选择右半屏

sbit clk=P1^0; //8563 clk sbit dat=P1^1; //8563 data uchar fen=0x42,miao=0x38,shi=0x17,riqi=0x02,//设置时间用yuefen=0x09,xingqi=0x00,nian=0x07,zhongduan;//设置时间用uchar code tabma[10][16]= //阴码点阵格式、取模方式为列行式、逆向取模(低位在前),//十六进制输出,中文16*16,英文8*16 宋体 { //0(0) 1(1) 2(2) 3(3) 4(4) 5(5) 6(6) 7(7) 8(8) 9(9) {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00}, /*"0",0*/ {0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00}, /*"1",1*/ {0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00}, /*"2",2*/

基于单片机的电子万年历设计

基于单片机的电子万年历设计 摘要:本文借助电路仿真软件Protues对基于AT89S52单片机的电子万年历的设计方法及仿真进行了全面的阐述。该电子万年历在硬件方面主要采用AT89S52单片机作为主控核心,由DS1302时钟芯片提供时钟、12864LCD液晶显示屏显示。在软件方面,主要包括日历程序、时间调整程序,显示程序等。所有程序编写完成后,在Keil软件中进行调试,确定没有问题后,在Proteus软件中进行电路设计并仿真。 论文主要研究了液晶显示器LCD及时钟芯片DS1302,温度传感器DS18B20与单片机之间的硬件互联及通信,对数种硬件连接方案进行了详尽的比较,在软件方面对日历算法也进行了论述。 研究结果表明,由于万年历的应用相当普遍,所以其设计的核心在于硬件成本的节约软件算法的优化,力求做到物美价廉,才能拥有更广阔的市场前景。关键词:单片机;DS1302;DS18B20;LCD12864 The Design Of Electronic Calender Based On MCU Abstract:This paper mainly discuss the design of electronic calender based on AT89S52 with the help of Protues.On the hardware side, the electronic calendar using AT89S52 microcontroller as the main control center, clock provided by the DS1302 clock chip , 12864LCDdot matrix LCD display. In terms of software, including calendar program, time to adjust procedures, display procedures. All programming is complete, the Keil software debugging, make sure there is no problem, in the Proteus software embedded within the simulated MCU. This article focus on liquid crystal screen LCD12864 and clock chip DS1302,temperature sensor DS18B20 which connected and communicated with Microcontroller.Several solutions will also compared with each other.On software side,calender calculation will be discussed as well. The results are as follows:as electronic calender are widely used in our daily life.It should be chip and convenient so as to win more profit.

12864显示电子万年历

12864显示电子万年历 /*************************************************************** 系统名称:电子万年历 创建人:w418781840 日期:2008,7,18 功能描述:LCD12864串行模式显示,DS1302读取时间年月份, 18B20 读取温度 ****************************************************************/ #include #include #include #define uchar unsigned char #define uint unsigned int /*------------LCD12864相关声明-----------------------------*/ #define com 0 #define dat 1 sbit cs =P1^6; sbit sid=P1^4; sbit sck=P1^2; uchar code TAB1[]={"电字钟w418781840"};//第一行初始化. uchar code TAB2[]={"20 年月日"}; //第二行 uchar code TAB3[]={"星期: : "}; //第三行 uchar code TAB4[]={"室温: ℃"}; //第四行 /*----------------------DS1302相关声明-------------------------*/ char TAB_1302[]={ 0x00,0x29,0x02, //秒:分:时. 0x18,0x06,0x06,0x08}; //日:月:星期:年. uchar code TAB_XQ[]={"一二三四五六日"};//把DS1302数字日期转换为中文字符. sbit T_CLK=P2^4; /* 实时时钟的时钟线引脚*/ sbit T_IO=P2^5; /* 实时时钟的数据线*/ sbit T_RST=P2^6; /* 实时时钟的复位线引脚*/ uchar bdata datbyte; sbit datbyte0=datbyte^0; sbit datbyte7=datbyte^7; /*--------------18B20相关声明-------------------------------*/ uchar dis1[16]; sbit DQ=P1^0; /*DS18B20温度检测*/

12864LCD万年历

12864LCD+DS1302万年历设计proteus仿真 (2011-05-18 23:09:40) 标签: it 原理图 程序代码 //DS1302与12864设计的可调式电子日历与时钟// #include #include #include #define uchar unsigned char #define uint unsigned int extern void LCD_Initialize(); extern void Display_A_Char_8x16(ucharP,ucharL,uchar *M)reentrant; extern void Display_A_WORD(ucharP,ucharL,uchar *M)reentrant;

//在调整日期时间时,用该位决定是否反白显示// extern bit Reverse_Display; sbit SDA =P1^0; //DS1302数据线 sbit CLK =P1^1; //DS1302时钟线 sbit RST =P1^2; //DS1302复位线 sbit K1 =P3^4; //选择 sbit K2 =P3^5; //加 sbit K3 =P3^6; //减 sbit K4 =P3^7; //确定 uchartCount =0; //一年中每月的天数,2月的天数由年份决定 ucharMonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31}; //所读取的日期时间 ucharDateTime[7]; //当前调整的时间对象:秒,分,时,日,月,年(0,1,2,3,4,6) //5对应星期,星期调节由年月日调整自动完成 char Adjust_Index=-1; //水平与垂直偏移 ucharH_Offset=10,V_Page_Offset=0; //年月日,星期,时分秒汉字点阵(16*16)------ uchar code DATE_TIME_WORDS[]= {/ / 0x40,0x20,0x10,0x0C,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00, 0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00, / / 0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x00,

12864显示动态时钟

LCD1286显示模拟指针时钟 作者: 辅导老师: 摘要:现今,高精度的计时工具大多数都使用了石英体振荡器,于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式转动,用LCD12864显示器代替数码管显示时间,即减小了计时误差,又不失传统的指针风格。这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,灵活性好。本系统利用单片机实现数字时钟功能的主要内容,其中AT89C52是核心元件同时采用LCD12864显示模拟指针时钟的“时”,“分”,“秒”。它的计时周期为12小时,显满刻度为“11时59分59秒”,另外具有校时功能。 关键词:模拟指针时钟;12864;AT89C52; LCD1286 display the simulation pointer clock Abstract: today, high precision timing tool most used quartz oscillators, body in electric clock, quartz watch, quartz clocks are used quartz technology, so when the higher accuracy, good stability, easy to use, does not require constant adjustment, digital electric clock time with integrated circuit, decoding instead of mechanical rotation, with LCD12864 display instead of digital pipe display time, which reduced the timing error, and do not break the traditional pointer style. This table is, points, seconds show time function, and can be made, and the points when great flexibility. This system using the single chip microcomputer digital clock function of the main content, which is the core element and the AT89C52 LCD12864 display the simulation of the clock "" pointer," points ", "second". Its timing cycle for 12 hours, show when full scale for "11 59 points 59 seconds, in addition has the reset" function. Keywords: simulation pointer clock; 12864; AT89C52; 一、12864点阵液晶显示器的原理介绍 通常所说的12864LCD显示块是所说的点阵液晶显示模块,就是由128*64个液晶显示点组成的一个128列*64行的阵列,所以也就叫成了12864。每个显示点都对应着有一位二进制数,0表示灭,1表示亮。存储这些点阵信息的RAM 被称为显示数据存储器。如果要显示某个图形或汉字就是将相应的点阵信息写入到对应的存储单元中。图形或汉字的点阵信息是由自己设计,这时候问题的关键是显示点在液晶屏上的位置与其在存储器中的地址之间的关系。显示点在64*64液晶屏上的位置由列号(line,0~63)与行号(line,0~63)确定。512*8 bits RAM 中某个存储单元的地址由页地址(Xpage,0~7)和列地址(Yaddress,0~63)确定。每个存储单元存储8个液晶点的显示信息。 由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,每半屏有一个512*8 bits显示数据RAM。左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。 如果点亮12864的屏中(20,30)位置上的液晶点,因列地址30小于64,该点在左半屏第29列,所以CS1有效;行地址20除以8取整得2,取余得4,该点在RAM中页地址为2,在字节中的序号为4;所以将二进制数单元中即点亮(20,30)上的液晶点。这是为了使液晶点位置信息与存储地址的对应关系更直

电子万年历

第一章绪论 1.1设计背景 从改革开放开始,电子工业已成为科技创新的重要领域,我国的电子产业也在新世纪开始高速发展,无论是产业结构,产业规模和技术水平都有了十分明显的进步和提升,而且电子产品在各个领域都有开创性的发展,使我们的生活变得更加智能化,为我国经济的发展做出了杰出的贡献。其中,单片机的大规模使用为我们的生活创造了极大的便利,可以说无时无刻不在影响着我们的生活。何为单片机,单片机全名为单片微控制器,它的结构组成就是将微型计算机的基本功能部件全都集成在一个半导体芯片上。尽管仅仅是一个芯片,但从单片机的构成和功能的角度来看充分具备一个计算机系统的中央处理功能。最重要的优点是,单片机体积小巧,可以任意嵌入到任何符合条件的应用系统中作为中央处理器进行指挥决策,是系统实现完全的智能化。当今世界,单片机已经无时无刻不在我们生活的周边存在,各类电子产品几乎都以单片机作为主控核心,通过单片机的控制使之更加智能快速,使我们的生活更加舒畅和方便。正是随着日常周边科学技术的进步,人们对待生活用品的要求也在逐步提高,时钟亦是如此,从古至今,人们对时间的概念就非常重视,从日晷到摆钟,经历了百年的发展,如今,人们对时钟的要求不仅仅是能够知道时间,还需要能够知道日期,星期,节气,天气情况等等,以便于满足人们对生活的各种需要,由此电子万年历就诞生了,正是因为电子万年历功能的多样性,使它在应用在各种场合,人们对它的需求量也就却来越大,电子万年历的发展空间也越来越广阔,成为了一项重要的产业。 1.2设计的目的及意义 中国从古至今就有重视时间的好传统,农民通过日照和鸡叫开始一天的劳作,商人通过古老的计时工具来确认是否应该开门迎客,学士知道时间后则开始一天的读书学习,这种传统一直绵延至今。当今社会,人们的生活节奏飞快,在工作中讲究快速和效率,需要在最短的时间内完成最合理的工作要求,所以人们通常需要在最短的时间内了解到最丰富的信息,人们不满足于只能看到此时此刻的时间信息,还需要了解过去和未来几天内的时间情况,包括农历,天

LCD12864单片机电子万年历程序

********************************* #include<> #include<> #define LCD_Data P0 #define uchar unsigned char unsigned char sec,min,hour,day,month,year,cen,week, next,aa,bb,cc,dd,mm,temp0,LunarMonth, LunarDay,LunarYear; int temp; uchar tt=1; bit c_moon; bit cenbit=1; bit w; sbit LCD_RS=P2^0; sbit LCD_RW=P2^1; sbit LCD_E=P2^2; sbit PSB=P2^3; sbit DS1302_CLK=P3^7; sbit DS1302_IO=P3^6; sbit DS1302_RST=P3^5; sbit DS18B20=P2^5; sbit speak=P2^7; sbit SetKey=P1^4; // 按键功 能:设置 sbit SureKey=P1^5; // 按键功 能:确认 sbit PlusKey=P1^6; // 按键功 能:加 sbit ReduceKey=P1^7; // 按键功 能:减 sbit scl=P1^1; sbit sda=P1^0; void DisplayShengXiao(void); void delay(unsigned int a) // 延时 1MS/ 次 { unsigned char i; while(--a) { for(i=0;i<125;i++) ; } }

带温度无字库12864的万年历程序

SW08A15_带温度无字库12864的万年历程序 文章来源:网络转载┊发布时间:2008-8-22 21:43:01 ┊浏览次数:283 本例程完成了万年历的显示,包括设置时间,农历,温度,1302的初始化以及帮助界面,采用不带字库的12864,所以整体程序比较大,编译完成后,不能在89C52中运行,建议使用89C54。本程序还有很多冗杂之处,未做调整,全做抛砖引玉。 #include "reg52.h" #include "sw08a15.h" #include "1302.h" #include "12864.h" #include "intrins.h" uchar num,week; uchar timeNow[6]; uint LunarCal; uchar SolarCalYear, SolarCalMonth, SolarCalDay; uchar times=0; uchar wendu=0; uchar code dian[32]={ 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, 0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,/*:*/ }; uchar code hz[][32]={ {0x40,0x20,0x10,0x0C,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00,

0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*"年",0*/ {0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x00, 0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x01,0x01,0x21,0x41,0x3F,0x00,0x00,0x00,0x00},/*"月",1*/ {0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00},/*"日",2*/ {0x00,0x00,0x00,0xBE,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x2A,0x2A,0x3E,0x00,0x00,0x00, 0x00,0x48,0x46,0x41,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x49,0x41,0x40,0x00},/*"星",3*/ {0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00, 0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3F,0x00,0x00},/*"期",4*/ {0x00,0x20,0x18,0x08,0x88,0xE8,0x1F,0x6A,0x88,0x08,0x88,0xC8,0xA8,0x1C,0x08,0x00, 0x08,0x04,0x02,0x41,0xFF,0x40,0x20,0x10,0x01,0x02,0x0D,0x18,0x70,0x20,0x20,0x00},/*"农",5*/ {0x00,0x00,0xFE,0x02,0x22,0x22,0x22,0x22,0xFA,0x22,0x22,0x22,0xE2,0x02,0x02,0x00, 0x40,0x30,0x0F,0x00,0x40,0x20,0x18,0x06,0x01,0x00,0x20,0x60,0x3F,0x00,0x00,0x00},/*"历",6*/ {0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00, 0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00},/*"温",7*/ {0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00, 0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00},/*"度",8*/ {0x00,0x02,0x05,0xE2,0x18,0x04,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00, 0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x18,0x00,0x00},/*"℃",9*/

12864数字时钟毕业设计

安徽职业技术学院 毕业论文 基于STC89C52万年历的设计 姓名:孟小军 指导教师:胡继胜 专业:应用电子技术 班级:电子1022班 2012年11月10日

目录 摘要 (1) 前言 (2) 1.系统基本设计思路 (3) 2.单元电路方案论证 (3) 2.1控制器模块 (3) 2.2计时模块 (3) 2.3显示模块 (3) 2.4最终方案 (3) 3.主要芯片介绍 (4) 3.1STC89C52单片机 (4) 3.2DS18B20温度传感器 (68) 4.程序流程图 (6) 结论 (14) 参考文献.....................................................................................................................错误!未定义书签。致谢.........................................................................................................................错误!未定义书签。附录1原理图...........................................................................................................错误!未定义书签。附录2主要源程序. (35)

基于STC89C52万年历的设计 摘要:本设计采用STC89C52单片机作为主控制器,用DS12C887时钟芯片计时、DS18B20检测温度,单片机通过时钟芯片获取时间数据、DS18B20采集温度信号,处理后把时间和温度数据通过4-16线译码器和锁存器送给15位共阴数码管同步显示年、月、日、时、分、星期和温度。该万年历设有6个按键:S1、S2、S3、S4、S5和S6键,使之具备了校时功能。 关键词:单片机,DS18B20,按键,LCD12864

电子语音播放万年历说明

电子语音播放万年历 1.功能描述 对日期时间计时、温度测量。LCD显示年月日、时分秒,温度值。可设置时间,可将当前时间、温度值语音播放。 2. 产品模块配置 ①EDM314-±12V,±5V直流电源模块。 ②EDM315-变压器。 ③EDM001-MCS51主机 ④EDM605-12864点阵液晶 ⑤EDM103-温度传感器18B20 ⑥EDM403-8位独立按键 ⑦EDM313-AK040语音 ⑧EDM503-扬声器 3. 单元模块电路及功能 4.产品模块连线 各模块连好5V电源 EDM605-12864点阵液晶与EDM001-MCS51连接:DB0-DB7---连---P0.0-P0.7、RST-BL-NC---连---P2.7-P2.0 EDM403-8位独立按键:→-F2----连----- EDM001-MCS51:P3.7-P3.0 EDM103-温度传感器18B20:OUT—连—P1.7 EDM-313-AK040语音模块与EDM001-MCS51连接:RESET—

连—P1.0、PULSE—连—P1.1、BUSY--连—P1.2. EDM-313-AK040语音模块:OUT--连--EDM503-扬声器:SP- EDM503-扬声器:SP+--连5V EDM001-MCS51拨码开关5678拨到ON. 5.产品电路总图 T 1 5 E D R S T P U L S B U S . 3

6.调试方法及步骤 连好线开机后,液晶显示亚龙LOGO,大约6秒后进入主界面,此时按“F1” 键会播放当前温度, 按“F2”键会播放当前时间和当前温度。按“SET”键会进入时间设置界面,->和<-移位,↑和↓加1和减一。OK键保存修改,同时退出。 7.测试点参数

电子万年历

第一章绪论 1.1 设计背景 从改革开放开始,电子工业已成为科技创新的重要领域,我国的电子产业也在新世纪开始高速发展,无论是产业结构,产业规模和技术水平都有了十分明显的进步和提升,而且电子产品在各个领域都有开创性的发展,使我们的生活变得更加智能化,为我国经济的发展做出了杰出的贡献。其中,单片机的大规模使用为我们的生活创造了极大的便利,可以说无时无刻不在影响着我们的生活。何为单片机,单片机全名为单片微控制器,它的结构组成就是将微型计算机的基本功能部件全都集成在一个半导体芯片上。尽管仅仅是一个芯片,但从单片机的构成和功能的角度来看充分具备一个计算机系统的中央处理功能。最重要的优点是,单片机体积小巧,可以任意嵌入到任何符合条件的应用系统中作为中央处理器进行指挥决策,是系统实现完全的智能化。当今世界,单片机已经无时无刻不在我们生活的周边存在,各类电子产品几乎都以单片机作为主控核心,通过单片机的控制使之更加智能快速,使我们的生活更加舒畅和方便。正是随着日常周边科学技术的进步,人们对待生活用品的要求也在逐步提高,时钟亦是如此,从古至今,人们对时间的概念就非常重视,从日晷到摆钟,经历了百年的发展,如今,人们对时钟的要求不仅仅是能够知道时间,还需要能够知道日期,星期,节气,天气情况等等,以便于满足人们对生活的各种需要,由此电子万年历就诞生了,正是因为电子万年历功能的多样性,使它在应用在各种场合,人们对它的需求量也就却来越大,电子万年历的发展空间也越来越广阔,成为了一项重要的产业。 1.2设计的目的及意义 中国从古至今就有重视时间的好传统,农民通过日照和鸡叫开始一天的劳作,商人通过古老的计时工具来确认是否应该开门迎客,学士知道时间后则开始一天的读书学习,这种传统一直绵延至今。当今社会,人们的生活节奏飞快,在工作中讲究快速和效率,需要在最短的时间内完成最合理的工作要求,所以人们通常需要在最短的时间内了解到最丰富的信息,人们不满足于只能看到此时此刻的时间信息,还需要了解过去和未来几天内的时间情况,包括农历,天气,湿度等等。而电子万年历不同于普通的时钟,它在显示时间的同时也能同步显示出年月份,

51单片机12864万年历(图片+主要程序C语言)

51单片机做的12864万年历这是我花了一个星期时间做的万年历; 一开始是一些图片,后面是这个制作的C语言源程序; 希望大家稀饭:

Main.c #include "reg52.h" #include "macroconst.h" #include "keyscan.h" #include "screen.h" #include "18b20.h" #include "ds1302.h" #include "atao_12864.h" #include "24c02.h" idata unsigned char state1[1]; unsigned char screennum=1;//屏幕号 #define time_task_sec 200 //节拍200Hz #define clock 24000000 //晶振 #define max_task 4 //最大任务数 idata unsigned char task_delay[4]; #define task_delay0 time_task_sec/1 //2赫兹18b20 #define task_delay1 time_task_sec/5 //10赫兹屏幕#define task_delay2 time_task_sec/3 //4赫兹1302 #define task_delay3 time_task_sec/20 //20赫兹键盘void init() { unsigned char i; init18b20(); ds1302_init(); initina1(); //---------------------------LCD字库初始化程序RdFromROM(state1,8,1); state[0]=state1[0]; //-------界面 RdFromROM(state1,15,1); state[1]=state1[0];//------- 闹钟 RdFromROM(state1,11,1); key_sound=state1[0];//-------按键音 // state[2]=state1[2]; // state[3]=state1[3]; screennum=1;//------默认一号屏 for(i=0;i

基于at89s52单片机用12864液晶lcd显示带ds18b20测温的万年历电子时钟

用at89s52单片机,12864显示,DS18B20测温 12864液晶显示屏驱动是lcd.h和lcd.c 温度传感器测温在temp.c 单片机底层驱动是A T89X52.H 包含5个文件 A T89X52.H lcd.c lcd.h temp.c nain.c 分别保存成.c文件,运行mian.c /*-------------------------------------------------------------------------- A T89X52.H Header file for the low voltage Flash Atmel A T89C52 and A T89LV52. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. --------------------------------------------------------------------------*/ #ifndef __A T89X52_H__ #define __A T89X52_H__ /*------------------------------------------------ Byte Registers ------------------------------------------------*/ sfr P0 = 0x80; sfr SP= 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D;

基于单片机和12864LCD模块的万年历设计与仿真_陈红

摘要:介绍利用单片机控制液晶显示模块显示电子万年历,给出硬件设计电路,和软件编程设计,通过Proteus软件,对硬件电路和软件编程进行仿真,具有一定的实用价值。 关键词:单片机液晶显示模块C51编程 液晶显示模块在各种测量仪器、测量装置、显示仪表等日用电子产品中的应用越来越广泛,并且对器件的测量精度和显示精度的要求也越来越高,尤其是对时间的测量不但要准确,而且需要读取数值更直观更方便。本文介绍由单片机AT89C52和DS1302控制12864点阵液晶显示模块实现电子万年历的设计,并且用Proteus软件对整个电路进行模拟和仿真。 1系统构成 本系统设计中使用的单片机为AT89C52,其内部是8位的CPU,8KB片内ROM以及256B的可使用的片内RAM,32根并行I/O接口,两个16位的定时/计数器,五个中断源,两个中断优先级的内部结构。其中单片机的外围电路有复位电路,时钟电路。 其次还用到美国DALLAS公司推出的高性能、低功耗、带RAM 的实时时钟电路DS1302,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。 本系统里用12864LCD显示模块来显示万年历的年月日、星期及时间信息,该液晶模块使用KS0108控制器,5V电压驱动,带有背光,内置8192个16×16点阵,128个字符及64×128点阵显示RAM。与外部CPU接口采用并行或者串行两种控制方式。 单片机在控制液晶显示模块的接口方式主要有两种方式,直接访问方式和间接访问方式,直接访问方式是把液晶显示模块作为存储器或I/O设备直接连接到单片机总线上。而间接访问方式是把液晶显示模块作为终端与单片机的并行接口连接,而单片机通过对该并行接口的操作实现对液晶显示。一般在进行液晶显示模块的控制时,采用间接访问的方式。如图2所示。 2软件设计 由于系统实现的功能为万年历显示,这就包括了公历和阴历两种历法的显示,在本文中利用单片机实现公历与农历的转换,采用的是查表的办法。 计算公历日对应的农历日期的方法先计算出公历日离当年元旦的天数,然后查表取得当年的春节日期,计算出春节离元旦的天数,二者相减即可算出公历日离春节的天数。以后只要根据大小月和闰月信息,减一月天数,调整一月农历月份,即可推算出公历日所对应的农历日期。如公历日不到春节日期,农历年要比公历年小一年,农历大小月取前一年的信息。农历月从12月向前推算。由此我们可以计算出公历和阴历的日期。 软件编程的程序主要有几个子程序包括年月日的公历和阴历的计算和显示程序,星期的计算程序和显示程序,图形界面的显示程序,时间的设置与显示程序,按键判断扫描程序。在电路里面还设置了可以对年月日和时间进行调整的三个按键,用来调整日期和时间的显示。主程序的大致流程图如图3所示。 3Proteus软件设计与仿真 按照硬件设计要求,在Proteus软件内搭建硬件仿真电路。如果在没有仿真的情况下直接进行电路板和元器件的焊接调试,不但焊接过程中会出现问题,成功率低也会使设计成本升高,但是使用Proteus软件仿真可以使所设计的电路实用性提高,解决实验设备和实验项目不足的问题。使用Proteus软件对万年历的硬件电路进行设计,并且将C语言编写的程序进行编译后,将生成的.HEX文件载入单片机以后运行,硬件电路图和运行结果如图4所示。 4结语 在单片机与液晶显示模块的接口和软件编程中,关键是要满足液晶模块的时序控制,初始化、操作和写入要显示的内容,通过DS1302的使用,可以降低编写程序的复杂程度。通过Proteus仿真软件平台和Keil编译软件实现单片机控制液晶显示模块的万年历设计与仿真,可以达到比较好的设计效果。由该电路利用相关软件设计印制电路板,就可以制作出实际的电子万年历。不仅降低了开发成本,也使系统的可靠性得到提高。 参考文献: [1]莫禾胜,唐晓辉.基于LCD液晶显示器的时间显示系统设计与制作[J].科技信息.2010(21):106-107. [2]朱奕丹,余文烺.单片机控制的点阵图形液晶显示模块[J].仪表技术. 2007(3):13-15. [3]赵青格.单片机和液晶显示模块接口及驱动设计[J].科学技术与工程. 2007(12):6225-6228. [4]刘金星,李洪文.基于告诉单片机的液晶显示模块控制[J].液晶与显示. 2011(2):88-91. [5]李志广,李晓泉.中文图形12864点阵液晶显示模块与51单片机的并行接口电路及C51程序设计[J].现代显示(自然科学版).2008(7):41-44. 基于单片机和12864LCD模块的万年历设计与仿真陈红1李玮2(1.南京信息职业技术学院2.江苏方天电力技术有限公司) 图1DS1302引脚图 图2间接访问方式的连接图图3流程图图4万年历硬件电路调试仿真效果 信息技术 228

相关主题
文本预览
相关文档 最新文档