单片机电子万历课程设计方案(2)_第1页
单片机电子万历课程设计方案(2)_第2页
单片机电子万历课程设计方案(2)_第3页
单片机电子万历课程设计方案(2)_第4页
单片机电子万历课程设计方案(2)_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、4克夬莘城市科技修院 课程设计报告 课程名称:单片机课程设计 设计题目: 单片机电子万年历课程设计 院系:电气学院 设计组员:苟新兴胡谊周青松 学号:20090023 20090026 20090018 班级:一班 指导教师:蔡学敬 设计时间:2018-6-22 目录 摘要 一、 单片机原理及应用简介 2 二、系统硬件设计 2 2.1引脚功能及管脚电压 2 2.1.1 P0 口3 2.1.2 P1 口 3 2.1.3 P2 口 4 2.1.4 P3 口4 2.1.5RST4 2.1.6 ALE/PROG 4 2.1.7 PSEN5 2.1.8EA/VPP5 2.1.9XTAL15 2.2.0X

2、TAL25 三、系统总体方案 5 3.1.1微处理器5 3.1.2 显示电路 6 四、 硬件电路的总体框图设计 8 五、硬件电路原理图设计 8 六、 主程序流程图设计 10 七、仿真过程11 八、仿真结果11 附一源程序代码13 附二参考文献 36 单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航 装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自 动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、 电子宠物等,这些都离不开单片机。单片机是集CPU ,RAM ,ROM ,定时,计数 和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛

3、应用于智能 产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的 一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、 硬的能力。 本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达 到学习、了解单片机相关指令在各方面的应用。系统由主控制器AT89C52、显 示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能 进行时、分、秒的显示。 关键词:单片机,万年历 一、单片机原理及应用简介 随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发 展。集成技术的最新发展之一是将 CPU和外围芯片,如程序存储器、数据存储 器、并行

4、、串行I/O 口、定时/计数器、中断控制器及其他控制部件集成在一个 芯片之中,制成单片计算机 Si ngle-Chip Microcomputer )。而近年来推出的一 些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调 器、通信控制器、锁相环、DMA、浮点运算单元等。因此,只要外加一些扩展 电路及必要的通道接口就可以构成各种计算机应用系统,如工业控制系统、数 据采集系统、自动测试系统、万年历电子表等。 二、系统硬件设计 2.1引脚功能及管脚电压 AT89C52为8位通用微处理器,采用工业标 T2/P1 0 r 1 k-J40 J Vcc T2EX?l. 1 c 2 33

5、PO, 0 /ABO Fl. 2 c 3 38 11/AD1 PL. 3 c + 3T 3 P0. 2/AD2 Pl. 4 c 5 36 3 PO. 3/AD3 Pl. 5 c 35 3 P0.4/AD4 Pl E E 34 3 P0. 5/AD5 Pl 7 33 PO.E/UE rtsT E 32 P0. RXD/P3. 0 c 10 31 二 Ea;vpf TXD/P3 1 c 11 30 ALE/PED HT3F1 申 ZM5-t1 :TEXT LCD1 AMFiH.E1+ GND . 图12电子万年历的运行效果 九、课程设计体会 通过这一周的课程设计,我学到了不少的知识。把以前没有学好

6、的模拟电 路的知识进行了补充和加强。这使我受益很大。加深了我对于单片机和数字电 路的认识,相信在以后的学习和工作中碰到这些基础的元器件我会更加得心应 手。通过查阅大量的资料,我获得了以前在课堂上学不到的东西,我想这对于 以后的毕业设计,或者工作也好,都是很有帮助的。我很认真地对待这个过程 中的每一个细节,希望自己能做得更好。希望今后还有这样的机会,能够让我 学到更多的知识。在此次的数字钟设计过程中,更进一步地熟悉了芯片的结构及 掌握了各芯片的工作原理和其具体的使用方法。 在连接六进制,十进制,六十进制的进位及十二进制的接法中,要求熟悉逻辑 电路及其芯片各引脚的功能,那么在电路出错时便能准确地找

