标题:
1寸的数码管不显示
[打印本页]
作者:
工控漂泊
时间:
2018-12-31 17:04
标题:
1寸的数码管不显示
朋友的一台智能数显控制仪,说不显示,让我给维修,打开看了测量+5V供电正常就是不显示,请大佬给指点一二。
数码管2.jpg
(102.14 KB, 下载次数: 130)
下载附件
2018-12-31 17:03 上传
数码管
数码管3.jpg
(61.48 KB, 下载次数: 141)
下载附件
2018-12-31 17:03 上传
数码管1
作者:
村风
时间:
2018-12-31 23:00
这个有移位寄存器,你不送数据他怎么会显示呢
作者:
工控漂泊
时间:
2019-1-1 11:50
谢谢大佬提醒。我犯错误了。
作者:
angmall
时间:
2019-1-1 16:54
我给你来个程序试试
/*
51单片机74HC164串口控制数码管显示
一般数码管需要接7个脚才能显示,如果用单片机本身的I/O口,虽然可以但是浪费宝贵的i/O口资源。本例用移位寄存器74HC164作为数码管驱动进行控制。
74HC164特性 是一种8位串转并口的控制芯片,用于数码管和液晶显示等.
工作电压2--6V
管脚定义:
1) A,B管脚:与门数据输入引脚。
2)QA---QH 数据并口输出引脚
3) CLR 低电平时,数据清零,不能输入
4) CLK 数据输入时钟,上升沿读取串口数据
本51单片机用的是12MHZ晶振,每条指令最小执行时间1uS》》1ns ,可以根据时序图随便使用.
原理图:
*/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//74HC164 MR Pin9 接5V
sbit CLK=P1^0; // 低电平到高电平边沿触发 接74HC164 CLK
sbit MOSI=P1^1; // 数据输入 接74HC164 A、B,
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; //共阴数码管
unsigned char DS_data[6];
/*****************************************************
函数功能:数码管扫描延时子函数
函数功能:延时1ms
***************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
void separateData(unsigned long dat) // dat为6位数
{
DS_data[0]=dat%10;
DS_data[1]=dat/10%10;
DS_data[2]=dat/100%10;
DS_data[3]=dat/1000%10;
DS_data[4]=dat/10000%10;
DS_data[5]=dat/100000%10;
}
void write_164(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
CLK=0;
if(dat&0x80) MOSI=1;
else MOSI=0;
CLK=1;
dat<<=1;
}
}
void display()
{
unsigned char i;
for(i=0;i<6;i++)
{
write_164(Tab[DS_data]);
P2=0x3f&(~(0x01<<i)); //数码管位 共阴低电平选中seg1对应P2.5 seg6对应P2.0
delay1ms();
P2=0xff; //数码管灭
}
}
main()
{
separateData(654321);
while(1)
{
display();
}
}
复制代码
作者:
工控漂泊
时间:
2019-1-2 08:35
angmall 收到,谢谢大佬。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1