《项目七 电子日历的制作与实现电子教案 中职 单片机c语言程序设计及仿真.doc》由会员分享,可在线阅读,更多相关《项目七 电子日历的制作与实现电子教案 中职 单片机c语言程序设计及仿真.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 项目七 电子日历的制作与实现 教学设计任务(课题)名称任务1 LCD1602液晶显示授课班级课 型理实一体化课 时4授课时间任务(教学内容)描述本任务主要学习LCD1602的显示原;控制指令、读写操作时序及C程序编写等内容。教学目标知识目标了解LCD1602显示原理;掌握LCD1602控制指令;掌握LCD1602读写操作时序;能力目标会LCD1602初始化过程;会利用Keil软件编写程序;会利用Proteus软件仿真调试程序情感态度与价值观目标培养学生自主讨论学习的能力;教学重难点重点LCD1602控制指令;LCD1602读写操作时序;难点LCD1602控制指令;LCD1602读写操作时序;
2、教学方法讲授法、分组讨论教学资源多媒体教学设备、PPT、EDA仿真机房教学过程教学环节教学内容知识点与技能点一、布置任务任务描述单片机P0端口外接一个LCD1602液晶显示屏的数据端口,试编写控制程序,控制液晶显示屏显示“I Like LCD”。二、新课讲解1.LCD1602显示原理LCD1602能显示行16个字符,该显示器由32个字符点阵块组成,每个字符点阵块由57或510个点阵组成。2.LCD1602控制指令3.LCD1602读写操作时序读操作过程为:R/W端为1;RS端根据写指令写数据,分别设置为0和1;E端变为,LCD1602输出数据,单片机可读取数据DB0-DB7;E端变为0,此后数
3、据输出无效。写操作过程为:R/W端为0;RS端根据写指令写数据,分别设置为0和1;单片机准备好数据DB0-DB7后,在E端产生下降沿,LCD1602锁定数据。1.任务分析(1)根据电路分析可知:单片机的P0端口作为LCD1602的数据,LCD1602控制端口RS、RW、EN分别连单片机的P2.0、P2.1、P2.2三个端口。(2)LCD1602驱动函数如下:判忙函数void busy()该函数用于读取LCD1602的状态,“忙”就继续读取状态;“闲”就执行后面的命令。写命令函数 void Write_cmd()该函数用于向LCD1602发送命令。写数据函数 void Write_data()该
4、函数用于向LCD1602写入数据。初始化程序void Lcd_init()该函数用于初始化LCD1602。(3)设置指针数据指针“I Like LCD”字符在LCD1602第一行中央显示所以数据地址为:0x80+0X03。2.程序流程图3.程序编写/*判忙函数*/void busy() P0=0xff; do rs=0;rw=1;en=0;en=1; while(BF=1); en=0;/*写命令函数*/void Write_cmd (uchar x) busy(); rs = 0; /写指令标志 rw = 0; DATA = x; delayms(1); en = 1; delayms(1)
5、; en = 0;/*写数据函数*/void Write_data (uchar dat) busy(); rs = 1; /写数据标志 rw = 0; DATA = dat; delayms(1); en = 1; delayms(1); en = 0;void Lcd_init ( ) /LCD初始化函数 delayms(5); /延时10ms Write_cmd(0x38); /连续执行3次,等待LCM上电自复位结束 delayms(1); Write_cmd(0x38); delayms(1); Write_cmd(0x38); /功能设定,接口DB宽度8位,2行显示 delayms(
6、1); Write_cmd(0x08); /显示关闭 delayms(1); Write_cmd(0x01); /清屏 delayms(1); Write_cmd(0x06); /进入模式设定 delayms(1); Write_cmd(0x0c); /显示开关控制void main ( )Lcd_init();Write_cmd(0x80+0X03); /写LCD的第一行的第4个地址Write_data(I);Write_data( );Write_data(L);Write_data(i);Write_data(k);Write_data(e);Write_data( );Write_da
7、ta(L);Write_data(C);Write_data(D); while(1);4.程序仿真学生:在机房电脑上完成程序录入、仿真。教师:巡回指导。讲解仿真结果三、课堂总结1.学生总结(1)你的收获有哪些?(2)你还有哪些知识没有掌握好?2.教师总结点评作业布置编写程序完成1602显示模块分两行显示,第一行显示“I Like LCD”,第二行显示“I am Very Good”。 项目五 电子日历的制作与实现 教学设计任务(课题)名称任务2电子日历的制作与实现授课班级课 型理实一体化课 时4授课时间任务(教学内容)描述本任务主要学习LCD12864的内部结构;引脚名称和功能;读写操作时序
8、;C语言指针;编写电子日历程序等内容。教学目标知识目标了解LCD12864的内部结构;了解LCD12864的引脚名称和功能;理解LCD12864读写操作时序;理解C语言指针;能力目标会使用LCD12864指令集;会编写电子日历程序;会利用Proteus软件调试仿真电子日历程序;情感态度与价值观目标培养学生自主讨论学习的能力;教学重难点重点编写电子日历程序;难点C语言指针应用教学方法讲授法、分组讨论教学资源多媒体教学设备、PPT、EDA仿真机房教学过程教学环节教学内容知识点与技能点一、布置任务任务描述利用LCD12864完成电子日历的制作,8个独立按键K1K8分别对年、月、日、时、分、星期进行调
9、节。二、新课讲解1.LCD12864硬件结构LCD12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及12864全点阵液晶显示器组成。可显示图形,汉字等信息。2.LCD12864指令系统3.LCD12864控制寄存器4.LCD12864读写操作时序读操作过程为:E端先为0,R/W端为1,RS端根据读状态或读数据,分别置0或1,CS1、CS2根据选择情况为0或1,E端变为1,单片机读取数据DB0DB7,然后在E端产生0,LCD12864输出数据无效。写操作过程为:E端先为0,R/W端为0,RS端根据写指令或写数据,分别置0或1,CS1、CS2根据选择情况为0或1,E端变为1,单片机准
10、备好数据DB0DB7,然后在E端产生下降沿,LCD12864锁定数据。5.LCD12864显示原理向显示数据RAM某单元写入一个字节数据,将在显示屏对应位置显示纵向8个像素点的图像。LCD12864不带字库,必须使用取模软件获取要显示汉字、英文字符、数字的数据编码,并将这些数据编码存放在单片机的程序存储器中,程序将这些数据写入LCD12864的显示数据RAM中进行显示。在使用字模提取V2.0时,在“文字输入区”输入相应的汉字、英文字符、数字,;在“参数设置/其他选项”中选中“纵向取模”、“字节倒序”;确定后,在“取模方式”中选择“C51格式”,软件将自动生成字模数据。1.任务分析(1)根据电路
11、分析可知:单片机的P0端口作为LCD12864的数据端口,LCD12864控制端口分别连单片机的P2.0P2.5三个端口。(2)LCD12864驱动函数如下:判忙函数void busy()该函数用于读取LCD12864的状态,“忙”就继续读取状态;“闲”就执行后面的命令。写命令函数 void Write_cmd()该函数用于向LCD12864发送命令。写数据函数 void Write_data()该函数用于向LCD1602写入显示数据。写x坐标函数void LCD_x()该函数用于设定要显示字符的x坐标(页地址)。写y坐标函数void LCD_y()该函数用于设定要显示字符的y坐标(列地址)。
12、写xy坐标函数void LCD_xy()该函数用于设定要显示字符的具体位置。清除显示屏函数void clrscr()该函数用于清除LCD12864液晶屏。初始化程序void LCD12864_init()该函数用于初始化LCD12864。写汉字函数vodi Write_han()该函数用于显示一个1616汉字 。写ASCII函数void Write_ascii()该函数用于显示一个816的英文字母或数字等。2.程序流程图3.程序编写/*判忙函数*/void busy() EN=1; RS=0; RW=1; out0=0xff; while(!BF);/*写数据函数*/void Write_da
13、te(uchar date) busy(); EN=1; RS=1; RW=0; out0=date; EN= 0;/*写指令函数*/void Write_cmd(uchar cmd) busy(); EN=1; RW=0; RS=0; out0=cmd; EN= 0;/*写坐标x函数*/void LCD_x(uchar x) Write_cmd(0xb8|x);/*写坐标y函数*/void LCD_y(uchar y) Write_cmd(0x40|y);/*写坐标xy函数*/void LCD_xy(uchar x,uchar y) if(y64) CS1=0;CS2=1; LCD_y(y)
14、; else CS1=1;CS2=0; LCD_y(y-64); LCD_x(x);/*清屏函数*/void clrscr() uchar j,k; CS1=0;CS2=0; for(j=0;j8;j+) LCD_y(0); LCD_x(j); for(k=0;k64;k+) Write_date(0x00); CS1=CS2=1;/*12864初始化函数*/void LCD12864_chushi() RST=0; delayms(15); RST=1; CS1=CS2=1; Write_cmd(0x3e); Write_cmd(0xb8); Write_cmd(0x40); Write_c
15、md(0xc0); Write_cmd(0x3f); CS1=CS2=0;/*写汉字函数*/void Write_han(uchar x,y,z,uchar *p) uint n=0; uchar j,k; for(j=x;jx+2;j+) for(k=y;ky+16;k+) LCD_xy(j,k); if(z=0) Write_date(pn+); else Write_date(pn+); CS1=CS2=0;/*写ASCII函数*/void Write_ascii(uchar x,y,z,uchar *p) uint n=0; uchar j,k; for(j=x;jx+2;j+) fo
16、r(k=y;k=100)n1=0;break;case 2:n2+;if(n2=100)n2=0;break;case 3:yue+;if(yue=13)yue=0;break;case 4:ri+;if(ri=31)ri=0;break;case 5:shi+;if(shi=24)shi=0;break;case 6:fen+;if(fen=60)fen=0;break;case 7:xq+;if(xq=8)xq=0;break; LCDdisplay(); void time0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; a+; if(a=20) a=0; miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0;shi+;if(shi=24)shi=0;ri+;if(ri=30)yue+; 4.程序仿真学生:在机房电脑上完成程序录入、仿真。教师:巡回指导。讲解仿真结果三、课堂总结1.学生总结(1)你的收获有哪些?(2)你还有哪些知识没有掌握好?2.教师总结点评作业布置完成课后习题:练一练