7、出错误所在并及时 纠正了。 在设计电路中,往往是先仿真后连接实物图,但有时候仿真和电路连接并不 是完全一致的,因此在实际的电路连接中往往容易遗漏。在设计电路的连接图中 出错的主要原因都是接线和芯片的接触不良以及接线的错误所引起的。 对该设计的建议: 此次的电子万年历设计重在于仿真和接线 ,虽然能把电路图接出来,并能正 常显示,但对于电路本身的原理并不是十分熟悉.总的来说,通过这次的设计实验 更进一步地增强了实验的动手能力。 学无止境,我们现在所做的一切都还只是一个开始。 附1源程序代码 /*/ /*不带字库的 12864LCD+DS1302+DS18B20,显示温度、星期带按键、按键提示音的万

8、年 历*/ /*目标器件:89C5251内部空间不够) /* 晶振:12MHZ /*编译环境:Keil * */ */ */ /* #in clude #defi ne uint un sig ned int #defi ne uchar un sig ned char 包含头文彳牛 * uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1 n,temp。 /flag用于读取头文件中的温度值,和显示温度值 /* #defi ne LCDLCDDisp_ On 0 x3f #defi ne LCDLCDDisp_Off 0 x3e #defi ne LC

9、DCol_Add 0 x40 #defi ne Page_Add 0 xb8 #defi ne Start_Li ne 0 xc0 命令字定义 * /* sbit LCDMcs=P0A4 。 sbit LCDScs=P0A3。 sbit LCDEnable=P0A5 。 sbit LCDDi=P0A7。 sbit LCDRW=P0A6。 */ 左半屏使能,当 LCDMcs=1,左半屏显示 右半屏使能,当 LCDScs=1,右半屏显示 使能 数据/命令选择RS) 读/写信号 sbit LCRst=P0A2。 sbit LCLight=P0A1。 /复位脚 /背光脚 sbit DQ =卩3人7。/

10、定义DQ引脚为P3.3 /DS1302 时钟芯片与 C51 之间的引脚连接定义 sbit IO=P1A1 。 sbit SCLK=P1A0 。 sbit RST=P1A2。 sbit ACC0=ACCA0 。 sbit ACC7=ACCA7 。 /* ACC 累加器 =A ACC.0=E0H ACC.0 就是 ACC 的第 0位。 Acc 可以位寻址。 累加器 ACC 是一个 8 位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地 位, 是单片机中一个非常关键的单元,很多运算都要通过ACC 来进行。以后在学习指令时, 常用 A 来表示累加器。但有一些地方例外,比如在PUSH 指令中,

11、就必须用 ACC 这样的 名字。 一般的说法, A 代表了累加器中的内容、而 ACC 代表的是累加器的地址。 */ /校时按键与 C51 的引脚连接定义 sbit key1=P3A0 。/设置键 sbit key2=P3A1 。/加键 sbit key3=P3A2 。/减键 sbit buzzer=P3A6 。 /蜂鸣器 char code xnian= * 字模表 * * 固定字符 * /*- 文字 : 年 -*/ /*-宋体12。 此字体下对应的点阵为:宽x高=16x16 -*/ 0 x40,0 x20,0 x10,0 x0C,0 xE3,0 x22,0 x22,0 x22,0 xFE,0

