找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)+1206顯示時間程序, leds一秒一變化,就不正常了

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:64817 發(fā)表于 2020-7-12 10:15 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
各位大佬,我是個業(yè)余愛好者,基礎(chǔ)差,,請教大家了,,
我想讓1206上顯示,時間(小時:分種,秒),不知道哪里錯了,1206顯示秒的地方,不是一秒一變化,同時進(jìn)入一秒
的IF中不見leds變化,1206,顯示的部分全刪了,進(jìn)入一秒的IF  leds是有變化的,,一個個加的測試,也像一到1206寫
命令處和1206寫數(shù)據(jù)的地方,, leds一秒一變化,就不正常了,,(1206顯示秒的地方,不是一秒一變化,)

謝謝謝謝

單片機(jī)源程序如下:
#include <reg52.h>
unsigned char ms;
//unsigned char ml;
sbit sm=P2^6;          //RS 數(shù)據(jù)/命令選擇。H/L.
sbit dx=P2^5;          // R/W讀寫選擇。H/L.
sbit eo=P2^7;          //  使能
sbit leds=P2^0;
sbit ledf=P2^1;
sbit ledh=P2^2;
unsigned char  t;
unsigned char code yihang[]="BeiJingShiJian";
unsigned char code erhang[]="0123456789";

/* 開定時器T0.定時5MS   RST15F204 */
void InitTimer0()
{
    TMOD = 0x01;        //設(shè)定定時器0工作方式(16位定時器 )
    TH0 = 0xEC;            //
    TL0 = 0x78;        //
    EA = 1;                   // 開總中斷
    ET0 = 1;           // 開定時器0中斷
    TR0 = 1;           // 啟動定時器0
}




void Lcd1602_Delay1ms(unsigned int c)   //誤差 0us
{
    unsigned char a,b;
        for (; c>0; c--)                                                                                                                 
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }
            
}


/*寫命令比如光標(biāo)顯示與不顯示,需不需要移屏,在液晶什么位置顯示        */
void xieml (unsigned char ml)
  {
        eo=0;
          dx=0;           // R/W讀寫選擇。H/L..
        sm=0;           //RS 數(shù)據(jù)/命令選擇。H/L.
        P0=ml;
        Lcd1602_Delay1ms(2);
        eo=1;
        Lcd1602_Delay1ms(2);
        eo=0;
  }

/*寫數(shù)據(jù)比如在液晶顯示什么容        */
void xiesj(unsigned char sj)   
{
        eo=0;
    dx=0;           // R/W讀寫選擇。H/L.
        sm=1;           //RS 數(shù)據(jù)/命令選擇。H/L.
        P0=sj;
        Lcd1602_Delay1ms(2);
        eo=1;
        Lcd1602_Delay1ms(2);
        eo=0;                                                         
}

/*1206初始化        */
void chushiha()
{

   xieml(0X38);
   xieml(0X0c);
  // xieml(0X06);
   xieml(0X01);
}


/*主函數(shù),寫入固定時間,驅(qū)動某個繼電器        */
void main()
{
  unsigned char n,s,f,h,sh,sg,fh,fg,hh,hg;
  InitTimer0();
  chushiha();

  while(1)
  {

  if(ms==200)
  {
   ms=0; s=s+1; leds=~leds;   //為了檢測觀察程序,加了一秒leds亮滅一次。
  }


  if(s==59)
  {
   s=0; f=f+1;ledf=~ledf;           //為了檢測觀察程序,加了一分leds亮滅一次。
  }

  if(f==59)
  {
   f=0; h=h+1; ledh=~ledh;
  }
  if(h==11)
  {
   h=0;
  }           



  sg=s%10; sh=s/10;                // sg秒的個位數(shù),sh秒十位數(shù)。
  fg=f%10; fh=f/10;                // fg分的個位數(shù),fh分十位數(shù)。
  hg=h%10; hh=h/10;                // hg時的個位數(shù),hh時十位數(shù)。

  xieml(0X80+0X01);
  for(n=0;n<14;n++)
  {
  xiesj(yihang[n]);            //1206第一行顯示BeiJingShiJian。
}
         
  xieml(0X80+0X44);
  xiesj(erhang[hh]);          //1206第二行顯示時間時的十位數(shù)。
  xieml(0X80+0X45);
  xiesj(erhang[hg]);         //1206第二行顯示時間時的個位數(shù)。
  xieml(0X80+0X46);
  xiesj(':');


  xieml(0X80+0X47);
  xiesj(erhang[fh]);           //1206第二行顯示時間分的十位數(shù)。
  xieml(0X80+0X48);
  xiesj(erhang[fg]);         //1206第二行顯示時間分的個位數(shù)。
  xieml(0X80+0X49);
  xiesj(',');
         

  xieml(0X80+0X4A);
  xiesj(erhang[sh]);          //1206第二行顯示時間秒的十位數(shù)。
  xieml(0X80+0X4B);
  xiesj(erhang[sg]);         //1206第二行顯示時間秒的個位數(shù)。


  }
}


void T0_time() interrupt 1
{                  
  TH0 = 0xEC;            //
  TL0 = 0x78;
  ms++;
// if(ms==200){ms=0;led=~led;}


}


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

使用道具 舉報

沙發(fā)
ID:789121 發(fā)表于 2020-7-12 17:52 | 只看該作者
不是1s變化具體是不變化還是2s變化,delay1ms那個函數(shù)用for循環(huán)延時不準(zhǔn)確的,寫數(shù)據(jù)時間過長可能導(dǎo)致計(jì)時不準(zhǔn),將if(ms==200)改成if(ms>199),估計(jì)會好一些
回復(fù)

使用道具 舉報

板凳
ID:64817 發(fā)表于 2020-7-13 13:37 | 只看該作者
不要黑 發(fā)表于 2020-7-12 17:52
不是1s變化具體是不變化還是2s變化,delay1ms那個函數(shù)用for循環(huán)延時不準(zhǔn)確的,寫數(shù)據(jù)時間過長可能導(dǎo)致計(jì)時 ...

有變化,,但太正常了 ,理想是一秒,,實(shí)際都快1分了
回復(fù)

使用道具 舉報

地板
ID:789121 發(fā)表于 2020-7-14 14:39 | 只看該作者
abeimao 發(fā)表于 2020-7-13 13:37
有變化,,但太正常了 ,理想是一秒,,實(shí)際都快1分了

是仿真的么?仿真中有沒有模擬電路,可以把源文件發(fā)上來測試一下
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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