LED驱动问题
 
					
				 
					
				 
					
				
/*01数码管的显示,查表显示*/
#include <reg51.h>
#include <intrins.h>
void display(unsigned char *lp,unsigned char lc);//数字的显示函数;lp为指向数组的地址,lc为显示的个数
void delay();//延时子函数,5个空指令
code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};
   //共阴数码管 0-9 - 空 表
unsigned char l_tmpdate[8]={1,2,3,4,5,6,7,8};//定义数组变量,并赋值1,2,3,4,5,6,7,8,就是本程序显示的八个数
           //可以改成别的数字做相应显示
void main(void)  
{
 unsigned char i=0;
 while(1){
  display(l_tmpdate,8); //用数字显示函数显示八个数字
  
 }
}
void display(unsigned char *lp,unsigned char lc)//显示
{
 unsigned char i;  //定义变量
 P2=0;     //端口2为输出
 P1=P1&0xF8;    //将P1口的前3位输出0,对应138译门输入脚,全0为第一位数码管
 for(i=0;i<lc;i++){  //循环显示
 P2=table[lp[i]];  //查表法得到要显示数字的数码段
 delay();    //延时5个空指令 
 if(i==7)    //检测显示完8位否,完成直接退出,不让P1口再加1,否则进位影响到第四位数据
  break;
 P2=0;     //清0端口,准备显示下位
 P1++;     //下一位数码管
 }
}
void delay(void)        //空5个指令
{
 _nop_();_nop_();_nop_();_nop_();_nop_();
}
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |


 
			
			
			
						
			 
					
				 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