12、 x22,0 x22,0 x22,0 x22,0 x02,0 x00,0 x00, 0 x04,0 x04,0 x04,0 x04,0 x07,0 x04,0 x04,0 x04,0 xFF,0 x04,0 x04,0 x04,0 x04,0 x04,0 x04,0 x00, 。 char code xyue= /*- 文字 : 月 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 x00,0 x00,0 xFF,0 x11,0 x11,0 x11,0 x11,0 x11,0 xFF,0 x00,0 x00,0 x00

13、,0 x00, 0 x00,0 x40,0 x20,0 x10,0 x0C,0 x03,0 x01,0 x01,0 x01,0 x21,0 x41,0 x3F,0 x00,0 x00,0 x00,0 x00, 。 char code xri= /*- 文字 : 日 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 xFE,0 x42,0 x42,0 x42,0 x42,0 x42,0 x42,0 x42,0 xFE,0 x00,0 x00,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x3F,0 x

14、10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x3F,0 x00,0 x00,0 x00,0 x00, 。 char code xxiao= /*- 文字 : 小 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 xC0,0 x70,0 x20,0 x00,0 xFF,0 x00,0 x10,0 x20,0 xC0,0 x80,0 x00,0 x00,0 x00, 0 x04,0 x02,0 x01,0 x00,0 x00,0 x40,0 x80,0 x7F,0 x00,0 x00,

15、0 x00,0 x00,0 x01,0 x07,0 x02,0 x00, 。 char code xshi= /*- 文字 : 时 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 xFC,0 x44,0 x44,0 x44,0 xFC,0 x10,0 x90,0 x10,0 x10,0 x10,0 xFF,0 x10,0 x10,0 x10,0 x00, 0 x00,0 x07,0 x04,0 x04,0 x04,0 x07,0 x00,0 x00,0 x03,0 x40,0 x80,0 x7F,0 x00,0 x00,0 x00,0 x0

16、0, 。 char code xfen2= /*- 文字 : 分 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x80,0 x40,0 x20,0 x98,0 x87,0 x82,0 x80,0 x80,0 x83,0 x84,0 x98,0 x30,0 x60,0 xC0,0 x40,0 x00, 0 x00,0 x80,0 x40,0 x20,0 x10,0 x0F,0 x00,0 x00,0 x20,0 x40,0 x3F,0 x00,0 x00,0 x00,0 x00,0 x00, 。 char code xfen= /*- 文字 : 份 -

17、*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x80,0 x40,0 xE0,0 x98,0 x47,0 xA2,0 x98,0 x87,0 x82,0 x80,0 x87,0 x89,0 xB0,0 x60,0 x20,0 x00, 0 x00,0 x00,0 x7F,0 x00,0 x40,0 x40,0 x20,0 x18,0 x07,0 x00,0 x20,0 x60,0 x3F,0 x00,0 x00,0 x00, 。 char code xzhong= /*- 文字 : 钟 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =

18、16x16 -*/ 0 x40,0 x30,0 x2C,0 xEB,0 x28,0 x28,0 x00,0 xF8,0 x08,0 x08,0 xFF,0 x08,0 x08,0 xF8,0 x00,0 x00, 0 x01,0 x01,0 x01,0 xFF,0 x41,0 x21,0 x00,0 x01,0 x01,0 x01,0 xFF,0 x01,0 x01,0 x01,0 x00,0 x00, 。 char code xtiao= /*- 文字 : 调 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x20,0 x21,0 xEE,0 x04

19、,0 x00,0 x00,0 xFF,0 x29,0 xA9,0 xBF,0 xA9,0 xA9,0 x01,0 xFF,0 x00,0 x00, 0 x00,0 x00,0 x1F,0 x88,0 x44,0 x30,0 x0F,0 x00,0 x0F,0 x04,0 x04,0 x4F,0 x80,0 x7F,0 x00,0 x00, 。 char code xzheng= /*- 文字 : 整 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x04,0 x74,0 xD4,0 xFF,0 xD4,0 x74,0 x04,0 x10,0

20、 x0C,0 xB7,0 x44,0 xB4,0 x0C,0 x04,0 x00, 0 x00,0 x42,0 x43,0 x7A,0 x43,0 x42,0 x43,0 x7E,0 x4B,0 x4B,0 x4A,0 x4A,0 x42,0 x43,0 x01,0 x00, 。 char code xxing= /*- 文字 : 星 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 xBE,0 x2A,0 x2A,0 x2A,0 xEA,0 x2A,0 x2A,0 x2A,0 x2A,0 x3E,0 x00,0 x0

21、0,0 x00, 0 x00,0 x48,0 x46,0 x41,0 x49,0 x49,0 x49,0 x7F,0 x49,0 x49,0 x49,0 x49,0 x49,0 x41,0 x40,0 x00, 。 char code xqi= /*- 文字 : 期 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x04,0 xFF,0 x54,0 x54,0 x54,0 xFF,0 x04,0 x00,0 xFE,0 x22,0 x22,0 x22,0 xFE,0 x00,0 x00, 0 x42,0 x22,0 x1B,0 x02,0

22、x02,0 x0A,0 x33,0 x62,0 x18,0 x07,0 x02,0 x22,0 x42,0 x3F,0 x00,0 x00, 。 char code xqi2= /*- 文字 : 气 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x20,0 x10,0 x8C,0 xA7,0 xA4,0 xA4,0 xA4,0 xA4,0 xA4,0 xA4,0 xA4,0 x24,0 x04,0 x04,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,

23、0 x00,0 x0F,0 x30,0 x40,0 xF0,0 x00, 。 char code xwen= /*- 文字 : 温 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x10,0 x21,0 x86,0 x70,0 x00,0 x7E,0 x4A,0 x4A,0 x4A,0 x4A,0 x4A,0 x7E,0 x00,0 x00,0 x00,0 x00, 0 x02,0 xFE,0 x01,0 x40,0 x7F,0 x41,0 x41,0 x7F,0 x41,0 x41,0 x7F,0 x41,0 x41,0 x7F,0 x40,0 x0

24、0, 。 char code xdu= /*-文字:C -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x02,0 x05,0 xE2,0 x18,0 x04,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x04,0 x1E,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x07,0 x18,0 x20,0 x40,0 x40,0 x40,0 x40,0 x40,0 x40,0 x20,0 x18,0 x00,0 x00, 。 char code xkuang= /*- 文字 :-*/ /*-

25、 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 xFE,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 x02,0 xFE,0 x00,0 x00, 0 x00,0 x3F,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x3F,0 x00,0 x00, 。 char code xmaohao= /*- 文字 : : -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16

26、-*/ 0 x00,0 x00,0 x00,0 xC0,0 xC0,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x30,0 x30,0 x00,0 x00,0 x00, 。 char code xjiahao= /*-文字:-*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 x00,0 x00,0 x10,0 x1C,0 xFF,0 x1C,0 x10,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0

27、x00,0 x00,0 xFF,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, 。 char code xjianhao= /*-文字:护/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 xFF,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0 x08,0 x38,0 xFF,0 x38,0 x08,0 x00,0

28、x00,0 x00,0 x00,0 x00,0 x00, 。 char code xmiao= /*- 文字 : 秒 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x12,0 x12,0 xD2,0 xFE,0 x91,0 x11,0 xC0,0 x38,0 x10,0 x00,0 xFF,0 x00,0 x08,0 x10,0 x60,0 x00, 0 x04,0 x03,0 x00,0 xFF,0 x00,0 x83,0 x80,0 x40,0 x40,0 x20,0 x23,0 x10,0 x08,0 x04,0 x03,0 x00, 。 ch

29、ar code xshu= /*- 文字 : 数 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x10,0 x92,0 x54,0 x38,0 xFF,0 x38,0 x54,0 x52,0 x80,0 xF0,0 x1F,0 x12,0 x10,0 xF0,0 x10,0 x00, 0 x42,0 x42,0 x2A,0 x2E,0 x13,0 x1A,0 x26,0 x02,0 x40,0 x20,0 x13,0 x0C,0 x33,0 x60,0 x20,0 x00, 。 * 大写数码 * /*/ char code ds32= /*-文字:一

30、-这个是个垫头,为了让大写一的显示码在ds1位置*/ /*-宋体12。 此字体下对应的点阵为:宽 x高=16x16 -*/ 0 x00,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 xC0,0 x80,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, , /*- 文字 : 一 -*/ /*-宋体12。 此字体下对应的点阵为:宽 x高=16

31、x16 -*/ 0 x00,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 x80,0 xC0,0 x80,0 x00, 0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00, , /*- 文字 : 二 -*/ /*-宋体12。 此字体下对应的点阵为:宽 x高=16x16 -*/ 0 x00,0 x00,0 x04,0 x04,0 x04,0 x04,0 x04,0 x0

