您的位置 首页 元件

AVR单片机4位数码管计数C程序

AVR单片机4位数码管计数,从0000-5000一直循环。位选端接在PC的低4位,而段选端接在PA口。程序如下:includeiom16vh>头文件includem

AVR单片机4位数码管计数,从0000-5000一向循环。位选端接在PC的低4位,而段选端接在PA口。程序如下:

#include//头文件
#include//头文件
#define uchar unsigned char//宏界说
#define uint unsigned int//宏界说
uchar i;//界说变量
uint num;//界说计数变量
#pragma data:code//数组寄存方位
const table[]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,
0x8e
};//共阳数码管0–9代码
/*************************************************************/
/*********************延时子程序******************************/
/*************************************************************/
void delay(uint z)//一个带参数,不带返回值的子函数
{
uint x,y;//界说两个变量
for(x=0;x<55;x++)//外循环
for(y=z;y>0;y–);//内循环
}
/*************************************************************/
/*********************显现子程序******************************/
/*************************************************************/
void xian()
{
for(i=0;i<20;i++)//显现20次,使全体看起来不闪耀
{
PORTA=table[num/1000];//将千位数给PA口
PORTC&=~BIT(3);//翻开千位位选端
delay(2);//延时一瞬间
PORTC|=BIT(3);//关掉千位
PORTA=table[num%1000/100];//将百位数给PA口
PORTC&=~BIT(2);
delay(2);
PORTC|=BIT(2);
PORTA=table[num%100/10];//将十位数给PA口
PORTC&=~BIT(1);
delay(2);
PORTC|=BIT(1);
PORTA=table[num%10];//将个位数给PA口
PORTC&=~BIT(0);
delay(2);
PORTC|=BIT(0);
}
num++;//将它加1,构成动态计数
if(num>5000)//假如它大于5000就将计数器清0
num=0;//清0
}
/*************************************************************/
/*************************主程序******************************/
/*************************************************************/
void main()
{
DDRA=0xff;//设置PA口为输出
DDRC=0xff;//设置PC口为输出
while(1)
{
xian(); //调用显现子函数
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/255383.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部