您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 51单片机制作的电子时钟的proteus仿真
通过proteus仿真51单片机制作的电子钟----------bylyz这是一个利用proteus仿真简易电子钟的例子,通过c51单片机和一块1602液晶显示屏来工作,十分简单,这样的实践是初学者不错的练习。第一步:首先,点开isis.exe(切记不是ARES.EXE),如图1通过proteus把原理图布好。单片机可以选用AT89c51,液晶显示可通过搜索关键字LM016L得到。由于本电路选用P0口,因此加上了RP1排阻作为上拉电阻。图1第二步:编写程序如下,时间略有误差(us级),可通过keil中的debug调试地更为精确:#includereg52.htypedefunsignedcharuchar;typedefunsignedintuint;sbitrs=P3^2;sbitwr=P3^3;sbitlcden=P3^4;uchartimecount=0;voiddelay(uinti){uinta,b;for(a=i;a0;a--)for(b=10;b0;b--);}/********************1602*****************/voidwrite_com(ucharcom){P0=com;rs=0;lcden=0;delay(10);lcden=1;delay(10);lcden=0;}voidwrite_date(uchardate){P0=date;rs=1;lcden=0;delay(10);lcden=1;delay(10);lcden=0;}voidinit(){wr=0;write_com(0x38);delay(20);write_com(0x0f);delay(20);write_com(0x06);delay(20);write_com(0x01);delay(20);}/*********************************************************主函数**********************************************************/voidmain(){uchara,second=0,minute=0,hour=0;uchartable[8];TMOD|=0x01;//定时/计数器0工作于定时器模式,方式1TH0=(65536-5000)/256;TL0=(65536-5000)%256;//50ms定时常数EA=1;//开总中断ET0=1;//允许定时/计数器0中断TR0=1;//启动定时/计数器0中断P0=0;P2&=0x1F;init();while(1){if(timecount19)//*****20乘50为1000ms{timecount=0;second++;}if(second==60){second=0;minute++;}if(minute==60){minute=0;hour++;}if(hour==24){hour=0;}table[0]=hour/10+48;//***数字加上48对应的它的ascll码,用来显示在液晶上table[1]=hour%10+48;table[2]=58;//***58对应冒号table[3]=minute/10+48;table[4]=minute%10+48;table[5]=0;table[6]=second/10+48;table[7]=second%10+48;write_com(0x80);delay(20);for(a=0;a8;a++){write_date(table[a]);delay(20);}}}/*********************************************************中断服务函数**********************************************************/voidTime0(void)interrupt1//using0{TH0=(65536-5000)/256;TL0=(65536-5000)%256;//50ms定时常数timecount++;}/*********************************************************/第三步:双击电路图中的单片机,如下添加hex文件。第四步:通过右下角的按钮控制单片机的工作,仿真开始结果如下:Let’smakethingsmuchmorebetter!在里面添加进去通过keil生成的hex文件
本文标题:51单片机制作的电子时钟的proteus仿真
链接地址:https://www.777doc.com/doc-5401610 .html