32、4,0 x04,0 x04,0 x04,0 x06,0 x04,0 x00,0 x00,0 x00, 0 x00,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x18,0 x10,0 x00, , /*- 文字 : 三 -*/ /*-宋体12。 此字体下对应的点阵为:宽 x高=16x16 -*/ 0 x00,0 x04,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x84,0 x04,0 x00,0 x00, 0 x

33、00,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x20,0 x00, , /*- 文字 : 四 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 xFE,0 x02,0 x02,0 x02,0 xFE,0 x02,0 x02,0 xFE,0 x02,0 x02,0 x02,0 x02,0 xFE,0 x00,0 x00, 0 x00,0 x7F,0 x28,0 x24,0 x23,0 x20,0 x20,0 x20,0 x21

34、,0 x22,0 x22,0 x22,0 x22,0 x7F,0 x00,0 x00, , /*- 文字 : 五 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x00,0 x02,0 x82,0 x82,0 x82,0 x82,0 xFE,0 x82,0 x82,0 x82,0 xC2,0 x82,0 x02,0 x00,0 x00,0 x00, 0 x20,0 x20,0 x20,0 x20,0 x20,0 x3F,0 x20,0 x20,0 x20,0 x20,0 x3F,0 x20,0 x20,0 x30,0 x20,0 x00, , /*-

35、文字 : 六 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/ 0 x10,0 x10,0 x10,0 x10,0 x10,0 x91,0 x12,0 x1E,0 x94,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x00, 0 x00,0 x40,0 x20,0 x10,0 x0C,0 x03,0 x01,0 x00,0 x00,0 x01,0 x02,0 x0C,0 x78,0 x30,0 x00,0 x00, , /*- 文字 : 日 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =16x16 -*/

