- /***************代码注释***************/
- /*这个代码的实现需要74H138模块的控制才能实现,
- 关于模块的资料如下:
- 74HC138D 是一种三通道输入、八通道输出译码器,主要应用于消费类电子产
- 品。
- 主要特性
- ①采用 CMOS 工艺
- ②低功耗
- ③工作电压:3.0V-5.0V
- ④封装形式:SOP16
- 管脚功能定义说明
- 从上面的管脚功能定义说明及真值表可以知道该芯片使用方法非常简单,给
- E1、E2 使能管脚低电平,E3 管脚为高电平,至于哪个管脚输出有效电平(低电
- 平),要看 A0,A1,A2 输入管脚的电平状态。如果 A0,A1,A2 都为低电平,则
- Y0 输出有效电平(低电平),其他管脚均输出高电平。如果 A0 为高电平,A1,
- A2 都为低电平,则 Y1 输出有效电平(低电平),其他管脚均输出高电平。其他
- 几种输出大家可以对照真值表查看。如果 E1、E2 使能管脚任意一个为高电平或
- 者 E3 为低电平,不论输入是什么,输出都为高电平。
- 这里给大家总结一个方法:A0、A1、A2 输入就相当于 3 位 2 进制数,A0 是
- 低位,A1 是次高位,A2 是高位。而 Y0-Y7 具体哪一个输出有效电平,就看输入
- 二进制对应的十进制数值。比如输入是 101(A2,A1,A0),其对应的十进制数
- 是 5,所以 Y5 输出有效电平(低电平)。
- ***************************/
- #include "reg52.h" //此文件中定义了单片机的一些特殊功能
- #define uint unsigned int
- #define uchar unsigned char
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- uchar code smgduan[17]={0x06,0x4f,0x06,0x66,0x40,0x6d,0x5b,0x3f,
- 0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e};// 显 示0~F 的值
- void delay(uint i)
- {
- while(i--);
- }
- void DigDisplay()
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- switch(i) //位选,选择点亮的数码管,
- {
- case(0):
- LSA=0;LSB=0;LSC=0; break;//显示第 0 位
- case(1):
- LSA=1;LSB=0;LSC=0; break;//显示第 1 位
- case(2):
- LSA=0;LSB=1;LSC=0; break;//显示第 2 位
- case(3):
- LSA=1;LSB=1;LSC=0; break;//显示第 3 位
- case(4):
- LSA=0;LSB=0;LSC=1; break;//显示第 4 位
- case(5):
- LSA=1;LSB=0;LSC=1; break;//显示第 5 位
- case(6):
- LSA=0;LSB=1;LSC=1; break;//显示第 6 位
- case(7):
- LSA=1;LSB=1;LSC=1; break;//显示第 7 位
- }
- P0=smgduan[i];//发送段码
- delay(100); //间隔一段时间扫描
- P0=0x00;//消隐
- }
- }
- void main()
- {
- while(1)
- {
- DigDisplay(); //数码管显示函数
- }
- }
复制代码 |