完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include"reg52.h"
#include #define uint unsigned int #define uchar unsigned char ***it scl=P3^4; ***it sda=P3^5; void delay(); void EEinit(); void EEstart(); void EEstop(); void EEwrite(uchar date); uchar EEread(); void EErespons(); void EEwriteadd(uchar address,uchar date); uchar EEreadadd(uchar address); uchar count,count1,timer; //============================================================================ #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换 ***it LATCH1=P2^3;//定义锁存使能端口 段锁存 ***it LATCH2=P2^2;// 位锁存 unsigned char Duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //0111 1111 void delay1(unsigned int t) { while(--t); } void main() { uchar shi,ge; EEinit(); count1=EEreadadd(4); if(count1!=0xcd) { EEwriteadd(4,0xcd); EEwriteadd(2,1); count=1; } else count=EEreadadd(2); shi=count/10; ge=count%10; count++; EEwriteadd(2,count); while(1) { DataPort=Weima[0]; //取位码 第一位数码管选通,即二进制1111 1110 LATCH2=1; //位锁存 LATCH2=0; DataPort=Duanma[shi]; //取显示数据,段码 “1”共阴字符码 LATCH1=1; //段锁存 LATCH1=0; delay1(200); //65535 DataPort=Weima[1]; //取位码 第一位数码管选通,即二进制1111 1110 LATCH2=1; //位锁存 LATCH2=0; DataPort=Duanma[ge]; //取显示数据,段码 “1”共阴字符码 LATCH1=1; //段锁存 LATCH1=0; delay1(200); //65535 } } void delay() { ;; } void EEinit() { sda=1; delay(); scl=1; delay(); //====================== TMOD=0X01; TH0=(65536-20000)/255; TL0=(65536-20000)%255; EA=1; ET0=1; TR0=1; //======================= } void EEstart() { sda=1; delay(); scl=1; delay(); sda=0; delay(); scl=0; delay(); } void EEstop() { sda=0; delay(); scl=1; delay(); sda=1; delay(); scl=0; delay(); } void EEwrite(uchar date) { uchar temp=0x80,i; for(i=0;i<8;i++) { scl=0; delay(); if((date&temp)==0)sda=0; else sda=1; temp>>=1; delay(); scl=1; delay(); } scl=0; delay(); sda=1; delay(); /*========写法二==================== uchar temp=date,i; for(i=0;i<8;i++) { temp=temp<<1; scl=0; delay(); sda=CY; delay(); scl=1; delay(); } scl=0; delay(); sda=1; delay(); =================================*/ } uchar EEread() { uchar i,k; scl=0; delay(); sda=1; delay(); for(i=0;i<8;i++) { scl=1; delay(); k=(k<<1)|sda; scl=0; delay(); } return k; } void EErespons() { uchar i; scl=1; delay(); while((sda==1)&&(i<255)) i++; scl=0; delay(); } void EEwriteadd(uchar address,uchar date) { EEstart(); EEwrite(0xa0); EErespons(); EEwrite(address); EErespons(); EEwrite(date); EErespons(); EEstop(); } uchar EEreadadd(uchar address) { uchar date; EEstart(); EEwrite(0xa0); EErespons(); EEwrite(address); EErespons(); EEstart(); EEwrite(0xa1); EErespons(); date=EEread(); EEstop(); return date; } //======================================== void timme() interrupt 1 { TH0=(65536-50000)/255; TL0=(65536-50000)%255; timer++; } |
|
相关推荐
9 个讨论
|
|
这么长,这么写下来的啊
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 20:52 , Processed in 0.866970 second(s), Total 64, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号