36、0 x00,0 x00,0 x00,0 xFE,0 x42,0 x42,0 x42,0 x42,0 x42,0 x42,0 x42,0 xFE,0 x00,0 x00,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x3F,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x10,0 x3F,0 x00,0 x00,0 x00,0 x00, 。 * 阿拉伯数码 * * char code xs16= /*- 文字 : 0 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0 x00,0 xE0,0 x10,0 x08

37、,0 x08,0 x10,0 xE0,0 x00,0 x00,0 x0F,0 x10,0 x20,0 x20,0 x10,0 x0F,0 x00, , /*- 文字 : 1 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0 x00,0 x10,0 x10,0 xF8,0 x00,0 x00,0 x00,0 x00,0 x00,0 x20,0 x20,0 x3F,0 x20,0 x20,0 x00,0 x00, , /*- 文字 : 2 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0 x00,0 x70,0 x08,0

38、 x08,0 x08,0 x88,0 x70,0 x00,0 x00,0 x30,0 x28,0 x24,0 x22,0 x21,0 x30,0 x00, , /*- 文字 : 3 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0 x00,0 x30,0 x08,0 x88,0 x88,0 x48,0 x30,0 x00,0 x00,0 x18,0 x20,0 x20,0 x20,0 x11,0 x0E,0 x00, , /*- 文字 : 4 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0 x00,0 x00,0 x

39、C0,0 x20,0 x10,0 xF8,0 x00,0 x00,0 x00,0 x07,0 x04,0 x24,0 x24,0 x3F,0 x24,0 x00, , /*- 文字 : 5 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0 x00,0 xF8,0 x08,0 x88,0 x88,0 x08,0 x08,0 x00,0 x00,0 x19,0 x21,0 x20,0 x20,0 x11,0 x0E,0 x00, , /*- 文字 : 6 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0 x00,0 xE0

40、,0 x10,0 x88,0 x88,0 x18,0 x00,0 x00,0 x00,0 x0F,0 x11,0 x20,0 x20,0 x11,0 x0E,0 x00, , /*- 文字 : 7 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0 x00,0 x38,0 x08,0 x08,0 xC8,0 x38,0 x08,0 x00,0 x00,0 x00,0 x00,0 x3F,0 x00,0 x00,0 x00,0 x00, , /*- 文字 : 8 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0 x00,0

41、 x70,0 x88,0 x08,0 x08,0 x88,0 x70,0 x00,0 x00,0 x1C,0 x22,0 x21,0 x21,0 x22,0 x1C,0 x00, , /*- 文字 : 9 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0 x00,0 xE0,0 x10,0 x08,0 x08,0 x10,0 xE0,0 x00,0 x00,0 x00,0 x31,0 x22,0 x22,0 x11,0 x0F,0 x00, 。 * 粗体阿拉伯数码 * * 用于显示时分秒 * char code xsc18= /*- 文字 : 0 -*/

