微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > 3位共阳数码管显示。。。不知道哪里出错了。。。主要目...5

3位共阳数码管显示。。。不知道哪里出错了。。。主要目...5

时间:10-02 整理:3721RD 点击:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit D1=P2^0;
sbit D2=P2^1;
sbit D3=P2^2;
uchar code designP1[]={   
0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
0x99,0x92,0x82,0xf8, // 4, 5, 6, 7
0x80,0x90};             // 8, 9  
void delayms(unsigned char ms)
// 延时子程序
{      
unsigned char i;
while(ms--)
{
  for(i = 0; i <200; i++);
}
}
main()//主函数                              
{
unsigned char i;
unsigned int m,n,x,ii;
i=23.5;
      ii=i*10;
  while(1)
     if(ii>10 && ii<100)        //如果温度在0到10度之间直接给七段数码管赋值
    {
    x=ii%10;//给第一个数码管赋值
    D1=1;
    D2=0;
    D3=0;
    P0=designP1[x+1];
    m=ii/10;   //再给第二个数码管赋值
    D1=0;
    D2=1;
    D3=0;
    P0=designP1[m+1];
    delayms(1);
    }
   else//如果温度大于10度
    {
    x=(ii%100)%10;//先给第一个七段数码管赋值
    D1=1;
    D2=0;
    D3=0;
    P0=designP1[x+1];
    m=(ii%100)/10;//再给第二个七段数码管赋值
       D1=0;
    D2=1;
       D3=0;
       P0=designP1[m+1]|0x80;               
       n=ii/100;//然后给第三个七段数码管赋值
       D1=0;
    D2=0;
       D3=1;
       P0=designP1[n+1];
       delayms(1);
       }
}

这个程序中的23.5显示不出来。是乱码。

还没学到单片机驱动数码管

1,七段数码管显示每选择一位显示以后都必须加延时,而你只是在最后一位显示送完后加延时,2,你如果想点亮小数点,因为你是用的共阳极数码管,这个”P0=designP1[m+1]|0x80“不应该用或而应该用与;3,还有你上传的程序,while(1)后面没有{},这个不知道会出现什么问题呢?

楼上说了我想说的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top