一个简单的单片机的问题

作者&投稿:陈没连 (若有异议请与网页底部的电邮联系)
单片机一个简单的问题~

原本不打算回答的,因为第一信息太少,第二没分。
不过看在楼主级别很高的面上回答一下。
你只有5V电,那么升压问题如前面那位所述。
你传感器输出是什么类型的?你没说,我只好猜,一般24V的三端传感器,不会太复杂,输出模拟量的可能性高,但不管是数字量还是模拟量,如果预估会超过5V,那么简单的做法就是2个电阻分压就行。
分开说:
数字量稳妥点用光耦隔离,则不用太多考虑输入电压。
模拟量则需要运放跟随后再降压,然后做AD
如果是工控用的则有可能是4-20MA,那你还需要电流采样电路,电流转成电压后再AD。

PS:你都16级了,应该知道怎么什么样的提问描述才是好问题吧?

什么键盘矩阵!矩阵里几个键同时闭合,能检测出来吗?

如果是这种情况,用74HC165并行转串行芯片,把每个开关接到芯片的输入端口上,这样通过串行口就能读取端口的状态,你的是50个左右的开关,要至少7片这样的芯片啊。
看这里,有详细介绍的:
http://redbug.21ic.org/user1/405/archives/2007/35130.html
http://www.elecfans.com/article/88/131/app/2008/2008092212841.html

使用定时器,程序如下:
ORG 0000H
SJMP START
ORG 000BH
LJMP INT_T0
START:
MOV TMOD, #0x01; //定时器0方式1
MOV TH0, #0x3C;
MOV TL0, #0xB0; //12M晶振,50mS中断一次
MOV IE, #82H
SETB TR0 ; //开启T0
MOV R7, #2
SJMP $
INT_T0:
MOV TH0, #0x3C;
MOV TL0, #0xB0; //12M晶振,50mS中断一次
DJNZ R7, INT_END
MOV R7, #2
CPL P1.7
INT_END:
RETI
;完

小问题,不值得使用定时器。
ORG 0000H
CPL P1.7
LCALL DL50MS
LCALL DL50MS
SJMP 0000H
DL50MS:
MOV R6, #100
MOV R7, #250
DJNZ R7, $
DJNZ R6, $ - 4
RET

#include<at89x51.h>

void main()
{
TMOD = 0x01; //定时器0方式1
TH = 0x3C;
TL = 0xB0; //12M晶振,50mS中断一次

EA = 1; //总中断
ET0 = 1; //T0中断
TR0 = 1; //开启T0

while(1); //循环等待中断到来
}

void t0() interupt 1 //定时器0中断入口
{
unsigned char cnt;
TH = 0x3C;
TL = 0xB0; //12M晶振,50mS中断一次

cnt = cnt+1;

if(cnt==2) //每2次,就是100ms取反P1.7
{
cnt = 0; //清0计数器
P1^7 = ~P1^7;
}
}

顺便说一句,就100ms的时间,从发光二极管来看,可能是看不出闪烁效果的,可以将cnt的阈值改大,比如为10,那么就是500ms,就能看出闪烁的效果了。

是的,单片机IO口提供的电流小,所以要外加驱动电路。我一般用ULN2003(输出能力有500mA),或者你还嫌驱动能力不够,用三极管驱动。
驱动的意思,举个简单的例子,一个继电器需要50mA的电流才能使其动作,那么你将单片机的IO口直接接到继电器,单片机提供不了那么大的电流,继电器不会动作。
就好像1个人的力气是有限的(驱动能力有限),拉动不了一辆卡车,你就需要找来一辆车(驱动芯片或三极管),来拉动这辆卡车。

大电流是相对的
io口的驱动能力不是很强
51单片机IO口为集电极上拉输出方式,高电平输出电流等于上拉电阻的电流,这个电流比较小,低电平输出是内部晶体管吸收的电流,最大可以达到10mA,但是整个端口的总电流不能超过24mA。
电平低于0.7V就是低电平,高于1.8V就是高电平。在这个之间不确定。

是的,驱动其实也可以理解为控制,单片机的灌电流和拉电流都比较小,根据单片机的不同,一般单个IO拉灌电流最大也就几毫安,而数码管的电流比较大,有的多达几十毫安,这样直接输入到单片机IO里面,直接把单片机IO烧掉。三极管的驱动其实是利用了三极管的开关特性!ULN2003里面其实是由达林顿组成的,你看下ULN2003内部结构就知道了!


初学单片机的一个问题!
你说的是单片机的汇编语言 汇编语言推荐你看 胡汉才的书(清华大学)讲的非常详细 首先 一条指令代码比如 MOV R1,#01H 在单片机需要运行一段时间的,那么运行时间即运行几个时钟周期;另外,这条指令存在需要占用空间,那么在地址空间就需要给它分配一个空间,那这个空间就是它所要占用的字节数。指令...

单片机程序菜鸟问题
举个16进制数的加法的例子,例如0x445566 + 0xCC22AA = 0x1107810明白了吗,最后那一句就是取出最高位的进位的,也即最高位第七位。再教你一个小知识,两个数相加,结果最多只比原来数字多一位,并且多出的这位数字不会超过1,比如9+9,最多只是18,即十位是1,不会是2到9的,在比如说99...

51单片机C程序编程问题
初学者问的问题可能让你见笑,请见谅!第一个是 { TMOD=0x01;TH0=-(50000\/256);TL0=-(50000%256);ET0=1;TR0=1;EA=1;} 为什么TH0要用负值?这些寄存器中其它值不用赋初值是不是默认是0.(如TCON,只是赋了TR0,)\/\/\/答:负值,相当于满值减去相应的正值,比如int型变量n \/\/\/ n=-1;...

