自学笔记
u8是unsigned char,u16是unsigned short,u32是unsigned long。
U8、u16和u32都是C语言中的数据类型,分别表示8位、16位和32位长度的数据类型。一个字节是8位,所以u8是1字节,u16是2字节,u32是4字节。
74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。
工作电压范围:2.0V~6.0V
锁存器的工作原理:当OE为高时,输出为高阻态,
即锁存器不能正常工作。当OE为低且LE为高时,输出Q将随输入D而变,此时锁存器
工作在直通模式下。当OE为低且LE为低时,输出Q将不随输入D而变,此时锁存器工
作在锁存模式下,输出Q保持上一时刻数值不变。
电路中采用两片74HC573来驱动两个4位8段数码管,一片用来传输数码管的段码,另一片用来控制数码管的位选
74hc573-1是控制段选的,74hc573-2是控制位选的,P2.6和P2.7端口是锁存使能位,置
高电平时锁存器透明(即输入和输出相同),置低电平时锁存
采用了锁存器芯片之后,只需要10个引脚就可以实现数码管的控制(LE高电平时写入数据之后拉低)
TX-1C开发板的数码管位共阴极。多为一体的数码管,内部的公共端是独立的,而负责显示什么数字的断线是全部连在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮,而连在一起的段线可以能控制这位数码管能亮出什么数字。公共端叫作位选线,连在一起的段线叫作段选线。有了这两根线,就能通过单片机控制任意的数码管显示任意的数字。
数码管静态显示
#include<reg52.h>
sbit dula=P2^6; // 申明U1锁存器的锁存端
sbit wela=P2^7; // 申明U2锁存器的锁存端
void main()
{
wela=1; //打开U2锁存器
P0=0xfe; //送入位选信号
wela=0; //关闭U2锁存器
dula=1; //打开U1锁存器
P0=0x7f; //送入段选信号
dula=0; //关闭U1锁存器
}
以
第一个数码管显示1,时间为0.5秒,然后关闭它。第二个数码管显示2,时间为0.5秒………………
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table_1[]={ 0x1, 0x2, 0x4, 0x8, 0x10, 0x20 }; //位选信号
uchar code table_2[]={ 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; //段选信号
void delay(uint); //延时函数
uint h;
void main()
{
while(1)
{ for( h=1; h<=6; h++)
{ dula=1; //打开段选
P0=table_2[h]; // 送入段选信号
dula=0; // 关闭段选
P0=0xff; // 消影语句,每次送入段选信号后,P0口仍然保留着上次的段选数据,若不加 P0=0xff; 在执行打开位选锁存器命令后,P0口
段选数据会立即加在数码管上,,接下来才是再次通过P0口给位选锁存器送入位选数据。这个过程很短暂,但我们仍能看见 数码管显示混乱的现象。加上消影语句后就能避免这样的状况发生
wela=1; // 打开位选
P0=table_2[h]; //送入位选信号
wela=0; // 关闭位选
delay(500);
}
}
}
void delay( uint xms) // 延时函数 (在下篇会和锁存器一并作出叙述)
{
uint i,j;
for( i=mxs; i>0; i--)
for( j=110; j>0; j--);
}