标题: 求大神指点一下 用74hc595和中断驱动 一位数码管; 帮忙给看下 万分感谢 [打印本页]

作者: 邢世伟    时间: 2020-10-25 11:56
标题: 求大神指点一下 用74hc595和中断驱动 一位数码管; 帮忙给看下 万分感谢

求大神指点一下   用74hc595和中断驱动 一位数码管;  帮忙给看下  万分感谢
#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);
}


单位数码管驱动.rar

26.12 KB, 下载次数: 5


作者: wulin    时间: 2020-10-26 08:19
赘句多,语句顺序不当。给你整理后运行正常。你仔细对比一下就能明白问题所在。

  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. }
复制代码




作者: 邢世伟    时间: 2020-10-26 11:24
wulin 发表于 2020-10-26 08:19
赘句多,语句顺序不当。给你整理后运行正常。你仔细对比一下就能明白问题所在。

好的  谢谢 我先看一下。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1