数码管

AVR单片机教程——数码管

烂漫一生 提交于 2019-12-01 07:29:52
先解答之前一个思考题:如果不把引脚配置为输出而写高电平,连接LED会怎样? 实验结果是,LED会亮,但相比于输出高电平的情况,亮度很低。这是为什么呢? 通过上一篇教程我们知道,引脚输入输出模式是由寄存器DDRx中DDxn位控制的,可以推断出 pin_mode 函数会改变一个引脚对应的DDxn值,输入为0,输出为1,而其复位后的值为0,即输入,因此如果不把引脚配置为输出,它的模式就是输入。类似地 pin_write 函数会改变PORTxn,其值为函数的第二个参数。 所以不配置输出而写高电平的结果就是,这一引脚的DDxn为0,PORTxn为1,是带上拉电阻的输入模式。上拉电阻相当于VCC接电阻后再接在引脚上,外部电路是引脚接一个电阻再接一个LED到地,总体可以等效为LED被一个电阻限流后接在VCC和地之间,因此LED会亮。 这个电阻的阻值是上拉电阻和本来的限流电阻的阻值之和,上拉电阻是比较大的(根据datasheet P432 Figure30-164可以估算出上拉电阻约40kΩ),相比于限流电阻就是外电阻的输出高电平的情况,LED上的电流小很多,因此亮度也相应低了。 这是一个模拟电路的问题,只用数字电路的分析方法是解决不了的。这个简答的问题也反映了单片机相关知识的综合性。 今天来讲数码管,就是开发板左边那两个日字。 早期数码管也成为辉光灯,依靠气体放点发光,现在一般指7段数码管

Python入门基础:七段数码管绘制

风格不统一 提交于 2019-11-29 11:53:55
1.在学习Python的过程中,运用所学的一些基础知识,进行一些简单的编程,可以收获很多乐趣。在生活中,LED灯无处不在,荧幕显示的广告词,给我们呈现出动态的视觉效果。下面,则以最简单的显示日期为例,绘制七段数码管。 2.何为七段数码管 数码管是一种价格便宜、使用简单的电子器件,广泛应用于价格较低的电子类产品中,其中,七段数码管最为常用。七段数码管(Seven-segment Indicator)由七段数码管拼接而成,每段有亮或不亮的两种情况,且包括一个小数点的位置。 3.在绘制数码管的显示动态时,可以自定义顺序,如图1.         图1 七段数码管的绘制顺序 4.源代码,包含部分注释 import turtle,datetime#引用 def drawGap():#绘制数码管间隔   turtle.penup()   turtle.fd(5) def drawLine(draw):#绘制单段数码管   turtle.pendown() if draw else turtle.penup()   turtle.fd(40)   drawGap()   turtle.right(90) def drawDigit(d):#根据数字绘制七段数码管,True或False决定是否抬起画笔   drawLine(True) if d in [2,3,4,5,6,8,9] else

数码管显示ADC采样的数值

瘦欲@ 提交于 2019-11-27 05:03:49
芯片:atmega16 软件:Atmel studio 7 ------------------------------------------------------------------------------------------------------------------ 数码管显示相关函数 unsigned char const Number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,};//显示的数值 //延迟函数 void tim(uint ms) { uint i,j; for(i=0;i { for(j=0;j<1141;j++); } } //数码管显示函数 // 硬件上用了2个573锁存,PA6控制573-1,PA7控制573-2 void Number_Show(unsigned int Num) { unsigned int Thousand,Hundred,Ten,One; Thousand=Num/1000; //取千位 Hundred=Num00/100; //取百位 Ten=Num000/10; //取十位 One=Num; //取个位 //显示百位 PORTB=Number[Hundred]; //送模码 PORTA|=(1<<PA6); //高电平时,573