微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请指点_点阵屏_定时器_NPN

请指点_点阵屏_定时器_NPN

时间:10-02 整理:3721RD 点击:
我想要点阵屏亮一条线,但是没有亮,请问为什么?

  1. /****************************************************************
  2. 元器件:51单片机、LED、8*8点阵
  3. 目标:        定时器控制8*8点阵显示图形
  4. ****************************************************************/
  5. #include<reg52.h>
  6. sbit led = P0^0;
  7. unsigned int x=0;
  8. /***刷屏处理******************************************************/
  9. void sp(){         
  10.         static unsigned int i =0;  
  11.         P0= 0xff;
  12.         P3 = 0x01;
  13.         switch(i){                
  14.                 case 0:
  15.                         P0 = 0xfe;break;//1111 1110
  16.                 case 1:
  17.                         P0 = 0xfd;break;//1111 1101
  18.                 case 2:
  19.                         P0 = 0xfb;break;//1111 1011
  20.                 case 3:
  21.                         P0 = 0xf7;break;//1111 0111
  22.                 case 4:
  23.                         P0 = 0xef;break;//1110 1111
  24.                 case 5:
  25.                         P0 = 0xdf;break;//1101 1111
  26.                 case 6:
  27.                         P0 = 0xbf;break;//1011 1111
  28.                 case 7:
  29.                         P0 = 0x7f;break;//0111 1111
  30.                 default:break;
  31.         }                                  
  32.         if(7 == i++){
  33.                 i=0;
  34.         }                                  
  35. }
  36. /***中断处理T0****************************************************/
  37. void dzq_sx_dz(void) interrupt 1{//刷新点阵
  38.         TH0 = (8192 - 2000)>>5;  //取高8 位
  39.         TL0 = (8192 - 2000)&0x1F;//取低5位                
  40.         sp();                                                    
  41. }
  42. /***定时器初始****************************************************/
  43. void dsq_init(void){
  44.         TMOD = 0x00;//定时器模式1 13位
  45.         TH0 = (8192 - 2000)>>5;  //取高8位
  46.         TL0 = (8192 - 2000)&0x1F;//取低5位
  47.         ET0 = 1;//中断 外部定时器0 开
  48.         EA  = 1;//全局中断 开
  49.         TR0 = 1;//定时器0 开
  50. }
  51. /***主程序******************************************************/
  52. void main(void){
  53.         dsq_init();
  54.         while(1);               
  55. }

复制代码


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top