标题: BASCOM-AVR 4个数码管同时显示数字0-9 代码+实物图片+测试视频 [打印本页]

作者: 富贵竹    时间: 2020-7-22 20:27
标题: 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, 下载次数: 219)

4个数码管同时显示0-9.png

作者: taotie    时间: 2020-7-23 11:15
Bascom avr 节省脑细胞的软件
作者: taotie    时间: 2020-7-23 11:37
如果与Proteus 8 仿真软件结合将更加顺手~~
作者: 杏花寒    时间: 2020-7-27 19:36
如果与Proteus 8 仿真软件结合将更加顺手~
作者: 243412038    时间: 2020-11-28 14:15
与ARDUINO类似,模块化,更简洁好用。
作者: taotie    时间: 2020-11-28 15:41
100个也可以同时显示
作者: dpj0123456    时间: 2021-2-6 22:09
各位大师好,BASCOM-AVR2.0.8.1软件通过什么渠道能够买到?
作者: 红日888    时间: 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
作者: taotie    时间: 2021-6-20 20:26
红日888 发表于 2021-6-20 18:14
'我也来了
$regfile = "m16def.dat"                                     'ATMega16 单片机
$crystal =  ...

用仿真跑一边你会发现一些问题
作者: 红日888    时间: 2021-6-20 20:31
我这是用实体机跑出来的
作者: 红日888    时间: 2021-6-20 20:40
taotie 发表于 2021-6-20 20:26
用仿真跑一边你会发现一些问题

我还没用过仿真,手里有一个现成的板子
作者: taotie    时间: 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

作者: taotie    时间: 2021-6-20 22:15


作者: 红日888    时间: 2021-6-20 23:56
taotie 发表于 2021-6-20 22:15

我手里的这个是0点亮,是不是就差这里
作者: 红日888    时间: 2021-6-21 00:06
我又试了一下,我手里的这个板子和你的正好相反
作者: 红日888    时间: 2021-6-21 00:07
本帖最后由 红日888 于 2021-6-21 00:41 编辑

我手里的板子就是楼主给我的
作者: taotie    时间: 2021-6-21 09:53
红日888 发表于 2021-6-21 00:06
我又试了一下,我手里的这个板子和你的正好相反

那说明你的板上数码管是共阳极的,位选硬是高电平时点亮相应位段码。位选应从低位向高位逐次点亮。即:
0001 0010 0100 1000.
调节延时使数码管稳定显示。
作者: 红日888    时间: 2021-6-21 21:59
我这个是0才是点亮,所有的灯的输出都是0是亮1是灭,我也觉得这样很别扭




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1