找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1610|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

求大神幫忙看一下,最近做的這個(gè)秒表,兩位顯示正常,但是四位的 顯示的分鐘 就 ...

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:519743 發(fā)表于 2020-10-27 23:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
求大神幫忙看一下,最近做的這個(gè)秒表,兩位顯示正常,但是四位的  顯示的分鐘  就  那個(gè)啥了。感謝大神在百忙之中  抽空看下,萬分感謝;
#include<reg51.h>
#include<intrins.h>
sbit sck = P2^0;
sbit rck = P2^1;
sbit ds = P2^2;
sbit L1 = P2^7;
sbit L2 = P2^6;
sbit L3 = P2^5;
sbit L4 = P2^4;
sbit L5 = P2^3;
sbit L6 = P3^0;
sbit mr = P3^1;//?????  ??????Ч??
#define uint unsigned int
#define uchar unsigned char
uchar  seg[] = {0xc0,0xf9,0xa4,0xb0,0x99,
         0x92,0x82,0xf8,0x80,0x90};
uchar a,sec,min,hou;
void send_595(uchar date)
{   uchar i;
   for(i=1;i<9;i++)
  {
   ds = date&0x80;
   date<<=1;
   sck = 0;
   sck = 1;
  }
   rck = 0;
   rck = 1;
  
}

void timer0_isr()  interrupt 1
{   uchar j;
   L1 = 0;
   L2 = 0;
   L3 = 0;
   L4 = 0;
   L5 = 0;
   L6 = 0;
  
   TH0 =0X4C;
   TL0 =0X00;
   a++;
   if(a==20)
   {
   a = 0;
   sec++;
   }
   if(sec>59)
   {
   sec = 0 ;
   min++;
   }
   if(min>59)
   {
   min = 0;
   }
    mr = 0;
    mr = 1;
   switch(j)
   {
   case 0:   send_595(seg[sec%10]);  L1 = 1;   break;
   case 1:   send_595(seg[sec/10]);  L2 = 1;   break;
   case 2:   send_595(seg[min%10]);  L3 = 1;   break;
   case 3:   send_595(seg[min/10]);  L4 = 1;   break;
  // case 4:   send_595(seg[hou%10]);  L5 = 1;   break;
  // case 5:   send_595(seg[hou/10]);  L6 = 1;   break;
   }
   j++;
   if(j==4)
   j=0;  
     
}
void timer0_init(void)
{
   TMOD = 0X01;
   TH0 =0X4C;
   TL0 =0X00;
   EA = 1;
   ET0 = 1;
   TR0 = 1;
}
void main()
{
  timer0_init();
  while(1);
}

秒表.rar

59.47 KB, 下載次數(shù): 4

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2020-10-28 07:11 | 只看該作者
本帖最后由 wulin 于 2020-10-28 08:16 編輯

樓主程序主要問題是局部變量j使用不當(dāng),其次動(dòng)態(tài)掃描頻率過低。
void timer0_isr()  interrupt 1
{
  static uchar j;//改為靜態(tài)局部變量
   L1 = 0;
   L2 = 0;
   L3 = 0;
   L4 = 0;
   L5 = 0;
   L6 = 0;
  
   TH0 =0Xee;        //改為5ms定時(shí)
   TL0 =0X00;
   a++;
   if(a==200) //1秒
   {
   a = 0;
   sec++;
   }
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表