/**********************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);
}
}
|