一个简单的51单片机问题
将你的while()函数改为下面这个函数:while(1){ P1_0=0;sleep(1000);P1_0=1 sleep(1000);} 你再试试这个。蜂鸣器不断响,就是因为给它高低电平,它就能发声。

单片机程序问题 本人初学单片机看到一个例程不知道是什么意思,屏大家帮 ...
这个是最简单的单片机点灯程序,而且是最浪费单片机资源的一种程序,不过也是最初学习者便于理解的一种方式:第一:定义LED1,LED2及LED3分别连接到P1.0 \\P1.1及P1.2口线上。第二:进入主程序后,初始化变量i=0;(便于等会延时使用)第三:LED1=0;如果是单片机P1.0口接LED的负极,则这个...

单片机的菜鸟问题。
你新建工程选完芯片之后会出现一个对话框问你要不要把STARTUP.A51这个文件添加到你的工程中,确定或取消都行。确定的结果是:如果你没添加你的C语言代码文件进去的话,直接编译就会出现你说的情况,或者你编的是汇编的程序,编译后也会出现你说的情况。建议是:用汇编的话取消,用C的话确定。

单片机一个简单的问题
可以说8位的单片机储存单元就是8位。也以说所有单片机的存储单元的是8位的。因为很多16位以上的单片机的数据存储器都是可以按照字节操作的。但一般情况下16位的单片机可以按字节(8位),也可以按照字(16位)操作 而32位单片机可以按8、16、32位操作。

51单片机一道简单的题目,请教各位大神
ORG 1000H START:MOV R0,#20H MOV R1,#30H MOV R2,#00H CMP: MOV A,@R0 INC R0 CJNE A,#00H,CMP INC R2 DJNZ R1,CMP MOV 51H,R2 END

51单片机通信 的一个简单问题
5、移位完成后,单片机开始做最后一件事:将9位移位寄存器的高8位写入SBUF,将最低位写入RB8,然后置RI请求中断。其中第5步并不是说停止位接收完成后就自然会发生的,需要同时满足两个条件,否则接收到的数据会丢失:a、RI=0:如果RI=1说明上次中断未处理完,此时不会执行5 b、SM2=0,或者接收...

单片机简单的编程题!
R0=23H,R1=28H,(20H)=20H,(21H)=00H,(22H)=17H,(23H)=01H,,(24H)=00H,(25H)=A0H,(26H)=6FH,(27H)=76H ,(28H)=00H 其实这个问题主要检查的是DJNZ语句对程序状态寄存器的影响!虽然其为自减语句,但对借位标志(C)无影响。

宁明县17046519582: 单片机一个简单的问题 -
主环盐酸: 是的,单片机IO口提供的电流小,所以要外加驱动电路.我一般用ULN2003(输出能力有500mA),或者你还嫌驱动能力不够,用三极管驱动.驱动的意思,举个简单的例子,一个继电器需要50mA的电流才能使其动作,那么你将单片机的IO口直接接到继电器,单片机提供不了那么大的电流,继电器不会动作.就好像1个人的力气是有限的(驱动能力有限),拉动不了一辆卡车,你就需要找来一辆车(驱动芯片或三极管),来拉动这辆卡车.

宁明县17046519582: 一个简单的单片机问题 -
主环盐酸: 在P1.0口上接个二极管. 电压自然就降下来了.

宁明县17046519582: 单片机的简单问题 -
主环盐酸: 首先:时钟周期是晶振频率的倒数,即6M晶振对应的时钟周期是0.167微秒;其次:机器周期是时钟周期的12倍,即机器周期是2微秒.指令周期根据指令的复杂程序分为1周期、2周期和4周期指令.指的是执行...

宁明县17046519582: 单片机 简单问题 -
主环盐酸: temp的值变为temp按位与16进制数0F.例:假设temp=00110011,temp=temptemp值变为:00000011."按位与"就是一位一位的取“与”,0与0是0,0与1是0,1与1是1....如果长期学单片机请...

宁明县17046519582: 一个很简单的单片机问题 *** error 65: access violation at C:0xFFF7 : no 'execute/read' permission
主环盐酸: 应该是配置的问题,将编译空间改为SMALL再试试,另外,主函数应该是main

宁明县17046519582: 一个简单的单片机c语言程序问题 -
主环盐酸: #include <reg52.h> /*C52单片机寄存器、端口定义.比如程序中的p0,p1就定义在reg52.h中.*/#include <absacc.h> /*用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、...

宁明县17046519582: 一个简单的单片机问题.举个例子mov a,#03h mov p1,a .P1各口的电压 -
主环盐酸: 03h从高到底依次为:00000011,所以依次付给P1口就是:00000011.P1口属于TTL电平的,所以高电平接近5V,低电平接近0V,所以P1.7--P1.2是低电平(0v)P1.1和P1.0是高电平(5v). 不错哦,看来你是新手,建议你加几个单片机的群,对你提高很有帮助!

宁明县17046519582: 一道单片机的简单题?
主环盐酸: 1.实现函数Y表达式,已知变量X和函数Y存放于DS:[20H]和DS:[21H]中. Y= |1 (X>0) ,

宁明县17046519582: 一个很简单的单片机C语言的485通信的问题 -
主环盐酸: while(TI==0)一直在等待,等待发送结束后再进行下面的程序串口硬件在发送完毕后会将T1置1,这时就会退出循环执行下面的代码

宁明县17046519582: 求助:单片机的简单编程题 -
主环盐酸: 1.程序如下:编程思想是把起始地址30H放在R0中,然后用寄存器间址@R0表示地址里存放的数,并用CJNE指令和#0AH比较,不一样就跳转至NEXT,地址加1继续比,比之前先判断下R0中的数等于#50H吗,等于的话表示任务完成了,不用再...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网