数码管的静态显示实验报告
Ø 数码管的原理
l 数码管的构造
数码管实际是由LED构成用高低电平控制。
有七段数码管和八段数码管之分,也有共阴和共阳之分。
七段数码管是没有第八段即小数点这一段则八段数码管有小数点。
共阴数码管则是把所有阴极相连,共阳则是把所有阳极相连。
此为原理图。
l 数码管的逻辑电平
数码管的显示是用CPU控制的CPU共给数码管的高低电平决定了它段位的亮灭,
而51单片机中运用正逻辑即高电平为1,低电平为0.。
Ø 数码管的静态显示具体操作
一
打开原理图
1.用P0的8个端口控制JP3的端口
2.写出共阴极字段码(共阳极直接去反就行,大部分都是用共阴极数码管)
二
按照接线图在单片机上接线
三
在Keil中新建项目并加入main.c
在main.c中写程序
如下:
/**************************************************************************************
*
* 静态数码管显示实验
***************************************************************************************/
#include "reg52.h" //´定义单片机一些特殊功能
typedef unsigned int u16; //对数据类型定义
typedef unsigned char u8;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
void delay(u16 i)//延时函数
{
while(i--);
}
/*******************************************************************************
* 函数名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
u16 i;
while(1)
{
for(i = 0; i <= 15 ; i++)//循环显示0~F
{
P0=~smgduan;//对共阴极字段码去反
delay(60000);//等待1S
P0=0x00;
}
for(i = 15; i >= 0; i--)//循环显示F~0
{
P0=~smgduan[ i];
delay(60000);
P0=0x00;
}
}
}
Ø KEIL开发环境的调试
CPU中I/O口的高低电平可以通过KEIL的开发环境来调试。
可以具体的观察高低电平。
|