51/AVR单片机技术驿站!  <在线翻译> 淘宝店    便利工具    特色网址   打造无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

 首页>> 常规知识 电路图集 学习MCU 单片机文章 查器件PDF 下载中心 单片机教程 学习产品 购买联系 在线留言 RRS
当前位置:首页 > ◆本站实例 > 详细内容
数码管手动计数0~9999[M8515]
作者:admin  发布时间:2009-11-26  阅读次数:535  字体大小: 【】 【】【

/********************************************************
程序名称:数码管手动计数0~9999
编译环境:CVAVR / 基于AVR
硬件对象:XY900_USB型学习开发系统板
实验描述:ATmega8515 
          PA端口输出显示,PD3/PD4控制段/位选,PD5为按键
月夜听风 
mcusy_cn@126.com   http://www.mcusy.cn
********************************************************/
#include <mega8515.h>
#include <delay.h>
#define uint unsigned int
#define uchar unsigned char
#define duan PORTD.3 //定义段选
#define wei  PORTD.4 //定义位选
uchar table_d[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90,0x00};// 0~9的段码
uchar table_w[]=
{0x02,0x01,0x08,0x04,0x20,0x10,0x80,0x40,0xff};//8个位码表
uint count,q,b,s,g; //计数器,千,百,十,个
//-------------------------------------------------------
 
void number(void) //计数值分离
  {
    q = count/1000; //提取千
    b = count/100%10; //提取百
    s = count/10%10;//提取十
    g = count%10; //提取个
  }
//------------------------------------------------------- 
void display(void) //显示子函数
  {
    uchar t;
    for(t=0;t<=10;t++)//扫描速度
      {
        number(); 
        duan=1;PORTA=table_d[q];duan=0;//显示千位
        wei=1;PORTA=table_w[4];wei=0;//选通第4个显示
        delay_ms(2); //1ms
        duan=1;PORTA=table_d[b];duan=0;//显示百位
        wei=1;PORTA=table_w[5];wei=0;//选通5个显示
        delay_ms(2);
        duan=1;PORTA=table_d[s];duan=0;//显示十位
        wei=1;PORTA=table_w[6];wei=0;//选通第6个显示
        delay_ms(2);
        duan=1;PORTA=table_d[g];duan=0;//显示个位
        wei=1;PORTA=table_w[7];wei=0;//选通7个显示
        delay_ms(2);
      }
  }

//-------------------------------------------------------
void main(void) //主函数
  { 
    DDRA = 0xff; PORTA = 0xff;
    DDRD = 0xff; PORTD.5 = 1;  
    while(1)//循环
       {
         if(PIND.5 != 1) //按下了PD5键?
         delay_ms(5);
         if(PIND.5 != 1)
           {
              display();
              count ++; //数加1
              if(count == 10000) //是否计满了1万?
              count = 0; //清零
            }
         display();
       }
  }

 

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:479780666 522422171 86-0755-28650237
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号