导航:首页 > 操作系统 > 单片机大作业实例

单片机大作业实例

发布时间:2022-08-17 19:07:41

⑴ 大工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报警 你也可以添加个声音报警,温度都读出来了,加个报警那是很容易的事,真心怀疑这个程序是不是你自己写的

阅读全文

与单片机大作业实例相关的资料

热点内容
linux局域网搭建服务器 浏览:690
python编译器mac 浏览:293
windows的doc命令 浏览:463
nfc全加密门禁卡 浏览:636
身份信息被加密 浏览:482
我的盐城app怎么添加不了家庭成员 浏览:493
php商城并发 浏览:348
熊猫绘画app怎么做出大佬的笔刷 浏览:603
云存储服务器知识 浏览:461
服务器cpu是什么指令集 浏览:590
糖猫t10怎么安装app 浏览:992
电脑加密u盘怎么使用 浏览:517
linux如何升级php版本升级 浏览:841
二级程序员c语言难度 浏览:352
批处理编译qt 浏览:66
铁友app怎么查询机票订单 浏览:197
myeclipselinux破解版 浏览:417
批处理命令语法不正确 浏览:889
pdf合并成一个pdf在线 浏览:383
柱加密区构造要求 浏览:516