专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
PIC单片机
动态扫描数码管亮度不够
2020-02-10 08:45
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
17809
4
4
如电路图接法:
采用共阴极接法驱动8位数码管,软件延时(1-3ms)动态扫描,但是亮度不够
增加延时亮度也不够,并且闪烁
请教可以用什么方法驱动?
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
zhq448
2020-02-10 14:07
//A口为显示位输出,D口为断输出,B口为键盘输出。TEMO为20M秒中断显示兼扫描键盘
//C0为行程开光到为检测。C1为吸盘输出,C2为料电机输出。C3为报警音。C4为主电机
//C5为步进电机输出。C6为步进电机方向。C7待用。
//原理为复位后等待执行键。快速到达C0行程开光
#include<pic.h>
#include <pic1687x.h>
__CONFIG(0x1832);
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
const char TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90};
char LED[6]={0,0,0,0,0,0,}; //显示BCD码
const char jian[]=
{0X77,0Xb7,0Xd7,0Xe7,0X7b,0Xbb,0Xdb,0Xeb,0X7d,0Xbd,0Xdd,0Xed,0X7e,0Xbe,0Xde,0Xee};
int BCD1(int); //BCD吗转化程序。
void init(); //申明I/O口初始化函数
int delay(int); //申明延时函数
void interrupt ISR(void); //中断
void jaye(); //键盘翻译程序
char xianshi, temp1,VA,A,B,C; //VA为A口显示断位变量
int temp;
//---------------------------------------
//---------------------------------------
//I/O口初始化函数
void init()
{
ADCON1=7; //设置A口为普通I/O口
TRISA=0; //设置A口为输出
TRISD=0; //设置D口为输出
TRISC=0;
TRISB=0XF0;
OPTION=3; //设置TMROD 定时器为1/16
PORTC=0;
PORTB=0XF0; //B口高入低出 上拉电阻有效
INTCON=0XA0; //开放全局。TMR0,B口中断。
TMR0=0XE; //启动TMR0
PORTD=0XFF;
PORTA=0XFF;
VA=1;
}
//--------------------------------------中断子程序
void interrupt ISR(void)
{
T0IF=0; //清中断标志
PORTD=0XFF;
PORTA=~VA;
PORTD=TABLE[LED[temp1]];
VA=VA<<1;
temp1++;
if(VA==0X40) VA=1 ,temp1=0;
if(PORTB==0XF0) xianshi=0,RC4=0; // 检测B口有键按下否。
else xianshi++,RC4=1;
TMR0=0X10; //启动TMR0
}
//*******************************
//延时函数
int delay(int j)
{
int i;
for(i=0;i<j;i++);
}
//========================BCD吗转化程序
int BCD1(int j)
{
LED[1]=j/10000;
LED[2]=(j/1000)%10;
LED[3]=(j/100)%10;
LED[4]=(j/10)%10;
LED[5]=j%10;
}
void jaye() //==============键盘翻译函数
{ char j,i;
i=(PORTB&0XF0);
TRISB=0X0F;
PORTB=0X0F;
delay(5);
i=(i|(PORTB&0XF));
for(j=0;(j<16)&&(i!=jian[j]);j++);
temp=j;
TRISB=0XF0;
PORTB=0XF0;
}
//主函数====================
main(void)
{ init(); //调用I/O口初始化函数
while(RC2==0)
{
PORTC ^= (1<<RC7);
delay(6000);
if(xianshi>3) jaye();
BCD1(temp);
}
}
看看我的程序肯定够亮。看的我眼睛吃不消
加载中...
查看其它4个回答
一周热门
更多
>
相关问题
PIC单片机不同的IO口驱动74HC573驱动共阴极的数码管,有的段不亮
1 个回答
一种简单精确的pic延时方法
21 个回答
谁熟悉PIC的产品发布时间的,帮看看PIC18F47K40啥版本IDE能开发
12 个回答
求AN1078对应的源代码下载地址
5 个回答
PIC单片机应用技巧
4 个回答
相关文章
一种用PIC单片机主时钟驱动的老式挂钟
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
PIC单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
//C0为行程开光到为检测。C1为吸盘输出,C2为料电机输出。C3为报警音。C4为主电机
//C5为步进电机输出。C6为步进电机方向。C7待用。
//原理为复位后等待执行键。快速到达C0行程开光
#include<pic.h>
#include <pic1687x.h>
__CONFIG(0x1832);
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
const char TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90};
char LED[6]={0,0,0,0,0,0,}; //显示BCD码
const char jian[]=
{0X77,0Xb7,0Xd7,0Xe7,0X7b,0Xbb,0Xdb,0Xeb,0X7d,0Xbd,0Xdd,0Xed,0X7e,0Xbe,0Xde,0Xee};
int BCD1(int); //BCD吗转化程序。
void init(); //申明I/O口初始化函数
int delay(int); //申明延时函数
void interrupt ISR(void); //中断
void jaye(); //键盘翻译程序
char xianshi, temp1,VA,A,B,C; //VA为A口显示断位变量
int temp;
//---------------------------------------
//---------------------------------------
//I/O口初始化函数
void init()
{
ADCON1=7; //设置A口为普通I/O口
TRISA=0; //设置A口为输出
TRISD=0; //设置D口为输出
TRISC=0;
TRISB=0XF0;
OPTION=3; //设置TMROD 定时器为1/16
PORTC=0;
PORTB=0XF0; //B口高入低出 上拉电阻有效
INTCON=0XA0; //开放全局。TMR0,B口中断。
TMR0=0XE; //启动TMR0
PORTD=0XFF;
PORTA=0XFF;
VA=1;
}
//--------------------------------------中断子程序
void interrupt ISR(void)
{
T0IF=0; //清中断标志
PORTD=0XFF;
PORTA=~VA;
PORTD=TABLE[LED[temp1]];
VA=VA<<1;
temp1++;
if(VA==0X40) VA=1 ,temp1=0;
if(PORTB==0XF0) xianshi=0,RC4=0; // 检测B口有键按下否。
else xianshi++,RC4=1;
TMR0=0X10; //启动TMR0
}
//*******************************
//延时函数
int delay(int j)
{
int i;
for(i=0;i<j;i++);
}
//========================BCD吗转化程序
int BCD1(int j)
{
LED[1]=j/10000;
LED[2]=(j/1000)%10;
LED[3]=(j/100)%10;
LED[4]=(j/10)%10;
LED[5]=j%10;
}
void jaye() //==============键盘翻译函数
{ char j,i;
i=(PORTB&0XF0);
TRISB=0X0F;
PORTB=0X0F;
delay(5);
i=(i|(PORTB&0XF));
for(j=0;(j<16)&&(i!=jian[j]);j++);
temp=j;
TRISB=0XF0;
PORTB=0XF0;
}
//主函数====================
main(void)
{ init(); //调用I/O口初始化函数
while(RC2==0)
{
PORTC ^= (1<<RC7);
delay(6000);
if(xianshi>3) jaye();
BCD1(temp);
}
}
看看我的程序肯定够亮。看的我眼睛吃不消
一周热门 更多>