项目七 电子日历的制作与实现电子课件 中职 单片机c语言程序设计及仿真.pptx
-
资源ID:90035791
资源大小:4.06MB
全文页数:43页
- 资源格式: PPTX
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
项目七 电子日历的制作与实现电子课件 中职 单片机c语言程序设计及仿真.pptx
项目七、电子日历的制作与实现项目七、电子日历的制作与实现任务任务1 1 LCD1602LCD1602液晶显示液晶显示任务描述任务描述:单片机P0端口外接一个LCD1602液晶显示屏的数据端口,试编写控制程序,控制液晶显示屏显示“I Like LCD”。1.LCD1602显示原理显示原理知识链接知识链接2.LCD1602控制指令控制指令知识链接知识链接3.LCD1602读写操作时序读写操作时序读操作读操作知识链接知识链接读操作过程为:R/W端为1;RS端根据写指令写数据,分别设置为0和1;E端变为,LCD1602输出数据,单片机可读取数据DB0-DB7;E端变为0,此后数据输出无效。3.LCD1602读写操作时序读写操作时序写操作写操作知识链接知识链接写操作过程为: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第一行中央显示所以数据地址为:0 x80+0X03。2.程序流程程序流程任务实施任务实施3.程序编写程序编写判忙函数判忙函数任务实施任务实施void busy()P0=0 xff;do rs=0;rw=1;en=0;en=1;while(BF=1);en=0;3.程序编写程序编写写命令函数写命令函数任务实施任务实施void Write_cmd(uchar x)busy();rs=0;/写指令标志 rw=0;DATA=x;delayms(1);en=1;delayms(1);en=0;3.程序编写程序编写初始化函数初始化函数任务实施任务实施void Lcd_init()delayms(5);Write_cmd(0 x38);delayms(1);Write_cmd(0 x38);delayms(1);delayms(1);Write_cmd(0 x08);delayms(1);Write_cmd(0 x01);delayms(1);Write_cmd(0 x06);delayms(1);Write_cmd(0 x0c);3.程序编写程序编写主函数主函数任务实施任务实施void main()Lcd_init();Write_cmd(0 x80+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.程序电路仿真程序电路仿真绘制电路图绘制电路图任务实施任务实施5.程序电路仿真程序电路仿真仿真仿真任务实施任务实施任务任务2 2 电子日历的制作与实现电子日历的制作与实现任务描述任务描述:利用LCD12864完成电子日历的制作,8个独立按键K1K8分别对年、月、日、时、分、星期进行调节。1.LCD12864硬件结构硬件结构知识链接知识链接2.LCD12864指令系统指令系统知识链接知识链接3.LCD12864控制寄存器控制寄存器知识链接知识链接4.LCD12864读写操作时序读写操作时序读操作读操作知识链接知识链接读操作过程为:E端先为0,R/W端为1,RS端根据读状态或读数据,分别置0或1,CS1、CS2根据选择情况为0或1,E端变为1,单片机读取数据DB0DB7,然后在E端产生0,LCD12864输出数据无效。4.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()1.任务分析任务分析任务实施任务实施写y坐标函数void LCD_y()该函数用于设定要显示字符的y坐标(列地址)。写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=0 xff;while(!BF);3.程序编写程序编写写数据函数写数据函数任务实施任务实施void Write_date(uchar date)busy();EN=1;RS=1;RW=0;out0=date;EN=0;3.程序编写程序编写写指令函数写指令函数任务实施任务实施void Write_cmd(uchar cmd)busy();EN=1;RW=0;RS=0;out0=cmd;EN=0;3.程序编写程序编写写写X坐标函数坐标函数任务实施任务实施void LCD_x(uchar x)Write_cmd(0 xb8|x);3.程序编写程序编写写写Y坐标函数坐标函数任务实施任务实施void LCD_y(uchar y)Write_cmd(0 x40|y);3.程序编写程序编写写写XY坐标函数坐标函数任务实施任务实施void LCD_xy(uchar x,uchar y)if(y64)CS1=0;CS2=1;LCD_y(y);else CS1=1;CS2=0;LCD_y(y-64);LCD_x(x);3.程序编写程序编写清屏函数清屏函数任务实施任务实施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(0 x00);CS1=CS2=1;3.程序编写程序编写12864初始化函数初始化函数任务实施任务实施void LCD12864_chushi()RST=0;delayms(15);RST=1;CS1=CS2=1;Write_cmd(0 x3e);Write_cmd(0 xb8);Write_cmd(0 x40);Write_cmd(0 xc0);Write_cmd(0 x3f);CS1=CS2=0;3.程序编写程序编写写汉字函数写汉字函数任务实施任务实施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;3.程序编写程序编写写写ASCII函数函数任务实施任务实施void Write_ascii(uchar x,y,z,uchar*p)uint n=0;uchar j,k;for(j=x;jx+2;j+)for(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();3.程序编写程序编写中断函数中断函数任务实施任务实施void time0()interrupt 1TH0=(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.程序电路仿真程序电路仿真绘制电路绘制电路任务实施任务实施4.程序电路仿真程序电路仿真仿真仿真任务实施任务实施