ATMEGA8单片机LED动态显示程序设计

发布者:JoyfulJourney最新更新时间:2017-12-15 来源: eefocus关键字:ATMEGA8  单片机  LED  动态显示 手机看文章 扫描二维码
随时随地手机看文章

//电路里有4个七段LED,用此程序,每个LED的刷新周期为200/4=50Hz
      //程序里实时改变DispResult的值,显示就会相应改变。
      #include
      #include

      unsigned char 
      table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
      unsigned char LEDRefresh=0;
      unsigned    char  DispResult=0;       
      unsigned char LedLoop=0;                                                   
                                                                                 
                  
       
      void port_init(void)
      {
       PORTB = 0x00;
       DDRB  = 0xFF;
       PORTC = 0x00;
       DDRC  = 0x01;
       PORTD = 0x00;
       DDRD  = 0xFF;
      }
       
      //电路所用时钟为Mega8内部8M时钟。
      //TIMER1 initialize - prescale:1
      // WGM: 0) Normal, TOP=0xFFFF
      // desired value: 200Hz
      // actual value:  200
      void timer1_init(void)
      {
       TCCR1B = 0x00; //stop
       TCNT1H = 0x63; //setup
       TCNT1L = 0xC0;
       OCR1AH = 0x03;
       OCR1AL = 0xE8;
       OCR1BH = 0x03;
       OCR1BL = 0xE8;
       ICR1H  = 0x03;
       ICR1L  = 0xE8;
       TCCR1A = 0x00;
       TCCR1B = 0x01; //start Timer
      }
      #pragma interrupt_handler timer1_ovf_isr:9
      void timer1_ovf_isr(void)
      {
       //TIMER1 has overflowed
       TCNT1H = 0x63; //reload counter high value
       TCNT1L = 0xC0; //reload counter low value
       
       LEDRefresh=1;//刷新显示标志
      /*分别选通四个LED*/
       LedLoop++;  
       LedLoop=LedLoop&0x03;
      }
       
      //输入参数为通道,和数字。
      void LedDisp (unsigned char ch,unsigned char num)
      {
      unsigned char channel;
      unsigned char number;
      number = num;
       PORTB|=0x07;
       PORTC|=0x01;//把所有的LED都关掉。
      switch(ch)
      {
      case  1:PORTB&=~0x04;break;//选通第一个LED
      case 2:PORTB&=~0x02;break;//选通第二个LED
      case 3:PORTB&=~0x01;break;//选通第三个LED
      case 4:PORTC&=~0x01;break;//选通第四个LED
      default :  break;
      }
      PORTD=~table[number];//向LED里放数据。
      }


      void CheckTime()
      {
      /***********显示任务,每5ms执行一次***************/
      if(LEDRefresh==1)
      {
      switch(LedLoop)
      {
      case 0:LedDisp(1,DispResult%10);break;//第一个LED显示个位
      case 1:LedDisp(2,DispResult/10%10);break;//第二个LED显示十位
      case 2:LedDisp(3,DispResult/100%10);break;//第三个LED显示百位
      case 3:LedDisp(4,DispResult/1000%10);break;//第四个LED显示千位
      default: break;
      }
      LEDRefresh=0;
      }
      }
      void main()
      {
      CLI(); //dISAble all interrupts
      DispResult=2001;
      port_init();
       timer1_init();
       MCUCR = 0x08;
      // GICR  = 0x80;//打开中断1
       TIMSK = 0x04; //timer interrupt sources
       SEI(); //re-enable interrupts
      while(1)
      {
      CheckTime();
      }
      }


关键字:ATMEGA8  单片机  LED  动态显示 引用地址:ATMEGA8单片机LED动态显示程序设计

上一篇:ATMEGA16 ADC模数转换示例程序
下一篇:AVR的外部中断INT示例程

推荐阅读最新更新时间:2024-03-16 15:49

ARM7单片机(学习ing)—(四)、定时器—02
只要知道了Startup.s中对单片机时钟的定义~~ 也就是这句话:当外部晶振频率为12MHz时,系统时钟60MHz,外设时钟15MHz~~ 无敌了~~ 感觉一下子好学了好多~~ 不过我还是有点不太清楚就是外设时钟?为什么是15MHz~~ 现在可以先留着~~慢慢来吧~~ 四、定时器 四—(02)、定时控制LED闪烁(应用查询法~~) MDK4_1.c //------------------------------------------------------------------------------ //使用定时器0实现1s定时,控制LED闪烁 //今天使用的是查询法~~ #include lpc210x.
[单片机]
ARM7<font color='red'>单片机</font>(学习ing)—(四)、定时器—02
80C51单片机产生几种基本波形的方法
  简介:介绍了基于80C51单片机产生几种基本波形的方法。采用微处理器兼容的14位数模转换器MAX7534,高速,稳定,具有良好的线性。用户通过按键选择输出需要的波形,波形精度能够满足一般的使用条件。   本文利用80C51单片机外接数模转换器和I/V转换电路,由用户通过按键选择输出实验中经常使用到的几种基本波形:方波、锯齿波、正弦波。方波由80C51单片机内部自带的计数器/定时器产生,并由用户通过小键盘选择波形周期。与微处理器兼容的14位数模转换器MAX7534将数字量转换为模拟量电流信号,通过I/V转换电路得到双极性的锯齿波和正弦波信号,波形保证了他的精度和平滑、稳定。   1硬件电路设计   80C51单片机时钟电
