- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
51单片机液晶显示(含lcd12864和lcd1602)时钟
/*
51mcu液晶时钟(ZYB-MCU51-LCD-A0)
通过一个跳线进行1602和12864之单进行切换
本单片机具有完整的时间初始化和时间日期调校功能。设计制作:Nathen.zhang@
lcd12864部分还未完成,仅能显示欢迎信息。
*/
#includereg52.h#includemath.h
#includeintrins.h //使用_nop_()将会用到此头文件#defineucharunsignedchar
#defineuintunsignedint#defineucharunsignedchar#defineuintunsignedint
//跳线设置 1-2则key=1(lcd12864) 2-3则key=0(lcd1602);sbitkey=P0^4;
//ds1302寄存器宏定义
#defineWRITE_SECOND0x80#defineWRITE_MINUTE0x82
#defineWRITE_HOUR 0x84#defineWRITE_DATE0x86#defineWRITE_MONTH0x88#defineWRITE_DAY 0x8A#defineWRITE_YEAR 0x8C#defineREAD_SECOND 0x81#defineREAD_MINUTE0x83#defineREAD_HOUR 0x85#defineREAD_DATE 0x87#defineREAD_MONTH0x89#defineREAD_DAY 0x8B#defineREAD_YEAR 0x8D#defineWRITE_PROTECT0x8E#defineucharunsignedchar
#defineL10x80 //液晶显示第一行起始地址然后再加上所有位序号(从0开始)
#defineL20xc0 //液晶显示第二行起始地址0x80+0x40#defineDATAP3
#definepos_yearL1+0#definepos_monthL1+3#definepos_dateL1+6#definepos_dayL1+9#definepos_hourL2+0#definepos_minuteL2+3#definepos_secL2+6
//位寻址寄存器定义sbitACC_7=ACC^7;
//管脚定义
sbitsclk=P0^2;//DS1302时钟信号7脚
sbitclk_io=P0^1; //DS1302数据信号 6脚
sbitclk_rst=P0^0; //DS1302片选 5脚
sbitRS1602=P1^5;sbitRW1602=P1^6;sbitE1602=P1^7;
//功能按键定义
sbitfunc_key=P2^2;sbitinc_key=P2^1;sbitdec_key=P2^0;
//地址、数据发送子程序voiddelay(uchar);
voidwrite1602_comd(uchar);
voidwrite1602_data(uchar);voidinit1602_lcd();
voidkeyscan();voidInit_DS1302();
voidread_real_time();uchari,j,flag=0;
ucharcodetable1[]=--/;ucharcodetable2[]=::;
//LCD12864相关函数
//数据线使用P3#defineDATA P3
//控制线使用P1#defineCONTROLP1
#defineRS12864 0 //并行的指令数据选择信号#defineRW12864 1 //并行的读写信号#defineE12864 2 //并行的使能信号
#definePSB128643 //并/串行接口选择 12864LCD分为字符型和点阵型,字符型即内带中文字库的有PSB串并选择引脚。
#defineRST128645 //复位低电平有效
#defineSETB(x,y)(x|=(1y))#defineCLRB(x,y)(x=(~(1y)))#defineCHKB(x,y)(x(1y))voidlcd12864_init(void);
文档评论(0)