如何制作单片机简单电路

制作单片机驱动数码管电路 把七或八只发光二极管组合在一个模件上组成了个8字和小数点,用以显示数字。为了减少管脚,把各个发光管的其中同一个极接在一起作为共用点,因此就产生了共阳极和共阴极数码之说。共阳管就是把各个发光管的正极接在一起,而共阴管就刚好相反。见下图:
大部分的逻辑ic的吸收电流要强于输出电流。因此,大家都爱使用共阴极的数码管,因为可选的ic多些。很可惜,我的这组数码管是共阳的,因此公共端我打算用三级管来驱动。最常用的s9012,首先我得计划好电路方式,就采用最常用的动态扫描显示。先搭建最简电路,调试出需采用元件的参数。
先不接上图的r2和74hc244,将数码管一个段直接接地。调节r1,测得s9012基极电流为0.21ma时集电极也就是数码管上已有40ma,说明放大倍数足够了。这时接上r2和74hc244,调节r2使数码管电流控制在15ma,这样当8个段一起点亮时三极管上得通过120ma的电流。而基极上需要0.63ma,为了减小三极管的负荷应使三极管过饱和,,调节r1使基极电流为2ma,此时测得集电极和漏极之间的电压约0.1v。好!此时r1为2k。r2为240欧姆。
接下来就是确定电路。电路的接口与at89s51间有三组接口:段码、位码和电源。为了让at89s51独立出来这三级接口都采用插针做接口,用排线自由连接到at89s51的p1-p3口,电源用短路帽连接,完成后的板子见下图:
单片机制作的点焊机电路与程序
#include《reg51.h》
#define u8 unsigned char
#define u16 unsigned int
u8 b1,ss1,ss2,i,js;
bit dd;
sbit out=p3^5; ///输出控制口
sbit s0=p3^0; ///启动键
sbit s1=p3^1; ///设置键
sbit s2=p3^2; ///减
sbit s3=p3^3; ///加
sbit ge=p3^7;
sbit shi=p3^4;
char code shu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //数码管段码
void delay(u16 q) //普通延时函数
{
char d;
while(q--)
for(d=123;d》0;d--);
}
void zd_init() //中断初始化子函数
{
ea=1; //打开总中断开关
et0=1; //打开定是器0开关
tr0=0; //定时器0开始工作
tmod=0x01; //选择定时器0工作模式1 16位定时器
th0=(65536-30000)/256; //定时器高8位装初值 定时50ms
tl0=(65536-30000)%256; //定时器低8位装初值
}
void xianshi(u8 ss,u8 gg) //显示函数
{
if(b1==2) //判断各十位数闪烁标志位
{
if(dd)
{
ss=10;
}
}
if(b1==1) //判断各位数闪烁标志位
{
if(dd)
{
gg=10;
}
}
p1=shu[ss]+0x80;
shi=0;
delay(2);
shi=1;
p1=shu[gg];
ge=0;
delay(2);
ge=1;
}
void jianpan() //键盘扫描子程序
{
if(s3==0) ///设置建
{
delay(5);
if(s3==0)
{
while(s3==0)xianshi(ss1,ss2); //松手检测
b1++;
tr0=1;
if(b1》=3)
{
b1=0;
tr0=0;
}
}
}
if(b1!=0) ///判断是否按下设置健
{
if(s2==0) ///加建
{
delay(5);
if(s2==0)
{
while(s2==0)xianshi(ss1,ss2); //松手检测
if(b1==1) ////判断各位数加
{
ss2++;
if(ss2==10)ss2=0;
}
if(b1==2) ///判断十位数加
{
ss1++;
if(ss1==10)ss1=0;
}
}
}
if(s1==0) //减键
{
delay(5);
if(s1==0)
{
while(s1==0)xianshi(ss1,ss2); ///松手检测
if(b1==1) ///判断各位数减
{
ss2--;
if(ss2==255)ss2=9;
}
if(b1==2) ////判断十位数减
{
ss1--;
if(ss1==255)ss1=9;
}
}
}
}
if(b1==0) ///启动电焊键
{
if(s0==0)
{
delay(5);
if(s0==0)
{
while(s0==0);
js=ss1*10+ss2;
if(js!=0)
{
tr0=1;
out=0;
}
}
}
}
}
void main()
{
zd_init(); //中断初始化
while(1)
{
xianshi(ss1,ss2); //显示子函数
jianpan(); //键盘子程序
}
}
void time0() interrupt 1 using 0 //中断函数
{
th0=(65536-30000)/256; //定时器高8位装初值 重装初值
tl0=(65536-30000)%256; //定时器低8位装初值 重装初值
if(b1!=0)
{
i++;
if(i==10) //数码管的闪烁
{
i=0;
dd=~dd;
}
out=1;
}
else
{
js--;
if(js==0) //点焊延时输出
{
tr0=0;
out=1;
}
}
}

STC12C2052AD AD转换C程序 +PWM输出功能实现
Ti29红外热像仪的技术指标及功能特点
我国工业机器人该怎么卖
麦奇正在通过区块链技术改变传统的中心化社交模式
电容IC设计方案以及电容降压原理图设计
如何制作单片机简单电路
第五代产品Dual 7V2000 TAI Logic Module正式发布
RC有源滤波器的设计
中国会研制像“鱼鹰”的双旋翼直升机吗?不是会不会,应该是什么时候服役
苹果为何屡次败在基带芯片上?
在争夺人工智能时代制高点,谁能成为AI芯片赢家
光缆是什么?光缆有哪些常用类型?光缆型号是什么意思?
浅谈风光储风能并网
常见电光源分类
Vishay新款N沟道TrenchFET功率MOSFET再度刷新导通电阻的最低记录
英特尔第三代至强可扩展处理器推出,解决方案将用于增强远程学习
新型梯度“单晶”富锂正极材料
三星撤出更新One UI 3.0 Android 11系统
浪涌Surge整改的意义与分析?
英特尔是如何一步步错失智能手机芯片商机的?