[单片机]
80C51<font color='red'>单片机</font>产生几种基本波形的方法
51单片机串口通信原理与应用
  这节我们主要讲单片机上串口的工作原理和如何通过程序来对串口进行设置,以及根据所给出的实例实现与PC 机通信。   一、原理简介   51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。   与之前一样,首先我们来了解单片机串口相关的寄存器。   SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是
[单片机]
51<font color='red'>单片机</font>串口通信原理与应用
多功能体育场馆对led显示屏高标准和高质量的需求
多功能体育馆要保证方便、准确地利用显示屏,就应在设计制造中坚持高标准、高技术、高质量的要求,具体可以从以下几个方面分析。 1.1 高标准的材料 发光材料。发光材料是显示屏特别是全彩色显示屏最重要的材料,是保证显示屏显示效果和高可靠性、长寿命的关键,主要参考指标是亮度和均匀性。 控制驱动芯片。控制驱动芯片是显示屏关键设计的保证,由于这一部分的技术含量较高,加之生产厂家的水平参差不齐,这一部分的设计应慎重对待。 开关电源。开关电源是显示屏中故障率较高的元件,必须采用高品质的开关电源,才能保证满足体育馆显示屏的使用要求。 1.2 高水平的控制技术 体育馆显示屏是服务于竞技项目的大型设施,在其控制技
[电源管理]
LED背光驱动模块电路设计
   电路分析: 背光驱动的要求是任何条件下背光LED的发光亮度不变,即需要构造一个恒流源电路。图所示的背光驱动电路是最简单的恒流源电路,电路工作时电阻R9两端电压等于VLL1加上BE极导通电压,是约为1.7V的固定电压,流过R9的电流也是固定电流,该电流约等于Q2的射极电流和集电极电流,所以流过背光二极管D1的电流也为一恒流,实现了背光LED的恒流驱动。背光LED的驱动电流为10mA左右,R9取值150Ω。
[电源管理]
<font color='red'>LED</font>背光驱动模块电路设计
NOR Flash与8位单片机接口设计
  引 言   Flash存储器又称闪速存储器,是20世纪80年代末逐渐发展起来的一种新型半导体不挥发存储器。它兼有RAM和ROM的特点,既可以在线擦除、改写,又能够在掉电后保持数据不丢失。   NOR Flash是Flash存储器中最早出现的一个品种,与其他种类的Flash存储器相比具有以下优势:可靠性高、随机读取速度快,可以单字节或单字编程,允许CPU直接从芯片中读取代码执行等。因此NOR Flash存储器在嵌入式系统应用开发中占有非常重要的地位。本文以SST公司的NOR Flash芯片SST39SF040和MCS-51单片机为例,针对大容量NORFlash在8位低档单片机中应用的特殊性,详细介绍了其接口硬件和接口软件的设计方
[单片机]
NOR Flash与8位<font color='red'>单片机</font>接口设计
亮点:简易LED环保灯
由于LED的采用,这就为灯泡带来了一次全新的革命,灯泡不再限制为原来的圆形。不过通常的LED等仍然采用的是塑料的外壳,设计师Tien-Ho Hsu设计的这款灯,除了节能外,还非常的环保,灯的外壳采用的是可重复使用的循环纸。灯片还可以旋转。该设计参加了2011光宝创新设计奖。
[电源管理]
亮点:简易<font color='red'>LED</font>环保灯
一文读懂汽车控制芯片(MCU
本文从工作要求,性能要求,产业格局,行业壁垒四个维度,分别介绍车身、底盘、动力、座舱四个域的 MCU 芯片 。并整理了国产MCU芯片的应用现状,供从业者参考。 1.控制类芯片介绍 控制类芯片主要就是指MCU(Microcontroller Unit),即微控制器,又叫单片机,是把CPU的主频与规格做适当缩减,并将存储器、定时器、A/D转换、时钟、I/O端口及串行通讯等多种功能模块和接口集成在单个芯片上,实现终端控制的功能,具有性能高、功耗低、可编程、灵活度高等优点。 车规级MCU示意图 汽车是MCU的一个非常重要的应用领域,据 IC Insights数据,2019年全球MCU应用于 汽车电子 的占比约为33%。高端车
[汽车电子]
一文读懂汽车控制芯片(<font color='red'>MCU</font>)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved