找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3766|回复: 17
打印 上一主题 下一主题
收起左侧

BASCOM-AVR 4个数码管同时显示数字0-9 代码+实物图片+测试视频

[复制链接]
跳转到指定楼层
楼主
  1. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  2. $regfile = "m16def.dat"                                     'ATMega16 单片机
  3. $crystal = 8000000                                          '8兆赫晶振

  4. Dim I As Byte

  5. 'PORTB 8个引脚PB0-PB7连接了数码管 A B C D E F G H
  6. Config Porta = Output
  7. Config Portb = Output

  8. Porta.0 = 0                                                 '第1位数码管亮
  9. Porta.1 = 0
  10. Porta.2 = 0
  11. Porta.3 = 0                                                 '第4个数码管亮
  12. '====================
  13. '数码管显示0-9,1秒钟切换1次
  14. Do
  15.    Wait 1
  16.    I = I + 1
  17.    If I >= 10 Then I = 0

  18.    If I = 0 Then Portb = &HC0
  19.    If I = 1 Then Portb = &HF9
  20.    If I = 2 Then Portb = &HA4
  21.    If I = 3 Then Portb = &HB0
  22.    If I = 4 Then Portb = &H99
  23.    If I = 5 Then Portb = &H92
  24.    If I = 6 Then Portb = &H82
  25.    If I = 7 Then Portb = &HF8
  26.    If I = 8 Then Portb = &H80
  27.    If I = 9 Then Portb = &H90
  28. Loop
  29. End
复制代码

4个数码管同时显示0-9.png (386.94 KB, 下载次数: 144)

4个数码管同时显示0-9.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:342822 发表于 2020-7-23 11:15 | 只看该作者
Bascom avr 节省脑细胞的软件
回复

使用道具 举报

板凳
ID:342822 发表于 2020-7-23 11:37 | 只看该作者
如果与Proteus 8 仿真软件结合将更加顺手~~
回复

使用道具 举报

地板
ID:808608 发表于 2020-7-27 19:36 | 只看该作者
如果与Proteus 8 仿真软件结合将更加顺手~
回复

使用道具 举报

5#
ID:696930 发表于 2020-11-28 14:15 | 只看该作者
与ARDUINO类似,模块化,更简洁好用。
回复

使用道具 举报

6#
ID:342822 发表于 2020-11-28 15:41 | 只看该作者
100个也可以同时显示
回复

使用道具 举报

7#
ID:883296 发表于 2021-2-6 22:09 | 只看该作者
各位大师好,BASCOM-AVR2.0.8.1软件通过什么渠道能够买到?
回复

使用道具 举报

8#
ID:941018 发表于 2021-6-20 18:14 | 只看该作者
'我也来了
$regfile = "m16def.dat"                                     'ATMega16 单片机
$crystal = 8000000                                          '8兆赫晶振
Dim I As Long , L As Long
Dim Gw As Integer , Sw As Integer , Bw As Integer , Qw As Integer       '个位十位百位千位
'PortB 端口的8个引脚连接这个8个LED,
Config Porta = Output
Config Portb = Output
'=======================================================
Dim Value(19) As Byte                                       '数组中存的是0-9数字对应亮灯的值
Value(10) = &HC0                                            '数字"0"对应的数码管设置值
Value(11) = &HF9                                            '数字"1"对应的数码管设置值
Value(12) = &HA4                                            '数字"2"对应的数码管设置值
Value(13) = &HB0                                            '数字"3"对应的数码管设置值
Value(14) = &H99                                            '数字"4"对应的数码管设置值
Value(15) = &H92                                            '数字"5"对应的数码管设置值
Value(16) = &H82                                            '数字"6"对应的数码管设置值
Value(17) = &HF8                                            '数字"7"对应的数码管设置值
Value(18) = &H80                                            '数字"8"对应的数码管设置值
Value(19) = &H90                                            '数字"9"对应的数码管设置值
Do
   Waitms 10                                                '刷新延迟
   L = L + 1                                                '计算累加
   I = L \ 5                                                '降低数据变化频率
   I = I Mod 10000                                          '数值到10000后清0
   Qw = I \ 1000                                            '计算千位
   Bw = I Mod 1000                                          '计算百位
   Bw = Bw \ 100
   Sw = I Mod 100                                           '计算十位
   Sw = Sw \ 10
   Gw = I Mod 10                                            '计算个位
   '只点亮个位数码管PA3
   Porta = &B0111
   Portb = Value(gw + 10)                                   '设置个位数值
   Waitms 1
   '只点亮十位数码管PA2
   Porta = &B1011
   Portb = Value(sw + 10)                                   '设置十位数值
   Waitms 1
   '只点亮百位数码管PA1
   Porta = &B1101
   Portb = Value(bw + 10)                                   '设置百位数值
   Waitms 1
   '只点亮千位数码管PA0
   Porta = &B1110
   Portb = Value(qw + 10)                                   '设置千位数值
   Waitms 1
