永发信息网

基于STC89C52单片机比赛记分牌的设计程序

答案:2  悬赏:30  手机版
解决时间 2021-04-24 05:06
能不能告诉你的QQ,我有些关于单片机的问题想向你请教,谢谢
最佳答案
单片机比赛记分牌很好做,程序也好写
关键是电池,用于室外的,难找足量的电池
全部回答

就弄个at24c02读写程序,注释详细看这个也应该用不到专门的时钟芯片,思路:开机进入主循环之前读取芯片中的数据,设置个标志位没30秒取反一次。或者但秒=0或为60时取反一次也是半分种吸和或断开,

利用单片机本身的定时器,例如每个50ms中断一次20次就是一秒,

bit ack;    //应答标志位

sbit sda=p2^1; sbit scl=p2^0;

void start_i2c() {   sda=1;   //发送起始条件的数据信号   _nop();   scl=1;   _nop();    //起始条件建立时间大于4.7us,延时   _nop();   _nop();   _nop();   _nop();      sda=0;    //发送起始信号   _nop();    //起始条件锁定时间大于4μ   _nop();   _nop();   _nop();   _nop();       scl=0;    //钳住i2c总线,准备发送或接收数据   _nop();   _nop(); } void stop_i2c() {   sda=0;    //发送结束条件的数据信号   _nop();   //发送结束条件的时钟信号   scl=1;    //结束条件建立时间大于4μ   _nop();   _nop();   _nop();   _nop();   _nop();   sda=1;    //发送i2c总线结束信号   _nop();   _nop();   _nop();   _nop(); }

void  sendbyte(unsigned char c) {  unsigned char bitcnt;    for(bitcnt=0;bitcnt<8;bitcnt++)  //要传送的数据长度为8位     {     if((c<<bitcnt)&0x80)sda=1;   //判断发送位     else  sda=0;         _nop();     scl=1;    //置时钟线为高,通知被控器开始接收数据位     _nop();     _nop();    //保证时钟高电平周期大于4μ     _nop();     _nop();     _nop();         scl=0;     }         _nop();     _nop();     sda=1;    //8位发送完后释放数据线,准备接收应答位     _nop();     _nop();       scl=1;     _nop();     _nop();     _nop();     if(sda==1)ack=0;         else ack=1;    //判断是否接收到应答信号     scl=0;     _nop();     _nop(); }

  unsigned char  rcvbyte() {   unsigned char retc;   unsigned char bitcnt;     retc=0;   sda=1;    //置数据线为输入方式   for(bitcnt=0;bitcnt<8;bitcnt++)     {     _nop();         scl=0;    //置时钟线为低,准备接收数据位     _nop();     _nop();    //时钟低电平周期大于4.7us     _nop();     _nop();     _nop();     scl=1;    //置时钟线为高使数据线上数据有效     _nop();     _nop();     retc=retc<<1;     if(sda==1)retc=retc+1; //读数据位,接收的数据位放入retc中     _nop();     _nop();     }   scl=0;      _nop();   _nop();   return(retc); }

void ack_i2c(void) {     sda=0;       _nop();   _nop();   _nop();       scl=1;   _nop();   _nop();    //时钟低电平周期大于4μ   _nop();   _nop();   _nop();    scl=0;    //清时钟线,钳住i2c总线以便继续接收   _nop();   _nop();    }

bit isendstr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no) {    unsigned char i;  for(i=0;i<no;i++)     {    start_i2c();    //启动总线    sendbyte(sla);    //发送器件地址     if(ack==0)return(0);    sendbyte(suba);    //发送器件子地址     if(ack==0)return(0);       sendbyte(*s);    //发送数据     if(ack==0)return(0);     stop_i2c();    //结束总线   delayms(1);    //必须延时等待芯片内部自动处理数据完毕   s++;   suba++;     }   return(1); }

bit ircvstr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no) {    unsigned char i;

   start_i2c();    //启动总线    sendbyte(sla);    //发送器件地址     if(ack==0)return(0);    sendbyte(suba);    //发送器件子地址     if(ack==0)return(0);

   start_i2c();    sendbyte(sla+1);     if(ack==0)return(0);

  for(i=0;i<no-1;i++)     {     *s=rcvbyte();    //发送数据     ack_i2c();    //发送就答位     s++;     }    *s=rcvbyte();     noack_i2c();    //发送非应位     stop_i2c();    //结束总线   return(1); }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
老师助手里有数学三年级上分数的简单计算课件
德生CR -200的收音机说是能听电视伴音,怎么
董氏化妆我想知道这个在什么地方
腿脚酸重是什么原因,小腿经常很酸,感觉很重
女生你们谁不小心踩死过昆虫?什么虫子?什么
求新唐伯虎点秋香手游下载地址
哪里可以买到7位数以下的QQ号?
163邮箱被盗
我是河北金融学院学会计的,想接本,接哪个学
我妈妈爱胡说八道了该怎么办啊?
不联网时怎么播放QQ音乐本地歌曲?
广东省河源市技工学校的具体地止
赞跳高运动员诗歌,拔河比赛作文要求:要写出运
为什么我每次开通好友买卖都会显示黄砖用户优
续超级QQ
推荐资讯
重庆龙头寺汽车站有哪些公交车可以到
我的qq怎么不储存消息记录?
魅族手机GPRS功能在哪
同城网银跨行转账需要多久
上网出现“尊敬的用户********,您好! 由于
突然间停电,对电脑有什么影响没
隔音耳塞哪里有卖的?在济南?
扬州有找网吧收银员的吗?
2009年9月21日出生的郝姓女孩取什么名字好
开同两种超Q可以同时绑定两个号吗?
CF灵敏度最好是多少
什么是承诺?什么叫承诺?说过的承诺却说了算¿
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?