单片机 数字时钟显示.doc_第1页
单片机 数字时钟显示.doc_第2页
单片机 数字时钟显示.doc_第3页
单片机 数字时钟显示.doc_第4页
单片机 数字时钟显示.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

_工_学院_2010_级_电气工程及其自动化_专业 姓名_鲁晚霞(2010180137)、刘春兰(2010180131)、史兆成(2010090437)(密)(封)(线)本科课程设计专用封面设计题目:基于12864LCD显示屏的数字时钟 所修课程名称: 单片机应用技术课程设计 修课程时间: 2013 年 10 月 21 日至 10 月 27 日完成设计日期: 2013 年 10 月 27 日评阅成绩: 评阅意见:评阅教师签名: 年 月 日目录一、设计要求1二、设计步骤22. 键盘3二、设计程序4 1. 单片机与外部模块控制引脚分配4四、调试过程5五、设计结果及总结5附件61.程序代码6一、设计要求此次设计使用STC89C52单片机作为主控芯片,配合实验箱上面其它模块而进行。为实现课题要求,主要使用的有液晶LCD12864模块、独立键盘等。此设计要求主要有以下几点:1. 使用液晶界面。2. 液晶初始界面显示“北京时间”、“感谢你:宰老师!”字样。3. 数字时钟。4. 时钟的时间可由四个独立按键控制调整。 此设计的基本现实构思如下图所示。图1. 液晶界面构想显示图二、设计步骤1. LCD12864液晶显示屏 带中文字库的12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。图2 12864接口与实验箱上的接口图八根数据线与单片机P0相连,控制端RS、RW、EN分别接于单片机的P2.3、P2.4、P2.5。2. 键盘 此设计需要使用到四个独立按键,用来调整数字时钟的显示。图3 实验箱独立键盘接线示意图二、设计程序1. 单片机与外部模块控制引脚分配图4 单片机引脚分配示意图按键控制及说明1. K1:P3.2 功能:按一下,时钟进入待调整状态,时位闪烁;再次按一下回复。2. K2:P1.0 功能:按一下,闪烁位在时分秒间循环移动一位。3. K3:P1.1 功能:按一下,闪烁位数字加一。4. K4:P1.2 功能:按一下,闪烁位数字减一。三、调试过程1.将写好的程序烧录进单片机。2.将设计分配好的单片机引脚与对应的模块用线连接起来。3.打开实验箱的电源。4.待实验箱通电后,观察实验现象。5.测试各功能按钮是否正常工作。四、设计结果及总结一个星期的单片机课程设计很快就结束了,在这一周当中,虽然开始有点困难,但是经过努力学习,合理地进行设计安排,我终于顺利地完成了本次单片机课程设计,同时也学到了很多东西。 在本次课程设计中,通过动手实践操作,进一步学习和掌握了单片机原理的有关知识,特别是程序的编程方面,加深了对单片机原理及应用技术的认识,进一步巩固了对单片机知识的理解,掌握简单单片机应用系统的设计、制作的方法。在设计时根据课题要求,复习相关的知识,查询相关的资料。这次的单片机课程设计重点是通过实践操作和理论相结合,提高动手实践能力,提高科学的思维能力,更在一周的时间了解了更多的有关单片机的知识,使知识更加丰富,使自己更加充实。要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。通过查阅大量有关资料,使自己学到了不少知识,也经历了不少艰辛,收获巨大。但通过学习这一次实践,增强了我的动手能力,提高和巩固了单片机方面的知识,特别是软件方面,并让我认识到把理论应用到实践中去是多么重要。当然,这次课程设计能够顺利完成,离不开组员间默契配合以及老师的悉心指导。附件1.程序代码/*- 名称:st7920字库液晶显示 论坛:806899919 编写:光汇科技 日期:2012.3 修改:无 内容:通过显示字符、数字、汉字和图片测试液晶基本功能-*/#include #include #include delay.hsbit RS = P22;sbit RW = P21;sbit E = P20;sbit RES = P25;sbit PSB = P23;#define DataPort P0 /MCU P0 LCMbit flag=1;unsigned char dat,count,f=1;/f测试哪个单元为当前闪烁状态unsigned char data clock3=23,45,12;unsigned char code clockname10=北京时间:;unsigned char data num6;unsigned char code user16x16= /笑脸图片0x0F,0xF0,0x10,0x08,0x20,0x04,0x40,0x02,0x9C,0x39,0xBE,0x7D,0x80,0x01,0x80,0x01,0x80,0x01,0x88,0x11,0x84,0x21,0x43,0xC2,0x20,0x04,0x10,0x08,0x0F,0xF0,0x00,0x00,;unsigned char code pic1= / 图片代码0xD2,0x52,0xD0,0x2A,0x98,0x09,0x47,0xAA,0x15,0x2A,0x08,0x00,0xA2,0x92,0x02,0xD5,0xD4,0x44,0xA0,0x75,0x50,0x11,0x55,0x6C,0xAA,0x44,0x08,0x01,0x55,0x6E,0x02,0x8C,0x6E,0xA6,0xA0,0x35,0x28,0x0C,0xAA,0xAA,0xA2,0x68,0x44,0x00,0x94,0x96,0x01,0x46,0x75,0x2A,0xA0,0x55,0x54,0x14,0x95,0x5D,0x54,0xD0,0x88,0x01,0x55,0x5C,0x02,0xA8,0xBA,0x85,0x22,0xB4,0x94,0x0B,0x4A,0xBB,0xDA,0x40,0x40,0x00,0xAA,0xAA,0x01,0x55,0xFE,0x0A,0x45,0x55,0x54,0x15,0x6D,0x54,0x24,0x04,0x84,0x01,0xAA,0xAA,0x02,0xA4,0x7F,0x34,0x20,0x2A,0x90,0x15,0xAD,0x50,0x10,0x0A,0x42,0x00,0xAA,0xAA,0x00,0xA9,0x7F,0x55,0x40,0x55,0x34,0x0B,0x0A,0x80,0x09,0x1A,0x80,0x01,0x56,0xAA,0x02,0x52,0x5F,0x55,0x00,0x2A,0xA8,0x14,0xF4,0x00,0x21,0x54,0xC0,0x02,0xAA,0xAA,0x02,0x95,0xBE,0x4A,0x40,0x12,0xA8,0x08,0x00,0x00,0x02,0x29,0x20,0x01,0x55,0x54,0x02,0xA4,0x4F,0xA9,0x40,0x14,0x14,0x0A,0x00,0x00,0x00,0x22,0x88,0x00,0xAA,0xAA,0x01,0x49,0xBA,0x55,0x41,0x51,0x10,0x88,0x00,0x00,0x05,0x51,0x22,0x01,0x55,0x54,0x05,0x54,0x4B,0x2A,0x80,0x4A,0x84,0x48,0x00,0x00,0x2B,0x45,0x53,0x00,0xAA,0xAA,0x00,0x94,0xAA,0x85,0x40,0x54,0x80,0x88,0x00,0x01,0x54,0xA9,0x26,0x01,0x4B,0x68,0x02,0xA8,0xAB,0x54,0x80,0xA9,0x44,0x50,0x01,0x54,0x55,0x14,0xA2,0x00,0xAA,0xF0,0x01,0x2C,0x96,0xB1,0x0D,0x49,0x68,0x80,0x0A,0xAB,0xAA,0xA4,0x06,0x00,0xAA,0xC4,0x02,0x82,0x55,0x56,0x82,0xC4,0xB2,0xA0,0x15,0x57,0xFD,0x2A,0x46,0x00,0x55,0x94,0x02,0x81,0xAC,0xAB,0x01,0xB5,0x48,0x40,0x55,0x5B,0xFE,0x94,0x0C,0x00,0xAA,0xA8,0x02,0x90,0x55,0x54,0x80,0xAA,0x54,0xA0,0x2A,0xB7,0xFF,0x42,0x0A,0x00,0xF5,0x48,0x15,0x01,0xAA,0x28,0x81,0x4D,0x28,0x40,0xAA,0xDF,0xFF,0xA8,0x1A,0x00,0x5A,0x20,0x05,0x00,0x54,0xD6,0x80,0xA1,0x54,0x20,0xAA,0xAF,0xFF,0xD0,0x1A,0x00,0xB6,0x14,0x03,0x00,0xA8,0xD5,0x40,0x8A,0xA8,0x41,0x55,0x5B,0xFF,0xD0,0x36,0x00,0xA9,0x50,0x0A,0x00,0x48,0xAA,0x8F,0x15,0x54,0x00,0x55,0x56,0xAB,0xE8,0x1E,0x00,0x76,0x44,0x05,0x00,0xAB,0xD5,0x00,0x95,0x54,0x81,0x4A,0xAA,0xAF,0xE8,0x38,0x00,0xAA,0xA8,0x0A,0x00,0x5B,0xD6,0x82,0xAA,0xAA,0x81,0x21,0x56,0xBF,0xFC,0x16,0x00,0xAA,0x44,0x0A,0x00,0xA0,0x25,0x09,0x55,0x54,0x01,0x5E,0xAA,0x8B,0xEC,0xB4,0x02,0x4C,0xA8,0x14,0x00,0xB8,0x2B,0x01,0x22,0x96,0x82,0xA0,0x55,0x0A,0xFE,0x54,0x01,0x4C,0x94,0x12,0x00,0x40,0x4A,0x82,0x55,0x60,0x81,0x01,0x2E,0x57,0xFD,0x54,0x00,0x95,0x28,0x0A,0x00,0x32,0x10,0x41,0x25,0x5E,0x02,0xAA,0xAF,0xAB,0xFD,0x74,0x00,0x59,0x48,0x04,0x01,0x21,0x00,0x02,0x85,0x5E,0x82,0xAA,0xAF,0xAF,0xFF,0xEC,0x00,0xA5,0x50,0x0A,0x02,0xA8,0x20,0x02,0x22,0xAA,0x01,0x56,0xAF,0xDF,0xFF,0xF4,0x00,0x91,0x50,0x04,0x02,0xA2,0x80,0x11,0x55,0x14,0x82,0xAA,0xBF,0x7F,0xFF,0xE8,0x00,0x28,0x50,0x28,0x01,0x51,0x20,0x01,0x12,0x44,0x41,0x56,0xAF,0xD7,0xFF,0xF4,0x00,0x2A,0x80,0x14,0x06,0xAA,0x40,0x11,0x4A,0x44,0x82,0xB5,0x5D,0xAF,0xFF,0xE4,0x00,0x60,0x80,0x0A,0x0D,0xB5,0x60,0x0C,0xA8,0x06,0x40,0xAA,0x94,0xAB,0xFF,0xD4,0x00,0x54,0x80,0x14,0x07,0xA8,0x09,0x02,0x52,0x18,0x85,0x55,0x57,0xAB,0xFF,0x94,0x00,0xA5,0x20,0x12,0x16,0x50,0x02,0xA2,0x00,0x02,0x42,0xAA,0xAB,0xF5,0x7C,0x6C,0x00,0x45,0x20,0x0A,0x15,0x50,0x01,0xA9,0x58,0x54,0x05,0x55,0x55,0x36,0xFC,0x54,0x00,0x8A,0x40,0x20,0x2A,0xC8,0x28,0x6A,0x86,0xA4,0x42,0xAA,0x05,0xC5,0xFC,0x54,0x00,0x2A,0x20,0x12,0x55,0x99,0x54,0xEE,0xAF,0x40,0x45,0x54,0xFF,0xD7,0xF8,0xB4,0x00,0x8A,0xC0,0x28,0xAA,0x49,0x4B,0xB7,0x00,0x2A,0x0A,0x55,0x08,0x2B,0xF8,0x54,0x00,0x44,0x40,0x10,0x55,0x98,0x54,0x90,0x01,0x42,0x04,0x55,0x15,0xF7,0xF8,0xA8,0x00,0x4B,0xC0,0x20,0xAA,0x8E,0x92,0x0A,0x00,0x88,0x02,0x2A,0xAA,0xFF,0xF8,0x54,0x00,0x24,0x40,0x11,0x55,0x1D,0x92,0x94,0x12,0x40,0x04,0x15,0x55,0xFF,0xF9,0xAA,0x00,0x49,0x80,0x22,0xAA,0x17,0x84,0x00,0x41,0x40,0x02,0x0A,0xAA,0xFF,0xF8,0x54,0x00,0x29,0xC0,0x30,0xBA,0x15,0x00,0x00,0x00,0x80,0x04,0x05,0x57,0xFF,0xF1,0xCA,0x00,0x53,0x40,0x25,0xD5,0x16,0x80,0x00,0x80,0x40,0x02,0x00,0xAB,0xFB,0xF8,0x56,0x00,0x28,0x80,0x25,0xEB,0x0D,0x60,0x00,0xD0,0x80,0x04,0x00,0xAD,0xED,0xF0,0xEE,0x00,0x43,0x40,0x2B,0xFD,0x02,0x90,0x00,0x10,0x40,0x04,0x00,0x2A,0xAB,0x70,0xAD,0x00,0x23,0x40,0x13,0xFF,0x05,0x30,0x00,0x40,0x00,0x04,0x00,0x0A,0xAA,0xE0,0xB6,0x00,0x45,0x80,0x67,0xFF,0x03,0x08,0x00,0x00,0x80,0x00,0x00,0x2A,0xAB,0x70,0x5D,0x00,0x36,0xC0,0x23,0xFB,0x05,0x18,0x08,0x00,0xA0,0x00,0x00,0x15,0x6D,0xC0,0xA6,0x00,0x25,0x80,0xC7,0xFF,0x00,0x80,0x02,0x1C,0x80,0x08,0x00,0x02,0xAA,0xA0,0x5F,0x00,0x22,0xC0,0x2B,0xFF,0x01,0x08,0x04,0x01,0x00,0x50,0x00,0x15,0x5B,0x40,0xBF,0x00,0x2B,0x80,0x87,0xFF,0x01,0x44,0x0A,0x04,0xA0,0x10,0x00,0x09,0x55,0x40,0x1D,0x00,0x05,0x80,0x27,0xFF,0x00,0xB4,0x0B,0x21,0x22,0x20,0x00,0x15,0x55,0x00,0x5F,0x00,0x2B,0x00,0x4F,0xFF,0x00,0x21,0x32,0xA2,0xF0,0x00,0x00,0x02,0xAA,0x80,0x1F,0x80,0x05,0x80,0x2F,0xFF,0x00,0x25,0x4D,0xBA,0x28,0x00,0x00,0x0A,0xAA,0x00,0x2F,0xC0,0x1B,0x00,0xAF,0xFF,0x00,0x11,0x56,0xAE,0x90,0x00,0x00,0x05,0x55,0x00,0x17,0xE0,0x07,0x80,0x2F,0xFF,0x80,0x11,0x57,0x6D,0x60,0x00,0x00,0x05,0x54,0x00,0x2B,0xF8,0x0F,0x00,0x97,0xF5,0x40,0x04,0xD7,0xD1,0xB0,0x00,0x00,0x02,0xAA,0x00,0x15,0xFF,0x26,0x81,0x57,0xBF,0x40,0x0A,0x7D,0x6F,0x80,0x00,0x00,0x0A,0xA8,0x00,0x17,0xAB,0x8D,0x00,0xAF,0x55,0xA0,0x02,0x6D,0x67,0xE0,0x00,0x00,0x05,0x54,0x00,0x00,0x2E,0xC7,0x80,0x2F,0xFF,0xD0,0x02,0x2E,0xE9,0xE0,0x00,0x00,0x0A,0xA8,0x00,0x10,0xFE,0x48,0x00,0xAF,0xFE,;/*- 检测忙位-*/void Check_Busy() RS=0; RW=1; E=1; DataPort=0xff; while(DataPort&0x80)=0x80);/忙则等待 E=0;/*- 写命令-*/void Write_Cmd(unsigned char Cmd)Check_Busy();RS=0;RW=0;E=1;DataPort=Cmd;DelayUs2x(5);E=0;DelayUs2x(5);/*- 写数据-*/void Write_Data(unsigned char Data)Check_Busy();RS=1;RW=0;E=1;DataPort=Data;DelayUs2x(5);E=0;DelayUs2x(5);/*- 液晶屏初始化-*/void Init_ST7920() DelayMs(40); /大于40MS的延时程序 PSB=1; /设置为8BIT并口工作模式 DelayMs(1); /延时 RES=0; /复位 DelayMs(1); /延时 RES=1; /复位置高 DelayMs(10); Write_Cmd(0x30); /选择基本指令集 DelayUs2x(50); /延时大于100us Write_Cmd(0x30); /选择8bit数据流 DelayUs2x(20); /延时大于37us Write_Cmd(0x0c); /开显示(无游标、不反白) DelayUs2x(50); /延时大于100us Write_Cmd(0x01); /清除显示,并且设定地址指针为00H DelayMs(15); /延时大于10ms Write_Cmd(0x06); /指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位,光标从右向左加1位移动 DelayUs2x(50); /延时大于100us/*- 用户自定义字符-*/void CGRAM() int i; Write_Cmd(0x30); Write_Cmd(0x40); for(i=0;i0) Write_Data(*s); s+; DelayUs2x(50); /*- 清屏-*/void ClrScreen() Write_Cmd(0x01); DelayMs(15); /*- 显示图片-*/void LCD_PutGraphic(unsigned char code *img) int i,j;/显示上半屏内容设置 for(i=0;i32;i+) Write_Cmd(0x80 + i); /SET 垂直地址 VERTICAL ADD Write_Cmd(0x80); /SET 水平地址 HORIZONTAL ADD for(j=0;j16;j+) Write_Data(*img); img+; /显示下半屏内容设置 for(i=0;i32;i+) Write_Cmd(0x80 + i); /SET 垂直地址 VERTICAL ADD Write_Cmd(0x88); /SET 水平地址 HORIZONTAL ADD for(j=0;j16;j+) Write_Data(*img); img+; /*- 设置到绘图模式-*/void SetGraphicMode() Write_Cmd(0x36); /选择8bit数据流 图形模式 DelayUs2x(20);/*定时程序*/void timer1() interrupt 1 using 2TL0=0XB0;TH0=0X3C;count-;if(count=0)count=20;clock2+;/秒/elsegoto out;if(clock2=60) clock2=0; clock1+;/分/ if(clock1=60) clock1=0; clock0+; if(clock0=24)/时/clock0=0; out:_nop_();/*十位个位转换成ASCII码*/void ascii_change(void) num5=clock2-(clock2/10)*10+0x30; num4=clock2/10+0x30; num3=clock1-(clock1/10)*10+0x30; num2=clock1/10+0x30; num1=clock0-(clock0/10)*10+0x30; num0=clock0/10+0x30;/*display program*/void disp()unsigned c

温馨提示

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

评论

0/150

提交评论