基于51单片机的实时时间显示程序.docVIP

  • 132
  • 0
  • 约2.62万字
  • 约 29页
  • 2019-03-22 发布于安徽
  • 举报
. .. #includereg52.h #includeintrins.h #define LCD1602_4PINS #define uchar unsigned char #define uint unsigned int #define LCD1602_DATAPINS P0 void Lcd1602_Delay1ms(uint c); //误差 0us /*LCD1602写入8位命令子函数*/ void LcdWriteCom(uchar com); /*LCD1602写入8位数据子函数*/ void LcdWriteData(uchar dat) ; /*LCD1602初始化子程序*/ void LcdInit(); void LcdDisplay(); void Ds1302Write(uchar addr, uchar dat); uchar Ds1302Read(uchar addr); void Ds1302Init(); void Ds1302Readtime(); void keydown(); void adress_up(); void adress_down(); void date_up(); void date_down(); void time_up(); void time_down(); //---加入全局变量--// extern uchar time[7]; //加入全局变量 sbit LCD1602_E=P2^7; sbit LCD1602_RW=P2^5; sbit LCD1602_RS=P2^6; sbit DSIO=P3^4; sbit RST=P3^5; sbit SCLK=P3^6; sbit key0=P2^0; sbit key1=P2^1; sbit key2=P2^2; sbit key3=P2^3; sbit key4=P2^4; uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c}; uchar time[7] = {0, 0x30, 0x20, 0x18, 0x12, 0x04, 0x14},num,num1; unsigned int adress; /******************************************************************************* * 函数名 : main * 函数功能 : 主函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void Lcd1602_Delay1ms(uint c) //误差 0us { uchar a,b; for (; c0; c--) { for (b=199;b0;b--) { for(a=1;a0;a--); } } } void Ds1302Write(uchar addr, uchar dat) { uchar n; RST = 0; _nop_(); SCLK = 0;//先将SCLK置低电平。 _nop_(); RST = 1; //然后将RST(CE)置高电平。 _nop_(); for (n=0; n8; n++)//开始传送八位地址命令 { DSIO = addr 0x01;//数据从低位开始传送 addr = 1; SCLK = 1;//数据在上升沿时,DS1302读取数据 _nop_(); SCLK = 0; _nop_(); } for (n=0; n8; n++)//写入8位数据 { DSIO = dat 0x01; dat = 1; SCLK = 1;//数据在上升沿时,DS1302读取数据 _nop_(); SCLK = 0; _nop_(); } RST = 0;//传送数据结束 _nop_(); } /******************************************************************************* * 函 数 名

文档评论(0)

1亿VIP精品文档

相关文档