Loop
End
回复

使用道具 举报

9#
ID:342822 发表于 2021-6-20 20:26 | 只看该作者
红日888 发表于 2021-6-20 18:14
'我也来了
$regfile = "m16def.dat"                                     'ATMega16 单片机
$crystal =  ...

用仿真跑一边你会发现一些问题
回复

使用道具 举报

10#
ID:941018 发表于 2021-6-20 20:31 | 只看该作者
我这是用实体机跑出来的
回复

使用道具 举报

11#
ID:941018 发表于 2021-6-20 20:40 | 只看该作者
taotie 发表于 2021-6-20 20:26
用仿真跑一边你会发现一些问题

我还没用过仿真,手里有一个现成的板子
回复

使用道具 举报

12#
ID:342822 发表于 2021-6-20 22:10 | 只看该作者
共阳极:

位选为高电平(即1)选中数码管,

各段选为低电平(即0接地时)选中各数码段。
        0xc0,//0
        0xf9,//1
        0xa4,//2
        0xb0,//3
        0x99,//4
        0x92,//5
        0x82,//6
        0xf8,//7
        0x80,//8
        0x90,//9
那么实现累加应该是;
Do
   Waitms 15                                               '刷新延迟
   L = L + 1                                                '计算累加
   I = L \ 5                                                '降低数据变化频率
   I = I Mod 10000                                          '数值到10000后清0
   Qw = I \ 1000                                            '计算千位
   Bw = I Mod 1000                                          '计算百位
   Bw = Bw \ 100
   Sw = I Mod 100                                           '计算十位
   Sw = Sw \ 10
   Gw = I Mod 10                                            '计算个位
   '只点亮个位数码管PA3
   Porta = &B0001
   Portb = Value(gw + 10)                                   '设置个位数值
   Waitms 5
   '只点亮十位数码管PA2
   Porta = &B0010
   Portb = Value(sw + 10)                                   '设置十位数值
   Waitms 5
   '只点亮百位数码管PA1
   Porta = &B0100
   Portb = Value(bw + 10)                                   '设置百位数值
   Waitms 5
   '只点亮千位数码管PA0
   Porta = &B1000
   Portb = Value(qw + 10)                                   '设置千位数值
   Waitms 15
Loop
回复

使用道具 举报

13#
ID:342822 发表于 2021-6-20 22:15 | 只看该作者

回复

使用道具 举报

14#
ID:941018 发表于 2021-6-20 23:56 | 只看该作者

我手里的这个是0点亮,是不是就差这里
回复

使用道具 举报

15#
ID:941018 发表于 2021-6-21 00:06 | 只看该作者
我又试了一下,我手里的这个板子和你的正好相反
回复

使用道具 举报

16#
ID:941018 发表于 2021-6-21 00:07 | 只看该作者
本帖最后由 红日888 于 2021-6-21 00:41 编辑

我手里的板子就是楼主给我的
回复

使用道具 举报

17#
ID:342822 发表于 2021-6-21 09:53 | 只看该作者
红日888 发表于 2021-6-21 00:06
我又试了一下,我手里的这个板子和你的正好相反

那说明你的板上数码管是共阳极的,位选硬是高电平时点亮相应位段码。位选应从低位向高位逐次点亮。即:
0001 0010 0100 1000.
调节延时使数码管稳定显示。
回复

使用道具 举报

18#
ID:941018 发表于 2021-6-21 21:59 | 只看该作者
我这个是0才是点亮,所有的灯的输出都是0是亮1是灭,我也觉得这样很别扭
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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