标题: 求赐教,求赐教,显示程序不会啊 [打印本页]

作者: 李小慧    时间: 2016-12-28 17:56
标题: 求赐教,求赐教,显示程序不会啊
#include "reg52.h"

unsigned char code dsp_code_ca[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int tflag;
unsigned char dspflag;
unsigned char second;
unsigned char dflag;

void display(unsigned char d);

void main()
{
  TMOD |= 0x02;
  TH0 = 0x06;
  TL0 = 0x06;
  EA = 1;
  ET0 = 1;
  TR0 = 1;
  while(1)
  {
    display(second);  
  }
}

//T0中断服务函数
void isr_t0(void) interrupt 1
{
  tflag++;
  dflag++;
  if(dflag == 16)
  {
          dflag = 0;
        dspflag++;
        if(dspflag == 2)
          dspflag = 0;
  }
  if(tflag == 4000)
  {
    tflag = 0;
    second++;
    if(second == 60)
      second = 0;
  }  
}

//显示程序
void display(unsigned char d)
{
  if((dspflag == 0) && (d/10 != 0))
  {
        P0 = 0xFF;
    P2 |= 0xE0;
    P2 &= 0x1F;

        P0 = dsp_code_ca[d/10];
    P2 |= 0xE0;
    P2 &= 0x1F;
    P0 = 0x40;
    P2 |= 0xC0;
    P2 &= 0x3F;
  }
  if(dspflag == 1)
  {
    P0 = 0xFF;
        P2 |= 0xE0;
    P2 &= 0x1F;

        P0 = dsp_code_ca[d%10];
    P2 |= 0xE0;
    P2 &= 0x1F;
    P0 = 0x80;
    P2 |= 0xC0;
    P2 &= 0x3F;
  }  
}



作者: 张伟灵    时间: 2016-12-28 21:33
有电路图吗?没有电路图不好说。&=|=就是按位与和或,然后赋值。
作者: 李小慧    时间: 2016-12-29 14:49
张伟灵 发表于 2016-12-28 21:33
有电路图吗?没有电路图不好说。&=|=就是按位与和或,然后赋值。


作者: 李小慧    时间: 2016-12-29 14:51
张伟灵 发表于 2016-12-28 21:33
有电路图吗?没有电路图不好说。&=|=就是按位与和或,然后赋值。

Y7是位选,Y6是段选。这个现实程序定义的d,还有显示的逻辑我看不懂。能帮我解一下惑吗?
谢谢您
作者: zl2168    时间: 2016-12-29 22:08
本帖最后由 zl2168 于 2016-12-29 22:12 编辑

显示是单片机最基本最常用的功能。
介绍你几种显示电路和程序,自己去学习研究吧!


5 显示


5.1  LED数码管静态显示


实例51  单个LED数码管循环显示0~9


实例52  74LS377并行输出3LED静态显示


实例53  CC4511 BCD码驱动3LED数码管静态显示


实例54  74LS164串行扩展3LED数码管静态显示


实例55  CC4094串行扩展3LED数码管静态显示


实例56  74HC595串行扩展3LED数码管静态显示


5.2  LED数码管动态显示


实例57  PNP晶体管选通3位共阳LED数码管动态显示


实例58  74LS139选通4LED数码管动态显示


实例59  74LS138选通8LED数码管动态显示


实例60  74LS595串行选通8LED数码管动态显示


实例61  控制8LED数码管滚动显示


实例62  8255A扩展8LED数码管动态显示


实例63  8155扩展8LED数码管动态显示


实例64  MAX7221控制8LED数码管动态显示


5.3  LED点阵显示


实例65  LED5×7点阵显示字符


实例66  LED 16×16点阵显示汉字


5.4  LCD显示屏显示


实例67  LCD1602显示屏显示字符


实例68  LCD12864显示屏显示汉字



以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。











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