找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

求大神指點(diǎn)一下 用74hc595和中斷驅(qū)動(dòng) 一位數(shù)碼管; 幫忙給看下 萬(wàn)分感謝

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:519743 發(fā)表于 2020-10-25 11:56 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

求大神指點(diǎn)一下   用74hc595和中斷驅(qū)動(dòng) 一位數(shù)碼管;  幫忙給看下  萬(wàn)分感謝
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit CP = P2^0;
sbit DA = P2^1;
sbit LE = P2^2;
uchar sec,a,b;
uchar code seg[] = {
    0xc0, 0xf9, 0xa4, 0xb0, 0x99,
    0x92, 0x82, 0xf8, 0x80, 0x10};
uchar dis_buff[1] = {0};
void write_595(uchar dat)//д??595
{
    uchar i;
    for(i = 0; i < 8; i++) {
      DA = dat & 0x80;
    CP = 0;
       CP = 1;
    dat <<= 1;
    }
}
void update(uchar sec) //
{  
   dis_buff[0] =seg[sec];     // sec ????1????????????????
}
void display()
{
  write_595(dis_buff[0]);  //dis_buff[0] ?е????  ????write_595;
  LE = 0;
  LE = 1;      //?????????????
}

void timer0_isr() interrupt 1   //?ж??????????
{  
TMOD = 0X01;
    TH0 = 0x4c;
EA = 1;
ET0 = 1;
TR0 = 1;
    a++;
if(a%5==0)
{
b = ~b;
update(); //??sec ????dis_buff[0]?У? ???磺sec = 1?  ??浽dis_buff[0]???У?
}      //???
    if(a == 20)
  {
  display(); //dis_buff[0] ?е????  ????write_595;
      a = 0;
   sec++;   
   }
   if(sec==9) sec = 0;  
    }



void timer0_init(void)
{
    TMOD = 0x01;//T0??????1
    TH0 = 0x4c; //50ms@11.0592MHz
    EA = 1;
ET0 = 1;
TR0 = 1;
}

void  main()
{
tiemr0_init();
while(1);
}


單位數(shù)碼管驅(qū)動(dòng).rar

26.12 KB, 下載次數(shù): 5

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

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2020-10-26 08:19 | 只看該作者
贅句多,語(yǔ)句順序不當(dāng)。給你整理后運(yùn)行正常。你仔細(xì)對(duì)比一下就能明白問(wèn)題所在。

  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit CP = P2^0;
  5. sbit DA = P2^1;
  6. sbit LE = P2^2;

  7. uchar sec,a;
  8. uchar code seg[] = {
  9.     0xc0,0xf9,0xa4,0xb0,0x99,
  10.          0x92,0x82,0xf8,0x80,0x90};

  11. void write_595(uchar dat)
  12. {
  13.         uchar i;
  14.         for(i = 0; i < 8; i++)
  15.         {
  16.                 DA = dat&0x80;
  17.                 CP = 0;
  18.                 CP = 1;
  19.                 dat <<= 1;
  20.         }
  21.         LE = 0;
  22.         LE = 1;
  23. }

  24. void timer0_isr() interrupt 1
  25. {  
  26.         TH0=0x4c;
  27.         TL0=0x00;
  28.         a++;
  29.         if(a == 20)
  30.         {
  31.                 a = 0;
  32.                 sec++;   
  33.         }
  34.         if(sec>9) sec = 0;  
  35.         write_595(seg[sec]);
  36. }

  37. void timer0_init(void)
  38. {
  39.         TMOD = 0x01;
  40.         TH0 = 0x4c; //50ms@11.0592MHz
  41.         TL0 = 0x00;
  42.         EA  = 1;
  43.         ET0 = 1;
  44.         TR0 = 1;
  45. }

  46. void  main()
  47. {
  48.         timer0_init();
  49.         while(1);
  50. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

板凳
ID:519743 發(fā)表于 2020-10-26 11:24 | 只看該作者
wulin 發(fā)表于 2020-10-26 08:19
贅句多,語(yǔ)句順序不當(dāng)。給你整理后運(yùn)行正常。你仔細(xì)對(duì)比一下就能明白問(wèn)題所在。

好的  謝謝 我先看一下。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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