欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    项目七 电子日历的制作与实现电子教案 中职 单片机c语言程序设计及仿真.doc

    • 资源ID:76379598       资源大小:1.03MB        全文页数:15页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    项目七 电子日历的制作与实现电子教案 中职 单片机c语言程序设计及仿真.doc

    项目七 电子日历的制作与实现 教学设计任务(课题)名称任务1 LCD1602液晶显示授课班级课 型理实一体化课 时4授课时间任务(教学内容)描述本任务主要学习LCD1602的显示原;控制指令、读写操作时序及C程序编写等内容。教学目标知识目标了解LCD1602显示原理;掌握LCD1602控制指令;掌握LCD1602读写操作时序;能力目标会LCD1602初始化过程;会利用Keil软件编写程序;会利用Proteus软件仿真调试程序情感态度与价值观目标培养学生自主讨论学习的能力;教学重难点重点LCD1602控制指令;LCD1602读写操作时序;难点LCD1602控制指令;LCD1602读写操作时序;教学方法讲授法、分组讨论教学资源多媒体教学设备、PPT、EDA仿真机房教学过程教学环节教学内容知识点与技能点一、布置任务任务描述单片机P0端口外接一个LCD1602液晶显示屏的数据端口,试编写控制程序,控制液晶显示屏显示“I Like LCD”。二、新课讲解1.LCD1602显示原理LCD1602能显示行×16个字符,该显示器由32个字符点阵块组成,每个字符点阵块由5×7或5×10个点阵组成。2.LCD1602控制指令3.LCD1602读写操作时序读操作过程为:R/W端为1;RS端根据写指令写数据,分别设置为0和1;E端变为,LCD1602输出数据,单片机可读取数据DB0-DB7;E端变为0,此后数据输出无效。写操作过程为: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()该函数用于向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); 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(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_data('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的内部结构;引脚名称和功能;读写操作时序;C语言指针;编写电子日历程序等内容。教学目标知识目标了解LCD12864的内部结构;了解LCD12864的引脚名称和功能;理解LCD12864读写操作时序;理解C语言指针;能力目标会使用LCD12864指令集;会编写电子日历程序;会利用Proteus软件调试仿真电子日历程序;情感态度与价值观目标培养学生自主讨论学习的能力;教学重难点重点编写电子日历程序;难点C语言指针应用教学方法讲授法、分组讨论教学资源多媒体教学设备、PPT、EDA仿真机房教学过程教学环节教学内容知识点与技能点一、布置任务任务描述利用LCD12864完成电子日历的制作,8个独立按键K1K8分别对年、月、日、时、分、星期进行调节。二、新课讲解1.LCD12864硬件结构LCD12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。可显示图形,汉字等信息。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,单片机准备好数据DB0DB7,然后在E端产生下降沿,LCD12864锁定数据。5.LCD12864显示原理向显示数据RAM某单元写入一个字节数据,将在显示屏对应位置显示纵向8个像素点的图像。LCD12864不带字库,必须使用取模软件获取要显示汉字、英文字符、数字的数据编码,并将这些数据编码存放在单片机的程序存储器中,程序将这些数据写入LCD12864的显示数据RAM中进行显示。在使用字模提取V2.0时,在“文字输入区”输入相应的汉字、英文字符、数字,;在“参数设置/其他选项”中选中“纵向取模”、“字节倒序”;确定后,在“取模方式”中选择“C51格式”,软件将自动生成字模数据。1.任务分析(1)根据电路分析可知:单片机的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坐标(列地址)。写xy坐标函数void LCD_xy()该函数用于设定要显示字符的具体位置。清除显示屏函数void clrscr()该函数用于清除LCD12864液晶屏。初始化程序void LCD12864_init()该函数用于初始化LCD12864。写汉字函数vodi Write_han()该函数用于显示一个16×16汉字 。写ASCII函数void Write_ascii()该函数用于显示一个8×16的英文字母或数字等。2.程序流程图3.程序编写/*判忙函数*/void busy() EN=1; RS=0; RW=1; out0=0xff; while(!BF);/*写数据函数*/void Write_date(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(y<64) CS1=0;CS2=1; LCD_y(y); else CS1=1;CS2=0; LCD_y(y-64); LCD_x(x);/*清屏函数*/void clrscr() uchar j,k; CS1=0;CS2=0; for(j=0;j<8;j+) LCD_y(0); LCD_x(j); for(k=0;k<64;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_cmd(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;j<x+2;j+) for(k=y;k<y+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;j<x+2;j+) for(k=y;k<y+8;k+) LCD_xy(j,k); if(z=0) Write_date(pn+); else Write_date(pn+); CS1=CS2=0;/*显示界面*/void LCDdisplay() /*日 历*/ Write_han(0,40,0,hanzi6); Write_han(0,72,0,hanzi7); /*xxxx年xx月xx日*/ Write_ascii(2,8,0,shuzin1/7); Write_ascii(2,16,0,shuzin1%7); Write_ascii(2,24,0,shuzin2/7); Write_ascii(2,32,0,shuzin2%7); Write_han(2,40,0,hanzi8); Write_ascii(2,56,0,shuziyue/10); Write_ascii(2,64,0,shuziyue%10); Write_han(2,72,0,hanzi9); Write_ascii(2,88,0,shuziri/10); Write_ascii(2,96,0,shuziri%10); Write_han(2,104,0,hanzi6); /*xx-xx-xx*/ Write_ascii(4,32,0,shuzishi/10); Write_ascii(4,40,0,shuzishi%10); Write_ascii(4,48,0,shuzi10); Write_ascii(4,56,0,shuzifen/10); Write_ascii(4,64,0,shuzifen%10); Write_ascii(4,72,0,shuzi10); Write_ascii(4,80,0,shuzimiao/10); Write_ascii(4,88,0,shuzimiao%10); /*星期x*/ Write_han(6,40,0,hanzi10); Write_han(6,56,0,hanzi11); Write_han(6,72,0,hanzixq); /*按键扫描函数*/unsigned char KeyScan(void) unsigned char keynum; if(keynn!=0xff) delayms(20); if(keynn!=0xff) keynum=keynn; while(keynn!=0xff);switch(keynum) case 0xfe:return 1;break; case 0xfd:return 2;break; case 0xfb:return 3;break; case 0xf7:return 4;break; case 0xef:return 5;break; case 0xdf:return 6;break; case 0xbf:return 7;break; default:return 0;break; return 0;void main() TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1; LCD12864_chushi(); clrscr(); while(1) k=KeyScan( ); switch (k) case 1:n1+;if(n1>=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.教师总结点评作业布置完成课后习题:练一练

    注意事项

    本文(项目七 电子日历的制作与实现电子教案 中职 单片机c语言程序设计及仿真.doc)为本站会员(春哥&#****71;)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开