永发信息网

利用4个74hc164驱动4个8位数码管,位段码的问题!

答案:1  悬赏:20  手机版
解决时间 2021-11-11 21:08
利用4个74hc164驱动4个8位数码管,位段码的问题!
最佳答案
我之前写的164扩展程序,参考一下吧!应该可以解决你问题。

其实你只要用到一片164就够了,作动态扫描,下面程序是两个数码管动态扫描,164并行输出口再接一片功率驱动芯片,如TD62083。

程序如下:




//-------------------------------------库函数声明,管脚定义------------
#include
#define uchar unsigned char
sbit simuseri_CLK=P1^1; //用P1^1模拟串口时钟
sbit simuseri_DATA=P1^0; //用P1^0模拟串口数据

sbit a0=ACC^0;
unsigned char code dis_code[11]={0x28,0x7E,0xa2,0x62, //查表显示 0, 1、、9
0x74,0x61,0x21,0x7A,0x20,0x60, 0x01};

uchar numer,temp;
uchar ge,shi;
//----------------------------------------------------------------------------
// 函数名称:out_simuseri
// 输入参数:data_buf
// 输出参数:无
// 功能说明:8位同步移位寄存器,将data_buf的数据逐位输出到simuseri_DATA
//----------------------------------------------------------------------------
void out_simuseri(uchar data_buf)
{
uchar i;
i=8;
ACC=data_buf;
do
{
simuseri_CLK=0;
simuseri_DATA=a0;
simuseri_CLK=1;
ACC=ACC>>1;
}
while(--i!=0);
}


void delay(uchar ms) //延时程序
{
uchar i;
while(ms--)
{
for (i=0;i<125;i++);
}}


void main()
{
uchar m;
while(1)
{
for(temp=0;temp<99;temp++)
{
ge=temp/10;
shi=temp%10;
for(m=0;m<20;m++) //显示频率200ms加1次
{
P2_0=0; //位段码
numer=dis_code[ge];
out_simuseri(numer); //个位移位显示
delay(5);
P2_0=1;

P2_1=0;
numer=dis_code[shi]; //十位移位
out_simuseri(numer);
delay(5);
P2_1=1;
}
m=0;
}
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
发125内径h8的公差是多少
作文一缕馨香暖人心400字
这种裂纹怎么修复
布政使一职始创于北宋…答案为什么为A
婉婷美发地址在什么地方,想过去办事,
CPU双核速龙4000+ 主板ATI昂达690E 内存威刚1
明元道宝 价格是多少???有没有收藏价值?
6/7减5/8加1/8加1/14加1/
11题c跟d选项有什么不同?
中国99G主战坦克和印度T90S性能怎么样?
秀发飞扬地址有知道的么?有点事想过去!
求――海贼王动画830里面,欧文和大福从卡二
天津市市容环境宣传教育培训中心地址在什么地
1974年农历6月2o出生的女人五行属什么命运好
7500W的电热水器,要用多少平方电线,多少A空
推荐资讯
兴隆保真手机广场(鲅鱼圈红运商业街)地址在哪
exo参加过的中国综艺
数学判断下各题中‘条件’是“结论”的什么条
PuTTY是通过什么协议和Linux服务器连接的?简
winccexplorr做一个水位开关画面步骤
忝在相知之列是什么意思?
濡女的形象
如何评价台湾雄三导弹误射自己渔船后,台湾网
小型流动售货车哪个牌子的好
从东环路到长春市华岗车管所坐几路公交车
linuxmint cinnamon 18可以修改用户名吗
ic反应器和egsb反应器的相同点和不同点,各自
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?