基于proteus的51单片机仿真实例七十八、使用BCD译码器实现8位数码管显示应用实例

时间:2024-03-19 09:28:45
1、在此前有关数码管显示的例子中,单片机必须要发送段码才能够让数码管显示正确的数字。
本例使用7段数码管显示译码器4511,单片机可以直接输出BCD码,4511能够自动将BCD码转换为数码管的段码。
 
2、在keil c51中新建工程ex66,编写如下程序代码,编译并生成ex66.hex文件
//使用BCD码译码器控制数码管显示
#include <reg51.h>
//位码表
unsigned char code bit_buff[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//需要显示的数字
unsigned char code bcd_buff[] = {2,0,1,0,10,2,10,9};
//延时函数
void delayms(unsigned int x)
{
  unsigned char i;
 while(x--)
 {
   for(i = 0;i < 120;i++);
 }
}
void main(void)
{
  unsigned char i;
 while(1)
 {
   for(i = 0;i < 8;i++)  //显示8位
  {
    P2 = bit_buff[i];   // 位码
   P1 = bcd_buff[i];   //需要显示的数字,这里的数字不再是段码,而是BCD码
   
3、在proteus中新建仿真文件ex66.dsn,电路原理图如下所示

基于proteus的51单片机仿真实例七十八、使用BCD译码器实现8位数码管显示应用实例
4、将ex66.hex文件载入at89c51中,启动仿真,按动拨码开关,观察运行结果。下图是某一时刻程序运行结果
基于proteus的51单片机仿真实例七十八、使用BCD译码器实现8位数码管显示应用实例