打印
[AVR单片机]

AVR单片机数码管带学习板图实例(带注释),请高手检查

[复制链接]
995|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cirsty|  楼主 | 2014-9-5 23:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
74HC595.h
#define SHcp 1       //移位寄存器时钟
#define STcp 2       //存储寄存器时钟
#define Ds 3         //数据输入


void delay(uint t){    //延时函数
while(t--);
}

void in_595(uchar byte){     //595输入函数
uchar i,temp;  
for(i=0;i<8;i++){
    temp=byte&0x80;   

TS8900-MM16.pdf

79.78 KB

学习开发板原理图

相关帖子

沙发
cirsty|  楼主 | 2014-9-5 23:20 | 只看该作者
PORTA&=~(1<<SHcp); //移位寄存器时钟清零
        if(temp==0){       //temp的值为0,数据输入为0,否则输出1
        PORTA&=~(1<<Ds);
        }
        else{
        PORTA|=(1<<Ds);
        }
        PORTA|=(1<<SHcp);  //移位寄存器时钟置1,给一个脉冲信号
        byte=(byte<<1);    //byte移位
  }
}

void out_595(void){    //595存储寄存器输出
    PORTA&=~(1<<STcp); //存储寄存器时钟清零
        PORTA|=(1<<STcp);  //存储寄存器时钟置1,给一个脉冲信号
        }
       

使用特权

评论回复
板凳
cirsty|  楼主 | 2014-9-5 23:20 | 只看该作者
#define uchar unsigned char
#define uint unsigned int
#include<iom16v.h>
#include"74hc595.h"
#pragma data:code    //共阳数码管码表
const table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};




void main(void)
{
uchar aa,cc=0x0;
uint bb;
DDRA=0xff;      //初始化端口A
PORTA=0xef;
while(1)
     {
         PORTA|=(1<<7);               //74ls138使能
         for(aa=0;aa<=16;aa++)         //循环发送0-f的数字
            {
                in_595(table[aa]);
                out_595();
                      //向74hc595写入数据
                 for(bb=0;bb<1600;bb++)   //每个数字扫描2000次,每个数码管200次
                     {
                         PORTA&=~cc;          //74hc138依次输出
                         cc=cc+0x01;          //这里可能不好理解,138的ABC在A口的567位,每加0x20就是进一位,加到溢出就回到000;
                         delay(15);
                         PORTA|=0xe0;         
                         }
                 }
         }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