ATMEGA8单片机四位数码管动态显示程序源码及仿真.zip
时间:10-30 16:34
查看:1779次
下载:162次
简介:
本资料为ATMEGA8单片机四位数码管动态显示程序源码及仿真等。
#include <iom8v.h>
/********************************************************************
数据类型定义
*********************************************************************/
#define uchar unsigned char
#define uint unsigned int
/********************************************************************
数码管段码定义0123456789
*********************************************************************/
uchar Table[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位码
uchar wei[4]={0X01,0X02,0X04,0X08}; //位的控制端 (仿真)
//uchar wei[4]={0XEF,0XDF,0XBF,0X7F}; //位的控制端 (开发板使用)
uint z,x,c,v, date; //定义数据类型
/**********************************************************************
MS级延时函数程序,参数i 延时时间
**********************************************************************/
void DelayMS(uint i)
{
uint j;
for(;i!=0;i--)
{
for(j=8000;j!=0;j--);
}
}
/**********************************************************************
数码管动态扫描
*********************************************************************/
void Pre_Display()
{
/***********************数据转换*****************************/
z=date/1000; //求千位
x=date%1000/100; //求百位
c=date%100/10; //求十位
v=date%10; //求个位
PORTC=wei[0];
PORTB=Table[z];
DelayMS(1);
PORTC=wei[1];
PORTB=Table[x];
DelayMS(1);
PORTC=wei[2];
PORTB=Table[c];
DelayMS(1);
PORTC=wei[3];
PORTB=Table[v];
DelayMS(1);
}
//////////////////////////////初始化////////////////////////////////////
void Init_IO(void)//初始化I/O
{
//设置B口为输出
DDRB=0xFF;
PORTB=0xFF;
//设置C口为输出
DDRC=0xFF;
PORTC=0xFF;
}
/**********************************************************************
主函数
**********************************************************************/
void main(void)
{
Init_IO(); //初始化I/O
while(1)
{
date=2345;//数码管显示数值
Pre_Display();
}
}