基于51单片机和74LS47简单的数码管静态显示,用51单片机连接四个74LS47模块,每个模块连接一个数码管。调了很长时间,调出来了,很不容易,但是理解了就挺简单。对自认为有很大帮助。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
具体程序如下:
- //数码管动态显示
- //74LS164(移位寄存器)
- #include<reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit DAT=P1^6; //数据输入
- sbit CLK=P1^7; //时钟使能
- unsigned char disp[4];
- unsigned code dtab[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
- //共阳极接法0~9段码表(上)
- void disp_164() //一位显示164移位输出函数
- {
- uchar x,i,j;
- for(i=0;i<4;i++) //循环4次(4个数码管)
- {
- x=dtab[disp[i]]; //查表取段码
- for(j=0;j<8;j++)
- {
- if(x&0x01) //先移出低位
- DAT=1;
- else DAT=0;
- CLK=1; //产生上升沿
- x>>=1;
- CLK=0;
- }
- }
- }
- void main()
- {
- disp[0]=8;
- disp[1]=7;
- disp[2]=6;
- disp[3]=5;
- disp_164();
- while(1);
- }
复制代码
全部资料51hei下载地址:
例6-10数码管.zip
(47.85 KB, 下载次数: 20)
|