完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #include"MacroAndConst.h" #include"DS1302.h" ***it io_lcd1602_RS=P2^3; //定义端口 ***it io_lcd1602_RW=P2^4; ***it io_lcd1602_E=P2^5; #define io_lcd1602_DB P0 uint8 display_data1[]={"2012-10-14 90%RH"}; //显示数组,存储显示数据 uint8 display_data2[]={" 17:52:50 T=30"}; uint8 second_ge,second_shi,minute_ge,minute_shi,hour_ge,hour_shi,day_ge,day_shi,month_ge,month_shi,year_ge,year_shi; uint8 LCD1602_ReadBusyCheck(void) //读检查忙函数,判读lcd1602是否在忙 { uint8 busycheck; io_lcd1602_RS=0; io_lcd1602_RW=1; io_lcd1602_E=1; _nop_(); _nop_(); _nop_(); busycheck=io_lcd1602_DB; io_lcd1602_E=0; return busycheck; } void LCD1602_WriteOrder(uint8 order) //向lcd1602写显示指令 { while((LCD1602_ReadBusyCheck()&0x80)==0x80); io_lcd1602_RS=0; io_lcd1602_RW=0; io_lcd1602_E=0; io_lcd1602_DB=order; io_lcd1602_E=1; _nop_(); _nop_(); io_lcd1602_E=0; } static void LCD1602_WriteData(uint8 dat) //向lcd1602写显示数据 { while((LCD1602_ReadBusyCheck()&0x80)==0x80); io_lcd1602_RS=1; io_lcd1602_RW=0; io_lcd1602_E=0; io_lcd1602_DB=dat; io_lcd1602_E=1; _nop_(); _nop_(); io_lcd1602_E=0; } void LCD1602_Init() //初始化函数 { io_lcd1602_DB=0xff; LCD1602_WriteOrder(0x38); //设置8位格式,2行,5*7 LCD1602_WriteOrder(0x38); LCD1602_WriteOrder(0x0c); //整体显示,关光标,不闪烁 LCD1602_WriteOrder(0x06); //设定输入格式,增量不移位 LCD1602_WriteOrder(0x01); //清屏 } void LCD1602_Display_Handle() //显示数据处理 { second_ge=clock_data[0]%10; //分离个位和十位 second_shi=clock_data[0]/10; minute_ge=clock_data[1]%10; minute_shi=clock_data[1]/10; hour_ge=clock_data[2]%10; hour_shi=clock_data[2]/10; day_ge=clock_data[3]%10; day_shi=clock_data[3]/10; month_ge=clock_data[4]%10; month_shi=clock_data[4]/10; year_ge=clock_data[5]%10; year_shi=clock_data[5]/10; display_data2[9]=second_ge; //把数据送入显示数组 display_data2[8]=second_shi; display_data2[6]=minute_ge; display_data2[5]=minute_shi; display_data2[3]=hour_ge; display_data2[2]=hour_shi; display_data1[9]=day_ge; display_data1[9]=day_shi; display_data1[6]=month_ge; display_data1[5]=month_shi; display_data1[3]=year_ge; display_data1[2]=year_shi; } void LCD1602_Display(uint8 address,uint8 y,uint8 content[16]) //送显示地址和显示数据 { uint8 i; if(y==1) { LCD1602_WriteOrder(address|0x80); } else { LCD1602_WriteOrder(address|0xc0); } for(i=0;i<16;i++) LCD1602_WriteData(content[i]); } void LCD1602_Updata() //把数据送入lcd1602,做最终处理 { LCD1602_Display_Handle(); LCD1602_Display(0x00,1,display_data1); LCD1602_Display(0x00,2,display_data2); }
|
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-13 06:20 , Processed in 0.671813 second(s), Total 55, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号