標(biāo)題: avr數(shù)碼管程序 新人不懂求教 [打印本頁(yè)]

作者: 一只放羊的牛    時(shí)間: 2018-3-6 17:36
標(biāo)題: avr數(shù)碼管程序 新人不懂求教
/**********************HJ-2G V8.0實(shí)驗(yàn)開發(fā)板例程************************
新人不懂求教 ,求大佬講一下這個(gè)程序

******************************************************************/
#include "iom16v.h"
#include "macros.h"
//數(shù)組聲明并定義在存儲(chǔ)數(shù)據(jù)區(qū)code
//0~9
#pragrma data:code  
unsigned char const Number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,};
//A~F
#pragrma data:code
unsigned char const Alpha[]={0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,};
unsigned char i=0,ch=0,adc_rel,sens1,sens2,adc_ral;
//枚舉變量aplha聲明
enum alpha{A,B,C,D,E,F};
//延遲函數(shù)
void Delay(unsigned long x)
{
   while(x--);
}
//動(dòng)態(tài)顯示函數(shù)
void Dynamic_Show()
{
   int i;
   for(i=0;i<6;i++)
   {
      PORTB=Number[i];     //送模碼
      PORTA|=BIT(PA3);    //PA3高電平
      PORTA&=~BIT(PA3);   //PA3低電平
      
      PORTB=~BIT(i);      //送位選
      PORTA|=BIT(PA4);    //PA3高電平
      PORTA&=~BIT(PA4);   //PA3低電平
      Delay(100);         //稍微延遲
   }
}
//靜態(tài)顯示函數(shù)
void Static_Show(unsigned char No,unsigned char We)
{
   PORTB=Number[No];   //送模碼
   PORTA|=BIT(PA3);    //PA3高電平
   PORTA&=~BIT(PA3);   //PA3低電平
         
   PORTB=~BIT((--We)); //送位選
   PORTA|=BIT(PA4);    //PA3高電平
   PORTA&=~BIT(PA4);   //PA3低電平
   Delay(100);         //稍微延遲
}
//動(dòng)態(tài)顯示函數(shù)
void Number_Show(unsigned char Num)
{
   unsigned char Hundred,Ten,One;
   Hundred=Num/100;       //取百位
   Ten=Num%100/10;        //取十位
   One=Num%10;            //取個(gè)位
   
   //顯示百位
   PORTB=Number[Hundred];     //送模碼
   PORTA|=BIT(PA3);    //PA3高電平
   PORTA&=~BIT(PA3);   //PA3低電平
         
   PORTB=~BIT(0);      //送位選
   PORTA|=BIT(PA4);    //PA3高電平
   PORTA&=~BIT(PA4);   //PA3低電平
   Delay(100);         //稍微延遲
   
   //顯示十位
   PORTB=Number[Ten];  //送模碼
   PORTA|=BIT(PA3);    //PA3高電平
   PORTA&=~BIT(PA3);   //PA3低電平
         
   PORTB=~BIT(1);      //送位選
   PORTA|=BIT(PA4);    //PA3高電平
   PORTA&=~BIT(PA4);   //PA3低電平
   Delay(100);         //稍微延遲
   
   //顯示個(gè)位
   PORTB=Number[One];  //送模碼
   PORTA|=BIT(PA3);    //PA3高電平
   PORTA&=~BIT(PA3);   //PA3低電平
         
   PORTB=~BIT(2);      //送位選
   PORTA|=BIT(PA4);    //PA3高電平
   PORTA&=~BIT(PA4);   //PA3低電平
   Delay(100);         //稍微延遲
   
}
//IO初始化函數(shù)
void IO_Init()
{
      //DDRA|=BIT(PA3);      //PA3狀態(tài)為輸出
      //DDRA|=BIT(PA4);      //PA4狀態(tài)為輸出 DDRA=0b11111110;
   DDRA=0xFC;
   DDRB=0xff;           //PB狀態(tài)為輸出
}

//主函數(shù)
void main()
{
   IO_Init();
   
   while(1)
   {
      Number_Show(321);
      //Dynamic_Show();
      //Static_Show(1,3);
   }
}



作者: fhx9999    時(shí)間: 2018-3-7 14:29
#pragrma data:code  
unsigned char const Number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,};
//A~F
#pragrma data:code
unsigned char const Alpha[]={0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,};

這個(gè)為L(zhǎng)ED 顯示段碼
別的函數(shù)已經(jīng)注明了,一看就懂了




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