stc单片机官网求助

单片机是干什么的?_百度知道
单片机是干什么的?
我有更好的答案
简单的说单片机就是一个智能控制芯片,它是将计算机微型化的CPU,所以只要你会它的语言,就可以让它按着我们自己的想法来自由工作,这是其它任何一种芯片都无法替代的,所以一块芯片由于具备了这样一种类似计算机的强大功能,所以被多数设备大量使用,最为重要的是很便宜才几元而已。
单片机主要作用就是智能控制,大学生机器人大赛中几乎全部是单片机来控制,比赛课题主要也是围绕单片机来设计开发的,并要求实现智能且具有自动化的功能作用,在我们的身边单片机也是无处不在的,比如家里电视、空调等遥控器的核心都是单片机,凡是具有智能或自动化特点的设备其核心控制器件均离不开它的身影,如家庭设备中得微波炉、电磁炉、豆浆机、全自动洗衣机、冰箱等等都是它的作用体现。
采纳率:53%
单片机其实就是一个可编程的集成电路,简称芯片,或曰IC,CPU
本回答被网友采纳
它是用少量的元件构成一个以CPU为中心的控制电路.具用操作简单运用范围广的特点.
通俗的话说,就是一个指挥控制一个电路的运行。。
单片机相当于一个微型计算机。你可以理解为你的电脑,不过配置相当的低,但可以通过向其写入程序达到一些简单的计算和控制目的。
其他2条回答
为您推荐:
其他类似问题
您可能关注的内容
单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。24小时热门版块排行榜&&&&
【悬赏金币】回答本帖问题,作者fanfan1214将赠送您 1 个金币
(正式写手)
在线: 45.2小时
虫号: 2031996
注册: 性别: GG专业: 机构学与机器人
单片机新手求助!
lz刚刚自学单片机,对于某些语言程序不是太明白,望大大们给解答一下!
sbit Leden=P1^2;
我知道sbit也是一种定义,Leden是一个变量,后面的P1^2是什么意思?!
P1跟2是否取异或?还是将P1的第三个(0,1,2,从0开始,所以是第三个)端口赋值给Leden?
如果后面出现程序:Leden=1;是否意味着就是对P1.2赋值1?
QQ截图30.jpg
& 猜你喜欢
已经有0人回复
已经有2人回复
已经有260人回复
已经有2人回复
已经有0人回复
已经有0人回复
已经有2人回复
已经有6人回复
已经有0人回复
已经有0人回复
已经有0人回复
& 本主题相关价值贴推荐,对您同样有帮助:
已经有10人回复
已经有9人回复
已经有8人回复
已经有15人回复
已经有5人回复
已经有7人回复
已经有22人回复
已经有22人回复
已经有25人回复
已经有12人回复
已经有7人回复
已经有10人回复
已经有10人回复
已经有5人回复
已经有3人回复
(初入文坛)
在线: 29.7小时
虫号: 1408675
注册: 性别: GG专业: 机构学与机器人
【答案】应助回帖
头文件有相关定义,P1^2对应p1.2的端口地址。
相关版块跳转
数理科学综合
我要订阅楼主
的主题更新
小木虫,学术科研互动社区,为中国学术科研免费提供动力
违规贴举报删除请发送邮件至:
广告投放与宣传请联系 李想 QQ:
QQ:&&邮箱:
Copyright &
MuChong.com, All Rights Reserved. 小木虫 版权所有求助。关于单片机-专业自动化论坛-中国工控网
求助。关于单片机
给TA发消息
加TA为好友
发表于: 19:10:00
我想用AT89C52的定时/计数器1对外部脉冲电平计数。脉冲电平是由一个可移动的机械触点在一块印刷成像梳子一样的覆铜片上移动而产生的(有点类似单触点开关不断地进行&闭合——断开——闭合……)。本来是在单片机内设置了10个脉冲计数值的,但触点只移动了两三格,单片机的计数值就满了。请问如何保证单片机在触点移动过程中对脉冲电平计数的准确性?恳请各位高手指点下。
给TA发消息
加TA为好友 发表于: 21:43:00 1楼
1.核实定时器/计数器的工作方式;2.在触点上并联电容,防抖动。如果有示波器可以检测输入波形。
给TA发消息
加TA为好友 发表于: 01:44:00 2楼
并联的电容该选多大值?顺便问一下,就是一上电的时候,单片机的P1~P3口引脚应该都是输出高电平的,所以接到P2口的8个LED灯应该是不亮的(采用灌电流接法)。但我在试验时发现一上电,接到P2口的8个LED灯快速地闪了一下才灭。不知道是什么原因?是不是上电那一瞬间的电流冲击引起的?如果是,该如何避免这种情况?谢谢!(PS:单片机是由输出标值为DC&5V/3A的电源供电)
给TA发消息
加TA为好友 发表于: 08:34:00 3楼
给TA发消息
加TA为好友 发表于: 10:04:00 4楼
先看看,是不是你的程序有遗漏.
给TA发消息
加TA为好友 发表于: 10:44:00 5楼
输入并联电容10~47VF(上拉电阻10K)。‘一上电,接到P2口的8个LED灯快速地闪’——查/EA,不可以悬空。
给TA发消息
加TA为好友 发表于: 11:41:00 6楼
请注清电容单位:法拉&F,毫法&mF,微法&uF,纳法&nF,皮法&pF.
给TA发消息
加TA为好友 发表于: 12:50:00 7楼
好的。谢谢楼上各位的热心帮助!
给TA发消息
加TA为好友 发表于: 14:58:00 8楼
我感觉这种信号过滤最好在程序里作,比如在信号输入的语句里加上一定的延时,这样就可以过滤掉不必要的杂波.
给TA发消息
加TA为好友 发表于: 19:45:00 9楼
有没有可以去抖动的芯片啊?比如用在键盘去抖动的芯片?
给TA发消息
加TA为好友 发表于: 09:17:00 10楼
在程序中,你采用的检测是检测电平,还是上升沿,还是下降沿?,在写的时候有没有明确这个?如果是检测沿的话,就存在两次计数了。
给TA发消息
加TA为好友 发表于: 13:54:00 11楼
程序的问题
给TA发消息
加TA为好友 发表于: 22:33:00 12楼
&xluyao007:&&引用  &加为好友  &发送留言&  &9:17:00&&&&&在程序中,你采用的检测是检测电平,还是上升沿,还是下降沿?,在写的时候有没有明确这个?如果是检测沿的话,就存在两次计数了。&&--------------------------------看书上上升沿对51系列的计数器是否起作用。
给TA发消息
加TA为好友 发表于: 09:46:00 13楼
周公,是不是可以在程序里加一个延时来过滤触点的抖动,或用外接电容来过滤?
给TA发消息
加TA为好友 发表于: 10:24:00 14楼
都可以,或者同时使用。注意延时时间和电阻电容的时间常数要小于脉冲最短周期。
给TA发消息
加TA为好友 发表于: 13:36:00 15楼
可以直接在输出信号上增加反向器就可以了。程序的防抖也很重要。
周点击排行
周回复排行求助,急!【单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:147,723贴子:
求助,急!收藏
导师给了一副软件流程图,让我用C语言把程序大致写出来。图中的逻辑很清晰但是我没接触过单片机开发之类的,有些地方不知道怎么处理。有没有哪位大神帮帮忙,谢谢了,给个思路也可以。
关键在于硬件方面i需要用什么方式来使基站板和主板之间的通信!编程方面主要还是通信的协议!
一步一步写就好啦
我怎么觉得,图中的逻辑一点也不清晰啊?
登录百度帐号求助!!!!【单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:147,723贴子:
求助!!!!收藏
电子血压计的,网上找的资料但是无法显示成上面的,是程序缺了什么部分?#define DAC_1
XBYTE[0x2000]#define DAC_2
XBYTE[0x4000]#define ADC_0
XBYTE[0x6000]#define ADC_1
XBYTE[0x6001]#define ADC_2
XBYTE[0x6002]#define ADC_3
XBYTE[0x6003]#define ADC_4
XBYTE[0x6004]#define ADC_5
XBYTE[0x6005]#define ADC_6
XBYTE[0x6006]#define ADC_7
XBYTE[0x6007]unsigned char
dspbuf[4]={0xef,0xef,0xef,0xef},sel=0,key_sta=0,key_unsigned int
adcount=0;sbit D_SER
=P1^0;sbit D_SRCLK
=P1^1;sbit D_RCLK
=P1^2;sbit KEY1
=P3^4;sbit KEY2
=P3^5;定时器初始化:void init_timer0(void)
TMOD TMOD =0X22;
//定时器0以方式2(自动重新装载8位计数器)自动计数
TL0 = 0X06;TH0 = 0X06;
//至初始值为6,每0.25ms进入一次中断
TL1 = 0Xe8;
TH1 = 0Xe8;TR0 = 1;TR1 = 1;
ET0 = 1;}中断设置:void init_special_interrupts(void)
PX1 = 1;PS
= 0;SCON=0x50;
//串行口方式1工作}数码管显示:void dsptask()
unsigned chara,b;
switch(sel)
case 0:a=0x01;
case 1:a=0x02;
case 2:a=0x04;
default:a=0x08;
} for(b=0x80,i=0;i&8;i++)
D_SRCLK=0;
D_SRCLK=1;
D_SRCLK=0;
b=b&&1; b=b&0x7f;
a=dspbuf[sel];
if(sel&=4)sel=0; for(b=0x80,i=0;i&8;i++)
D_SRCLK=0;
D_SRCLK=1;
D_SRCLK=0;
}键盘扫描:
//键盘值为1~8void key_service()
{ if(key_sta&0x01)
// key_sta.0=1
key_num=key_num+1;
key_sta=key_sta|0x01;
// 置key_sta.0=1
else if(KEY1)
key_num=key_num+5;
key_sta=key_sta|0x01;
// 置key_sta.0=1
}定时器0中断处理:void timer_isr() interrupt 1
EA=0; adcount++;
//计数,便于放气速度设置 key_service();
//键盘扫描
}扫描字显示转化:fdisp(unsigned char n,unsigned char m)
//将需要显示的数转化成相应的显示码
default:c=0x09;
dspbuf[m]=c;
}主函数:void main(void){
floatmax=0,min=0,minus=0,mmax=0,om=0;
intos=0,od=0,os0=0,os1=0,os2=0,od0=0,od1=0,od2=0;
unsignedchar t,i,flag=0,high=0,hhigh=0,ave=0;
init_timer0();
//初始化定时器0
init_special_interrupts();
//设置中断
for(i=0;i&4;i++){fdisp(0,i);}
dsptask();
if(key_num==1)
//开始放气
key_sta=key_sta&0
// 置key_sta.0=0
if(t&max)max=t;
elseif(t&min) min=t;
if(adcount&199)
adcount=0;
DAC_1=0xf0;
//由D/A输出来控制放气速度
if(min!=0&&max!=0)
{minus=max-if(minus&mmax){mmax=ave=}}
//求出振荡波峰峰值最大时平均压对应的电压值
elseif(key_num==2)
//停止放气,求出所需数值并显示
key_sta=key_sta&0
if(adcount&199)adcount=0;
om=ave/(28*3.5*0.133);
//常数28为放大倍数,根据硬件的实际情况可有所调整
os=om*0.8;
od=om*0.5;
//根据固定比率法求出收缩压和舒张压,单位为mmHg
if(os&140||od&90)high=1;
if(os&160||od&100){high=0;hhigh=1;} //收缩压大于160mmHg为超高血压,大于130mmHg为高血压
os2=os/100;
os=os%100;
os1=os/10;
os0=os%10;
od2=od/100;
od=od%100;
od1=od/10;
od0=os%10;
if(flag=0&&adcount&199)
//显示收缩压
adcount=0;
fdisp(os0,0);
fdisp(os1,1);
fdisp(os2,2);
fdisp(0,3);
dsptask();
elseif(flag=1&&adcount&199)
adcount=0;
fdisp(od0,0);
fdisp(od1,1);
fdisp(od2,2);
fdisp(0,3);
dsptask();
//显示舒张压
if(adcount&199!=key_num!=3)
if(high==1)
fdisp(1,0);
fdisp(0,1);
fdisp(0,2);
fdisp(0,3);
dsptask();
//显示高血压
elseif(hhigh==1)
fdisp(2,0);
fdisp(0,1);
fdisp(0,2);
fdisp(0,3);
dsptask();
//显示超高血压
for(i=0;i&4;i++)fdisp(0,i);
dsptask();
//显示血压正常
}while(key_num!=3);
elseif(key_num==3)
key_sta=key_sta&0
// 置key_sta.0=0
for(i=0;i&4;i++){fdisp(0,i);}
dsptask();
max=0,min=0,minus=0,mmax=0,om=0;
os=0,od=0,os0=os1=os2=0,od0=od1=od2=0;
if(adcount&199)adcount=0;
elsekey_sta=key_sta&0
// 置key_sta.0=0;
我的DAC_10xf0老提示未定义哪里出错了
有正确的代码吗,楼主
楼主,问题解决了吗
登录百度帐号

我要回帖

更多关于 单片机原理及应用 的文章

 

随机推荐