请指点_点阵屏_定时器_NPN
时间:10-02
整理:3721RD
点击:
我想要点阵屏亮一条线,但是没有亮,请问为什么?
- /****************************************************************
- 元器件:51单片机、LED、8*8点阵
- 目标: 定时器控制8*8点阵显示图形
- ****************************************************************/
- #include<reg52.h>
- sbit led = P0^0;
- unsigned int x=0;
- /***刷屏处理******************************************************/
- void sp(){
- static unsigned int i =0;
- P0= 0xff;
- P3 = 0x01;
- switch(i){
- case 0:
- P0 = 0xfe;break;//1111 1110
- case 1:
- P0 = 0xfd;break;//1111 1101
- case 2:
- P0 = 0xfb;break;//1111 1011
- case 3:
- P0 = 0xf7;break;//1111 0111
- case 4:
- P0 = 0xef;break;//1110 1111
- case 5:
- P0 = 0xdf;break;//1101 1111
- case 6:
- P0 = 0xbf;break;//1011 1111
- case 7:
- P0 = 0x7f;break;//0111 1111
- default:break;
- }
- if(7 == i++){
- i=0;
- }
- }
- /***中断处理T0****************************************************/
- void dzq_sx_dz(void) interrupt 1{//刷新点阵
- TH0 = (8192 - 2000)>>5; //取高8 位
- TL0 = (8192 - 2000)&0x1F;//取低5位
- sp();
- }
- /***定时器初始****************************************************/
- void dsq_init(void){
- TMOD = 0x00;//定时器模式1 13位
- TH0 = (8192 - 2000)>>5; //取高8位
- TL0 = (8192 - 2000)&0x1F;//取低5位
- ET0 = 1;//中断 外部定时器0 开
- EA = 1;//全局中断 开
- TR0 = 1;//定时器0 开
- }
- /***主程序******************************************************/
- void main(void){
- dsq_init();
- while(1);
- }