有关师德建设的网站,wordpress wap,手机建设网站公司,深圳市官方网站实现目标
1、掌握二进制与十六进制之间的转换
2、掌握单片机寄存器与二进制、十六进制之间的转换
3、掌握单片机驱动跑马灯、流水灯的原理 一、二进制与十六进制之间的转换
1、二进制
二进制#xff08;binary#xff09;#xff0c; 是在数学和数字电路中以2为基数的…实现目标
1、掌握二进制与十六进制之间的转换
2、掌握单片机寄存器与二进制、十六进制之间的转换
3、掌握单片机驱动跑马灯、流水灯的原理 一、二进制与十六进制之间的转换
1、二进制
二进制binary 是在数学和数字电路中以2为基数的记数系统是以2为基数代表系统的二进位制。这一系统中通常用两个不同的符号0代表零和1代表一来表示 。
2、十六进制
十六进制简写为hex或下标16是一种基数为16的计数系统是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、Fa、b、c、d、e、f表示其中:A~F表示10~15这些称作十六进制数字。单片机开发中用0x或0X 表示。
3.常用四种进制对照表 4.二进制转十六进制的转换方法
对一个多位二进制数可先取出其后四位转为一位十六进制数。对剩下的部分以同样方法进行转换直到该串只剩下最后四位就转换完毕。若是最后串的长度不足四位且不为零时在串的前面加‘0’补齐位数再进行转换如图所示 实例1
二进制 0101 0011
十六进制 5 3
如上图二进制0101转换到十六进制后为5为什么是5呢这个时候就用到8421法则了详细如下 0 1 0 1 0 0 1 1 x x x x x x x x 8 4 2 1 8 4 2 1 0 4 0 1 0 0 2 1 0401 5 0021 3 注图中的”x“代表乘法的乘号 由上图计算可得知 二进制0101转换到十六进制后为5二进制0011转换到十六进制后为3 额外的知识点四个二进制的数 一位的十六进制的数 5.十六进制转二进制的转换方法
十六进制 B 7
二进制 1011 0111
用到8421法则详细如下 B 7 11 7 821 4 21 1 0 1 1 0 1 1 1 由上图计算可得知 十六进制B转换二进制 1011十六进制7转换二进制0111 额外的知识点 一位的十六进制的数 四个二进制的数 二、单片机寄存器与二进制十六进制的关系
1.单片机P2寄存器与管脚
P2寄存器 P27P26 P25P24 P23P22 P21P20 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 2.P2操作实例
由上面原理图可知单片机管脚输出低电平时LED点亮。现在要让LED5-LED8 亮LED1-LED4灭可将要点亮的管脚置0低电平灭的管脚置1高电平如下表格所示 P27P26 P25P24 P23P22 P21P2000001111 P2 0x0f; // 0000 1111 0X0f LED5-LED8 亮LED1-LED4灭 3.跑马灯实例
3.1 管脚、寄存器、LED状态对照表
跑马灯原理分析LED灯LED8LED7LED6LED5LED4LED3LED2LED1P2寄存器值对应管脚 P27P26 P25P24 P23P22 P21P20灯状态1111111100xfe延时500ms灯状态2111111010xfd延时500ms灯状态3111110110xfb延时500ms灯状态4111101110xf7延时500ms灯状态5111011110xef延时500ms灯状态6110111110xdf延时500ms灯状态7101111110xbf延时500ms灯状态8011111110x7f延时500ms灯状态9111111110xff延时500ms 3.2 对应程序
1延时函数软件自动生成 2跑马灯操作程序 while(1) { P2 0xfe; //LED1亮 Delay500ms(); P2 0xfd; //LED2亮 Delay500ms(); P2 0xfb; //LED3亮 Delay500ms(); P2 0xf7; //LED4亮 Delay500ms(); P2 0xef; //LED5亮 Delay500ms(); P2 0xdf; //LED6亮 Delay500ms(); P2 0xbf; //LED7亮 Delay500ms(); P2 0x7f; //LED8亮 Delay500ms(); P2 0xff; //关闭8个LED Delay500ms(); } 3完整代码 #include REGX52.Hsbit LED1 P2^0;
sbit LED2 P2^1;
sbit LED3 P2^2;
sbit LED4 P2^3;
sbit LED5 P2^4;
sbit LED6 P2^5;
sbit LED7 P2^6;
sbit LED8 P2^7;void Delay500ms() //11.0592MHz
{unsigned char i, j, k;i 4;j 129;k 119;do{do{while (--k);} while (--j);} while (--i);
}void main(){ while(1){P2 0xfe; //LED1亮Delay500ms(); P2 0xfd; //LED2亮-Delay500ms(); P2 0xfb; //LED3亮Delay500ms(); P2 0xf7; //LED4亮Delay500ms(); P2 0xef; //LED5亮Delay500ms(); P2 0xdf; //LED6亮Delay500ms(); P2 0xbf; //LED7亮Delay500ms(); P2 0x7f; //LED8亮Delay500ms(); P2 0xff; //关闭8个LEDDelay500ms(); }}
4.流水灯实例
4.1 管脚、寄存器、LED状态对照表 流水灯原理分析LED灯LED8LED7LED6LED5LED4LED3LED2LED1P2寄存器值对应管脚 P27P26 P25P24 P23P22 P21P20灯状态1111111100xfe延时500ms灯状态2111111000xfc延时500ms灯状态3111110000xf8延时500ms灯状态4111100000xf0延时500ms灯状态5111000000xe0延时500ms灯状态6110000000xc0延时500ms灯状态7100000000x80延时500ms灯状态8000000000x00延时500ms灯状态9111111110xff延时500ms
4.2 流水灯程序
#include REGX52.Hsbit LED1 P2^0;
sbit LED2 P2^1;
sbit LED3 P2^2;
sbit LED4 P2^3;
sbit LED5 P2^4;
sbit LED6 P2^5;
sbit LED7 P2^6;
sbit LED8 P2^7;void Delay500ms() //11.0592MHz
{unsigned char i, j, k;i 4;j 129;k 119;do{do{while (--k);} while (--j);} while (--i);
}void main(){ while(1){P2 0xfe; //LED1亮Delay500ms(); P2 0xfc; //LED1亮,LED2亮-Delay500ms(); P2 0xf8; //LED1亮,LED2亮-,LED3亮Delay500ms(); P2 0xf0; //LED1亮,LED2亮-,LED3亮,LED4亮Delay500ms(); P2 0xe0; //LED1亮,LED2亮-,LED3亮,LED4亮,LED5亮Delay500ms(); P2 0xc0; //LED1亮,LED2亮-,LED3亮,LED4亮,LED5亮,LED6亮Delay500ms(); P2 0x80; //LED1亮,LED2亮-,LED3亮,LED4亮,LED5亮,LED6亮,LED7亮Delay500ms(); P2 0x00; //全亮Delay500ms(); P2 0xff; //关闭8个LEDDelay500ms(); }} 总结