標(biāo)題: 請(qǐng)教 avr數(shù)碼管顯示 仿真問(wèn)題 [打印本頁(yè)]

作者: by64214    時(shí)間: 2017-9-4 21:21
標(biāo)題: 請(qǐng)教 avr數(shù)碼管顯示 仿真問(wèn)題
編寫軟件   Atmel Studio7
仿真軟件  proteus
程序
#include <avr/io.h>
#define led_wei_ddr DDRA|=0XF0
#define led_wei PORTA
#define led_duan_ddr DDRB=0XFF
#define led_duan PORTB
#define uchar unsigned char
#define uint unsigned int
int table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共陽(yáng)數(shù)碼管0--9代碼
void delay_ms(unsigned int x)    // 延時(shí) (x) ms
{
unsigned char j;
while(x--)
{
  for(j=0;j<123;j++)
  {
   ;
  }
}
}
void delay_us(unsigned char x)   // 延時(shí) (x*2+5) us
{
while(--x);
}
void show(uchar j,uchar k)
{
led_wei|=0xF0; //如果換位的話這里也要改,使清屏    //共陽(yáng)共陰和高低電平驅(qū)動(dòng)也不一樣
led_wei&=~1<<(k);
/*if(k==1) //這用來(lái)在有需要的位上加小數(shù)點(diǎn)
{
        led_duan=table[j]&0x7f;
        delay_ms(4);
       }*/
led_duan = table[j];
delay_ms(5);
}
/*****************數(shù)碼管輸出函數(shù)****************/
void led_display(uint dat,uchar num)//dat為要輸出的數(shù),num為要輸出數(shù)字的位數(shù)
{
uchar i,ad[4];
led_duan_ddr;
led_wei_ddr;
for(i=0;i<num;i++)
{
  ad=dat%10;
  dat=dat/10;
}
for(i=0;i<num;i++)
{
  show(ad,i);
  delay_ms(5);
}
}

int main(void)
{
    /* Replace with your application code */
    while (1)
    {
  led_display(6666,4);
    }
}
程序通過(guò)  無(wú)錯(cuò)誤  無(wú)警告   設(shè)置F_CPU=8000000UL    數(shù)碼管模塊  100us



請(qǐng)教各位老師   怎樣修改   能正確顯示

作者: 落雨聽(tīng)愁    時(shí)間: 2017-9-5 10:30
中斷程序出錯(cuò)
作者: by64214    時(shí)間: 2017-9-5 10:52
謝謝指導(dǎo)   能具體說(shuō)一下    這個(gè)是ATMEGA16實(shí)物顯示正常的程序
作者: nbanniy    時(shí)間: 2017-9-5 21:01
for(i=0;i<num;i++)
{
  ad=dat%10;
  dat=dat/10;
}
for(i=0;i<num;i++)
{
  show(ad,i);
  delay_ms(5);
}
這里錯(cuò)
數(shù)位對(duì)應(yīng)錯(cuò)



作者: shuisheng    時(shí)間: 2019-1-31 21:14
本帖最后由 shuisheng 于 2019-2-21 15:55 編輯

數(shù)碼管是有很多實(shí)物顯示正常仿真出問(wèn)題的,不過(guò)要解決也不難,反過(guò)來(lái)你如果能解決好仿真中的數(shù)碼管,實(shí)物操作一點(diǎn)問(wèn)題也沒(méi)有




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1