42、/*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =9x16 -*/ 0 x00,0 xE0,0 xF0,0 x18,0 x08,0 x18,0 xF0,0 xE0,0 x00,0 x00,0 x0F,0 x1F,0 x30,0 x20,0 x30,0 x1F, 0 x0F,0 x00, , /*- 文字 : 1 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =9x16 -*/ 0 x00,0 x10,0 x10,0 xF8,0 xF8,0 x00,0 x00,0 x00,0 x00,0 x00,0 x20,0 x20,0 x3F,0 x3F,0 x20,0 x20,

43、0 x00,0 x00, , /*- 文字 : 2 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =9x16 -*/ 0 x00,0 x70,0 x78,0 x08,0 x08,0 x88,0 xF8,0 x70,0 x00,0 x00,0 x30,0 x38,0 x2C,0 x26,0 x23,0 x31, 0 x30,0 x00, , /*- 文字 : 3 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =9x16 -*/ 0 x00,0 x30,0 x38,0 x88,0 x88,0 xC8,0 x78,0 x30,0 x00,0 x00,0 x18,0

44、 x38,0 x20,0 x20,0 x31,0 x1F, 0 x0E,0 x00, , /*- 文字 : 4 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =9x16 -*/ 0 x00,0 x00,0 xC0,0 xE0,0 x30,0 xF8,0 xF8,0 x00,0 x00,0 x00,0 x07,0 x07,0 x24,0 x24,0 x3F,0 x3F, 0 x24,0 x00, , /*- 文字 : 5 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =9x16 -*/ 0 x00,0 xF8,0 xF8,0 x88,0 x88,0 x88,0

45、 x08,0 x08,0 x00,0 x00,0 x19,0 x39,0 x21,0 x20,0 x31,0 x1F, 0 x0E,0 x00, , /*- 文字 : 6 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =9x16 -*/ 0 x00,0 xE0,0 xF0,0 x98,0 x88,0 x98,0 x18,0 x00,0 x00,0 x00,0 x0F,0 x1F,0 x31,0 x20,0 x31,0 x1F, 0 x0E,0 x00, , /*- 文字 : 7 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =9x16 -*/ 0 x00,0

