北京网站搭建服务,怎么选一个适合自己的网站,如何查看百度蜘蛛来过网站,做it的中国企业网站1、项目分析
使用数码管显示指定的字符、数字和符号。
2、技术准备
1、显示器及其接口
单片机系统中常用的显示器有#xff1a; 发光二极管LED#xff08;Light Emitting Diode#xff09;显示器、液晶LCD#xff08;Liquid Crystal Display#xff09;显示器、CRT显…1、项目分析
使用数码管显示指定的字符、数字和符号。
2、技术准备
1、显示器及其接口
单片机系统中常用的显示器有 发光二极管LEDLight Emitting Diode显示器、液晶LCDLiquid Crystal Display显示器、CRT显示器等。LED、LCD显示器有两种显示结构 段显示7段、米字型等点阵显示5×8、8×8点阵等
2、数码管实物 数码管是一种半导体发光器件其基本单元是发光二极管。
3、数码管特点 可显示内容 数字、小数点0-9和部分英文字符A、C、E、F、L、符号.。 特点 自发光、亮度高特别适合环境亮度低的场合使用。 牢固不怕冲击。 4、数码管结构与原理 数码管结构 LED显示器数码管系发光器件的一种。常用的LED发光器件有两类数码管和点阵。数码管内部由七个条形发光二极管和一个小圆点发光二极管组成根据各管的亮暗组合成字符。根据内部发光二极管的接线形式可分为共阴极和共阳极两种。使用时共阴极数码管公共端接地共阳极数码管公共端接电源。每段发光二极管需510mA的驱动电流才能正常发光一般需加限流电阻控制电流的大小。 数码管原理 LED数码管的ag七个发光二极管。加正电压的发光加零电压的不能发光不同亮暗的组合就能形成不同的字型这种组合称为字型码。共阳极和共阴极的字型码是不同的。 5、数码管驱动电路 要驱动1个四位数码管常见的有以下几种数码管驱动电路本电路是使用共阴极数码管 使用12个IO口P2.4-P2.7驱动位选IO口直接驱动位选P0驱动段选IO口直接驱动段选 6、数码管显示分析 LED数码管的结构共阳与共阴 显示设置 设置位选设置 P2.4 - P2.7 对应位为高电平即可选择第1 ~ 4 位数码管工作设置段选设置 P0.0 - P0.7 对应位为高电平即可控制显示的字符、数字内容 3、项目实施
实验1 第1位数码管显示字符b
/************************************
*实验名数码管静态显示
*实验效果第一个数码管显示字符“b”
************************************/分析
方式1单独设置
c
#include reg52.h#define par P0sbit pos1 P2^4;
sbit pos2 P2^5;
sbit pos3 P2^6;
sbit pos4 P2^7;void main()
{pos1 1;pos2 0;pos3 0;pos4 0;par 0x7C;while (1);
}方式2整体设置
c
#include reg52.h#define par P0
#define pos P2 void main()
{pos 0x18;par 0x7C;while (1);
}实验2 4位数码管显示数值12.34 实验需求 让四位数码管显示 12.34 实验分析 第1位数码管显示 1第2位数码管显示 2. 第3位数码管显示 3第4位数码管显示 4
方式1逐位设置 #include reg52.hvoid delay(unsigned int t);void main3(){while(1){// 第1个数码管显示1P2 0x18;P0 0x06;delay(100);// 第2个数码管显示2.P2 0x28;P0 0xdb;delay(100);// 第3个数码管显示3P2 0x48;P0 0x4f;delay(100);// 第4个数码管显示4P2 0x88;P0 0x66;delay(100);}}// 延迟函数void delay(unsigned int t){while(t--);}方式2遍历数组设置
c
#include reg52.h// 定义位选P2 表示设置数码管的位数
#define wei P2// 定义段选P0 表示设置要显示的内容
#define duan P0// 定义数组分别存储位选或段选的值
unsigned int wValue[] {0x18,0x28,0x48,0x88};
unsigned int dValue[] {0x06,0xdb,0x4f,0x66};void delays(unsigned int i);void main()
{ unsigned int idx;while(1){for(idx 0; idx4; idx){// 第idx位显示P2 wValue[idx];P0 dValue[idx];delays(50);}}
}void delays(unsigned int i)
{while(--i);
}方式3左移数组遍历
c
#include reg52.hvoid delays(unsigned int t);unsigned int dValue[] {0x06, 0xdb, 0x4f, 0x66};void main()
{unsigned int idx;while(1){for(idx0; idx4; idx){// 第idx个数码管显示1 2. 3 4P2 0x10 idx | 0x08;P0 dValue[idx];delays(100);}}
}// 延迟函数
void delays(unsigned int t)
{while(t--);
}说明 在位选切换时需要增加扫描延时延迟时间太长会闪烁太短则会造成重影。
实验3 选择对应的位显示内容 需求 选择指定的位显示指定的内容 分析 实现 #include reg52.h#define uint unsigned int// 定义位选P2 表示设置数码管的位数#define pos P2// 定义段选P0 表示设置要显示的内容#define par P0// 定义显示字符0-9 C D E F Luint parValue[] {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x39, 0x79, 0x71};// 函数声明void delay_s(unsigned int i);void smgShow(uint postion, uint letter);void main(){uint idx;while(1){// 函数测试for(idx1; idx17; idx){smgShow(4, idx);delay_s(90000);}}}/*** 指定对应位的数码管显示对应的内容** param postion 第几位数码管* param letter 要显示的字符内容** return 无*/void smgShow(uint postion, uint letter){if((postion 0 postion 5) (letter 0 letter 14)){switch(postion){case 1:pos 0x18;par parValue[letter-1];break;case 2:pos 0x28;par parValue[letter-1];break;case 3:pos 0x48;par parValue[letter-1];break;case 4:pos 0x88;par parValue[letter-1];break;}}}/*** 延迟函数让CPU重复执行从指定的值一直减到0** param i 初值** return 无*/void delay_s(uint i){while(--i);}