找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

iar for avr 编程 通过 仿真数码管显示不全 请求指导

查看数: 1581 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-3-1 20:04

正文摘要:

   学习《AVR单片机与传感器模块设计》(IAR) 教材,ATMega16 的A/D转换编程实践                        编程通过& ...

回复

ID:44037 发表于 2021-3-2 13:01
谢谢指导!  正常显示了  
      请问 显示有误差,怎样提高精度   x = (4840*(long)i)/1023;   4840 有的程序不是这个值!
      非常感谢!!!
ID:213173 发表于 2021-3-1 21:32
从图片现象看是显示函数没有消隐导致乱码,实际电路不会出现乱码但会有鬼影。添加消隐代码。
  1. //=======================中断函数(定时器0溢出中断)============================
  2. #pragma vector = TIMER0_OVF_vect
  3. __interrupt void TIMER0_OVF_Server(void)
  4. {
  5.         TCNT0 = 0x83;    //重载初值
  6.         if(++i>3)        //扫描位数为4位
  7.         i = 0;
  8.         PORTC = 0x00;//消隐
  9.         switch(i)
  10.         {
  11.                 case 0:PORTB = SEG7[dis_val%10];          //送个位待显示的数据
  12.                 PORTC = ACT[0];                //打开个位显示(点亮)
  13.                 break;
  14.                 case 1:PORTB = SEG7[(dis_val/10)%10];     //送十位待显示的数据
  15.                 PORTC = ACT[1];                //打开十位显示(点亮)
  16.                 break;
  17.                 case 2:PORTB = SEG7[(dis_val/100)%10];    //送百位待显示的数据
  18.                 PORTC = ACT[2];                //打开百位显示(点亮)
  19.                 break;
  20.                 case 3:PORTB = SEG7[dis_val/1000]&0x7F;   //送千位待显示的数据并点亮小数点
  21.                 PORTC = ACT[3];                //打开千位显示(点亮)
  22.                 break;
  23.         }
  24. }
复制代码

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表