找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1810|回复: 1
打印 上一主题 下一主题
收起左侧

avr数码管程序 新人不懂求教

[复制链接]
跳转到指定楼层
楼主
ID:288323 发表于 2018-3-6 17:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2黑币
/**********************HJ-2G V8.0实验开发板例程************************
新人不懂求教 ,求大佬讲一下这个程序

******************************************************************/
#include "iom16v.h"
#include "macros.h"
//数组声明并定义在存储数据区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};
//延迟函数
void Delay(unsigned long x)
{
   while(x--);
}
//动态显示函数
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);         //稍微延迟
   }
}
//静态显示函数
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);         //稍微延迟
}
//动态显示函数
void Number_Show(unsigned char Num)
{
   unsigned char Hundred,Ten,One;
   Hundred=Num/100;       //取百位
   Ten=Num%100/10;        //取十位
   One=Num%10;            //取个位
   
   //显示百位
   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);         //稍微延迟
   
   //显示个位
   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初始化函数
void IO_Init()
{
      //DDRA|=BIT(PA3);      //PA3状态为输出
      //DDRA|=BIT(PA4);      //PA4状态为输出 DDRA=0b11111110;
   DDRA=0xFC;
   DDRB=0xff;           //PB状态为输出
}

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


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:97352 发表于 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,};

这个为LED 显示段码
别的函数已经注明了,一看就懂了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表