我这个是0才是点亮,所有的灯的输出都是0是亮1是灭,我也觉得这样很别扭 |
红日888 发表于 2021-6-21 00:06 那说明你的板上数码管是共阳极的,位选硬是高电平时点亮相应位段码。位选应从低位向高位逐次点亮。即: 0001 0010 0100 1000. 调节延时使数码管稳定显示。 |
本帖最后由 红日888 于 2021-6-21 00:41 编辑 我手里的板子就是楼主给我的 |
我又试了一下,我手里的这个板子和你的正好相反 |
我手里的这个是0点亮,是不是就差这里 |
![]() |
共阳极: 位选为高电平(即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 20:26 我还没用过仿真,手里有一个现成的板子 |
我这是用实体机跑出来的 |
红日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 |
各位大师好,BASCOM-AVR2.0.8.1软件通过什么渠道能够买到? |
100个也可以同时显示![]() ![]() ![]() ![]() |
与ARDUINO类似,模块化,更简洁好用。![]() |
如果与Proteus 8 仿真软件结合将更加顺手~ |
如果与Proteus 8 仿真软件结合将更加顺手~~ |
Bascom avr 节省脑细胞的软件![]() ![]() ![]() |