⑴ 大工15春《单片机原理及应用》大作业题目及要求
大工15春《单片机原理及应用》大作业题目及要求,我能整理着做
⑵ 用89C52单片机和霍尔传感器测速,怎样获取传感器发出的脉冲数,并在LCD上显示出来
测一秒钟或者10秒的脉冲次数,然后进行数据处理比如×每周期的历程乘以36000,计算出速度,并显示
也可以联系我帮祝你来做,
有专门的霍尔传感器
⑶ 单片机大作业
单片机就是一个电脑,只不过是微型的,它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。
它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!
由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言(近几年,C语言也开始广泛被应用),它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。
目前最常用的单片机为MCS-51,是由美国INTEL公司(生产CPU的英特尔)生产的,89C51是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的,其内核兼容MCS-51单片机。
帮媳妇写作业啊?
⑷ 求:大工13秋《单片机原理及应用》大作业题目及要求(离线作业)
水电费v大闪光灯让工人房
⑸ 期末大作业 求51单片机控制走马灯的程序设计然后带图
单片机控制的马上程序,当然根据它的提示来操作就可以了
⑹ 有【单片机】方面的大神吗【200分悬赏】
经过修改,要求的功能,除了蜂鸣器报警,都能实现。PROTEUS截图如下。
程序将在我的网络空间给出。
蜂鸣器报警,从你的程序上修改,困难较大,建议改成LED发光报警。
程序如下:
-----------------------------------------------
A_BITEQU20H
B_BITEQU21H
TEMPEQU22H
;----------------------------------------------
ORG0000H
SJMPSTART
ORG0003H
LJMPX0_INT
ORG0050H
;----------------------------------------------
START:
MOVIE,#85H
MOVIP,#00000001B
MOVTEMP,#0
;----------------------------------------------
M_LOOP:
CALLDISPLAY
CALLDELAY2;延时约500ms
CALLDELAY2
JNBF0,NEXT
INCTEMP
MOVA,TEMP
CJNEA,#61,NEXT
CLRP0.1
MOVTEMP,#60
NEXT:
SJMPM_LOOP
;----------------------------------------------
X0_INT:
CPLF0
JBP0.1,X0_END
SETBP0.1
MOVTEMP,#0
X0_END:
JNBP3.2,$
RETI
;----------------------------------------------
DISPLAY:
MOVDPTR,#NUMTAB;指定查表地址.
MOVA,TEMP
MOVB,#10
DIVAB;A/B商=a,余数=b
MOVCA,@A+DPTR;查十位七段码.
MOVP1,A;送出十位七段码.
MOVA,B;个位在b
MOVCA,@A+DPTR;查个位七段码.
MOVP2,A;送出个位七段.
RET
;----------------------------------------------
NUMTAB:
DB0C0H,0F9H,0A4H,0B0H,099H
DB092H,082H,0F8H,080H,090H
;----------------------------------------------
DELAY2:MOVR5,#10
DEL3:MOVR6,#100
DEL4:MOVR7,#248
DJNZR7,$
DJNZR6,DEL4
DJNZR5,DEL3
RET
=======================
⑺ 大作业用AT89C52做一个光强检测与显示。
Proteus文件发给我
就可以做了
我做单片机的
⑻ STC89C52单片机数字温度传感器设计 (温度传感器是DS18B20) 寻高手帮在C语言程序中加个报警程序。急需。
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define upzero 1
#define downzero 0
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code seg[]={0xfe,0xfd,0xfb}; //加了PNP的情况下的段选
sbit DQ=P3^3;
sbit led=P1^1;
sbit DIN=P0^7;//小数点
//sbit LE=P3^0;
uint temperature;
uint wen,flag=0;
void delay(uchar k)
{
while(--k);
}
void delay1(uint k)
{
uint i,j;
for(i=0;i<k;i++)
for(j=0;j<121;j++);
}
void time0_init()
{
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
TH0=-30000/256;//定时50毫秒
TL0=-30000%256;
}
/*void init_display()//上电时数码管的显示
{
P2=0xff;
delay(3);
} */
void display(uint k)//显示温度
{
uchar ge,shi,;
ge=k%10;
shi=k/10%10; //shiwei
=k/100;
if(!flag)//温度为负数
{
P2=seg[0];
P0=0xbf;//负号 显示"-"
delay1(4);
P2=0xff;
P2=seg[1];
P0=tab[k/10%10];
delay1(4);
P2=0xff;
P2=seg[2];
P0=tab[k%10];
//DIN=0;
delay1(4);
P2=0xff;
/*P2=seg[3];
P0=tab[0];
delay1(4);
P2=0xff;
*/
}
if(flag)//温度为正数 由于实际的焊的板子只有三个数码管 所以,没加“+” 了。如 45.0度
{
//DIN=1;
P2=0xff;
P2=seg[0];
P0=tab[0];
delay1(4);
P2=0xff;
P2=seg[1];
P0=tab[ge];
DIN=0; // 问题问什么 加小数点要在P2口上加才能正常显示。
delay1(4);
DIN=1;
P2=0xff;
P2=seg[2];
P0=tab[shi];
delay1(4);
P2=0xff;
}
}
/*
每次读写前对DS18B20进行复位初始化。复位要求主CPU将数据线下拉500μ
,然后释放,DS18B20收到信号后等待16 - 60us然后60-240us的存在低脉冲
脉冲,主CPU收到此信号后表示复位成功。
*/
initial_ds18b20()//返回为0表示初始化成功
{
uchar j=0;
DQ=1;//这两条语句用不用不关紧要
delay(4);
DQ=0;
delay(180);//精确延时 730us 检测总线上是否有480-960微秒的低电平出现
delay(200);
DQ=1;
delay(15);//35us 如果有总线转为高电平后等待15-60微秒自动将总线电平拉低60-240微秒做出响应存在脉冲
j=DQ;
delay(50);//105us 至少要100秒以上
//return(j);
}
uchar read_byte(void)
{
uchar i=0,dat;
for(i=0;i<8;i++)
{
DQ=0;
delay(5);//15us
DQ=1;
if(DQ)
dat=(dat>>1)|0x80;//读1
else
dat=((dat>>1))|0x00;//读0
delay(25);
}
return(dat);
}
void write_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
delay(5);//15us
DQ=dat&0x01;//从低位到高位 一位一位的写入DS18B20,即控制它的工作方式
delay(10);//写所需时间
DQ=1;
dat>>=1;
delay(2);
}
delay(1);
}
uchar readwen(void)
{
//float tt;
uint j=200;
uchar templ=0,temph=0;
initial_ds18b20();
write_byte(0xcc);//跳过ROM
write_byte(0x44);
while(--j);
initial_ds18b20();
write_byte(0xcc);
write_byte(0xbe);
templ=read_byte();//低位
temph=read_byte();//高位
if(temph>0x7f)//处理数据 负数
{
temph=~temph;
templ=~templ+1;
flag=downzero;
temph<<=4; //
temph+=(templ&0xf0)>>4;//
wen=temph;//
delay(10);
}
else //正数
{
flag=upzero;
temph<<=4; // 左移四位 留一位符号位 因为高五位为符号位
temph+=(templ&0xf0)>>4;//低八位的高四位 即低八位的整数部分 再与temph相加得到一个新的八位
wen=temph;
delay(10);
}
return(wen);
}
void main()
{
time0_init();
//init_display();
while(1)
{
temperature=readwen();
display(temperature);
TR0=1;
}
}
void time0() interrupt 2 //50毫秒判断 温度
{
TR0=0;
TH0=-30000/256;
TL0=-30000%256;
if(temperature>25 || temperature<30)
led=~led;
delay(10);
}
这是我做的 能用。 用LED报警 你也可以添加个声音报警,温度都读出来了,加个报警那是很容易的事,真心怀疑这个程序是不是你自己写的