46、 x38,0 x38,0 x08,0 xC8,0 xF8,0 x38,0 x08,0 x00,0 x00,0 x00,0 x00,0 x3F,0 x3F,0 x00,0 x00, 0 x00,0 x00, , /*- 文字 : 8 -*/ /*- 宋体 12。 此字体下对应的点阵为:宽 x 高 =9x16 -*/ 0 x00,0 x70,0 xF8,0 x88,0 x08,0 x88,0 xF8,0 x70,0 x00,0 x00,0 x1C,0 x3E,0 x23,0 x21,0 x23,0 x3E, 0 x1C,0 x00, , /*- 文字 : 9 -*/ /*- 宋体 12。 此字体下

47、对应的点阵为:宽 x 高 =9x16 -*/ 0 x00,0 xE0,0 xF0,0 x18,0 x08,0 x18,0 xF0,0 xE0,0 x00,0 x00,0 x00,0 x31,0 x33,0 x22,0 x33,0 x1F, 0 x0F,0 x00, 。 * 延时函数 * *功能:在12MHz的晶振条件下调用本函数需要24 S,然后每次计数需16卩s * void DS18_delay(int useconds int s。 for (s=0 。 s。 /*复位函数 * * 功能:完成单总线的复位操作。 *复位时间为480卩,因此延时时间为(480-24/16 = 28.5,取2

48、9卩。 *经过70卩之后检测存在脉冲,因此延时时间为(70-24/16 = 2.875,取3卩。 * unsigned char ow_reset(void unsigned char presence。 / 将 DQ 线拉低 /保持480卩s / DQ 返回高电平 / 等待存在脉冲 / 获得存在信号 / 等待时间隙结束 / 返回存在信号, 0 = 器件存在 , 1 = 无器件 DQ = 0 。 DS18_delay(29 。 DQ = 1 。 DS18_delay(3 。 presence = DQ。 DS18_delay(25 。 return(presence。 * 位写入函数 * *

49、功能:向单总线写入 1 位值: bitval * void write_bit(char bitval DQ = 0 。 if(bitval=1 DQ =1 。 DS18_delay(5 。 / 将 DQ 拉低开始写时间隙 / 如果写 1, DQ 返回高电平 / 在时间隙内保持电平值, DQ = 1。/ DS18_delay 函数每次循环延时 16 卩,因此 DS18_delay(5 = 104 s /* 字节写入函数 * * 功能:向单总线写入一个字节值: val */ void ds18write_byte(char val unsigned char i 。 unsigned char

50、temp。 for (i=0 。 i / 写入字节 , 每次写入一位 temp = vali 。 temp &= 0 x01 。 write_bit(temp 。 DS18_delay(5 。 /* 位读取函数 * *功能:从单总线上读取一位信号,所需延时时间为15 y,因此无法调用前面定义 * 的 DS18_delay( 函数,而采用一个 for( 循环来实现延时。 * */ unsigned char i 。 DQ = 0 。 DQ = 1 。 for (i=0 。 i 。 return(DQ 。 unsigned char read_bit(void / 将 DQ 拉低开始读时间隙 /

51、then return high /延时15 ys / 返回 DQ 线上的电平值 * 字节读取函数 * * 功能:从单总线读取一个字节的值 * unsigned char DSread_byte(void unsigned char i 。 unsigned char value = 0 。 for (i=0。i / 读取字节,每次读取一个字节 if(read_bit( value|=0 x01 。 return(value 。 读取温度函数 * * * 功能:如果单总线节点上只有一个器件则可以直接掉用本函数。如果节点上有多个器 * 件,为了避免数据冲突,应使用 Match ROM 函数来选中

52、特定器件。 * 注: 本函数是根据 DS1820 的温度数据格式编写的,若用于 DS18B20 ,必须根据 * DS18B20 的温度数据格式作适当修改。 * */unsig ned int ReadTemperature(void unsigned char get10 。 unsigned char temp_lsb,temp_msb 。 unsigned int t 。 unsigned char k。 ow_reset(。 ds18write_byte(0 xCC 。 ds18write_byte(0 x44 。 DS18_delay(5 。 ow_reset(。 ds18write_

53、byte(0 xCC 。 ds18write_byte(0 xBE 。 for (k=0 。 kgetk=DSread_byte( 。 / 跳过 ROM / 启动温度转换 / 跳过 ROM / 读暂存器 temp_msb = get1 。 / Sign byte + lsbit temp_lsb = get0 。 / Temp data plus lsb t=temp_msb*256+temp_lsb 。 t=t&0 x0ff0 。 if(t0 xf0 t=(-1*t 。 return t4 。 /* 函数功能 :延时程序 入口参数 :t 出口参数 : */ void LCDdelay(uns

54、igned int t unsigned int i,j 。 for(i=0 。 i 。 for(j=0 。 j 。 * 状态检查, LCD 是否忙 */ void CheckState( unsigned char dat,DATA 。 /状态信息 判断是否忙) LCDDi=O。 /数据 指令选择,D/I 。/延时 dat=DATA 。 LCDEnable=0 。 dat=0 x80 & dat。/仅当第7位为0时才可操作(判别busy信号 while(!(dat=0 x00 。 /* 函数功能 :写命令至 LCD 程序 入口参数 :cmdcode 出口参数 : */ void write_

55、com(unsigned char cmdcode CheckState(。/检测 LCD 是否忙 LCDDi=0 。 LCDRW=0 。 P2=cmdcode。 LCDdelay(2 。 LCDEnable=1 。 LCDdelay(2 。 LCDEnable=0 。 /* 函数功能 :写数据到 LCD 程序 入口参数 :LCDDispdata 出口参数 : */ void write_data(unsigned char LCDDispdata CheckState(。 / 检测 LCD 是否忙 LCDDi=1 。 LCDRW=0 。 P2=LCDDispdata 。 LCDdelay(2

56、 。 LCDEnable=1 。 LCDdelay(2 。 LCDEnable=0 。 /* 函数功能 :清除 LCD 内存程序 入口参数 :pag,col,hzk 出口参数 : */ void Clr_Scr( unsigned char j,k 。 LCDMcs=1。LCDScs=1。我的液晶屏用这样才能清屏 LCDMcs=O 。 LCDScs=0。 II仿真软件里proteus里面的屏要这样才能清屏 write_com(Page_Add+0 。 write_com(LCDCol_Add+0 。 for(k=0。k 控制页数 0-7,共 8 页 write_com(Page_Add+k 。

57、 for(j=0 。 j write_com(LCDCol_Add+j 。 write_data(0 x00。控制列数0-63,共64列,写点内容,列地址自动加 1 LCDMcs=0 。 LCDScs=0 。 指定位置显示数字 16*16 程序 /* 函数功能 入口参数 :pag,col,hzk 出口参数 : */ void hz_LCDDisp16(unsigned char pag,unsigned char col, unsigned char code *hzk unsigned char j=0,i=0 。 for(j=0 。 j write_com(Page_Add+pag+j 。

58、 write_com(LCDCol_Add+col 。 for(i=0。i write_data(hzk16*j+i 。 指定位置显示数字 8*16 程序 /* 函数功能 入口参数 :pag,col,hzk 出口参数 : */ void hz_LCDDisp8(unsigned char pag,unsigned char col, unsigned char code *hzk unsigned char j=0,i=0 。 for(j=0 。 j write_com(Page_Add+pag+j 。 write_com(LCDCol_Add+col 。 for(i=0 。 i write_

59、data(hzk8*j+i 。 /* 函数功能 :指定位置显示数字 9*16 程序 入口参数 :pag,col,hzk 出口参数 : */ void hz_LCDDisp9(unsigned char pag,unsigned char col, unsigned char code *hzk unsigned char j=0,i=0 。 for(j=0 。 jwrite_com(Page_Add+pag+j 。 write_com(LCDCol_Add+col 。 for(i=0 。 i write_data(hzk9*j+i 。 /* 函数功能 :LCD 初始化程序 入口参数 : 出口参

60、数 : */ void init_lcd( LCDdelay(100 。 LCDMcs=1 。 LCDScs=1 。 LCDdelay(100 。 write_com(LCDLCDDisp_Off 。 write_com(Page_Add+0 。 write_com(Start_Line+0 。 write_com(LCDCol_Add+0 。 write_com(LCDLCDDisp_On 。 /*DS1302 有关子函数 */ * void write_byte(uchar dat/ 写一个字节 ACC=dat 。 RST=1。 for(a=8 。 a0。 a- IO=ACC0 。 SCL

温馨提示

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

评论

0/150

提交评论