单片机相关论文材料Word文件下载.docx

上传人:b****1 文档编号:1458436 上传时间:2023-04-30 格式:DOCX 页数:36 大小:159.66KB
下载 相关 举报
单片机相关论文材料Word文件下载.docx_第1页
第1页 / 共36页
单片机相关论文材料Word文件下载.docx_第2页
第2页 / 共36页
单片机相关论文材料Word文件下载.docx_第3页
第3页 / 共36页
单片机相关论文材料Word文件下载.docx_第4页
第4页 / 共36页
单片机相关论文材料Word文件下载.docx_第5页
第5页 / 共36页
单片机相关论文材料Word文件下载.docx_第6页
第6页 / 共36页
单片机相关论文材料Word文件下载.docx_第7页
第7页 / 共36页
单片机相关论文材料Word文件下载.docx_第8页
第8页 / 共36页
单片机相关论文材料Word文件下载.docx_第9页
第9页 / 共36页
单片机相关论文材料Word文件下载.docx_第10页
第10页 / 共36页
单片机相关论文材料Word文件下载.docx_第11页
第11页 / 共36页
单片机相关论文材料Word文件下载.docx_第12页
第12页 / 共36页
单片机相关论文材料Word文件下载.docx_第13页
第13页 / 共36页
单片机相关论文材料Word文件下载.docx_第14页
第14页 / 共36页
单片机相关论文材料Word文件下载.docx_第15页
第15页 / 共36页
单片机相关论文材料Word文件下载.docx_第16页
第16页 / 共36页
单片机相关论文材料Word文件下载.docx_第17页
第17页 / 共36页
单片机相关论文材料Word文件下载.docx_第18页
第18页 / 共36页
单片机相关论文材料Word文件下载.docx_第19页
第19页 / 共36页
单片机相关论文材料Word文件下载.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机相关论文材料Word文件下载.docx

《单片机相关论文材料Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机相关论文材料Word文件下载.docx(36页珍藏版)》请在冰点文库上搜索。

单片机相关论文材料Word文件下载.docx

EX0=1;

PX0=0;

IT1=1;

//直流电机转速计数初始化

EX1=1;

PX1=0;

ET1=1;

//直流电机转速定时初始化

PT1=1;

TL1=0x00;

TH1=0x00;

TR1=1;

PT0=0;

//步进电机调速和直流电机自动调速初始

ET0=1;

TL0=0x00;

TH0=0x00;

TR0=1;

EA=1;

P1=0xf0;

DAC_ADDR=0x7f;

}

voidmain()

unsignedcharLEDval=0x0f,i=0,j=0;

unsignedinttemp,step_delay=0;

Initial();

while

(1)

{

//键盘初始化

/*///////跑马灯程序////////////////////////*/

for(i=1;

i<

10;

i++)

for(temp=0;

temp<

256;

temp+=i)

{

LED_ADDR=temp;

delay_nms(80);

}

}

for(i=0,j=0x01;

LED_ADDR=j;

delay_nms(100);

j=j<

<

1;

if(j==0)

{

i++;

j++;

}

for(i=0,j=0x80;

{

LED_ADDR=j;

delay_nms(60);

j=j>

>

j=0x80;

}

}

在以上的程序中:

为51单片机中定义的特殊功能寄存器功能头文件。

为C语言头文件。

为延时函数。

为键盘控制函数。

initial()函数为预置函数,为后续键盘控制程序,定时器中断程序,直流电机,步进电机驱动程序预置特殊功能寄存器。

在main()函数中先对变量temp进行加i计数,采用双重循环方式,第一遍i=1,temp计数,每次加1,计数范围从0——255,达到256归零。

每计数一次,将结果送LED_ADDER。

LED_ADDR地址定义为0X7FFF,即将temp结果经P0口送锁存器74HC573,然后经发光二极管显示。

第二遍i=i+1=2,temp=temp+i,即temp每次加2,直到temp<

256再对temp归零。

这一循环过程直到i=9,在每次送LED_ADDER地址(P0口)显示后,调延时程序延时200ms左右,以便让学生看清楚显示过程。

然后进入跑马灯左移位程序。

先将j=1,LED_ADDR=j,delay_nms(100);

j=j<

1,(左移一位)。

再将LED_ADDR=j……直到j=0,再将j=1……这样循环左移10遍。

再进入循环右移过程:

先将j=0x80(即最左位置1),LED_ADDR=j;

延时,j=j>

1(右移1位),LED_ADDR=j;

直到j=0(右移8位后)再将经=0x80……如此循环10遍,再返回程序初始位置。

由于51机指令系统多数为单机器周期指令,运行速度是μs级,肉眼无法鉴别temp的计数过程,故在每次执行LED_ADDR=temp指令后,要调用延时函数delay_nms(80)使temp的值经P0口送74HC573锁存器后,保存显示在发光二极管400ms左右。

1-2.MCS-51/MCS-52单片机键盘控制及键号显示电路的软硬件设计。

1MCS-51/MCS-52单片机键盘控制及键号显示电路的硬件设计。

图1-2

51单片机键盘控制及键号数码显示硬件电路如图1-2,51单片机的P1口控制键盘,其中P1.0,P1.1,P1.2,P1.3为列线,P1.4,P1.5,P1.6,P1.7为行线。

四根行线各接1只5.1K电阻,再与电源VCC(+5V)相连。

四根行线同时也与74HC21(四输入与门)的输入端口相连,其输出端与51单片机的外中断0输入端P3.2相连。

因为P1口通过指令设置为0xF0,即“11110000”,四列线均为“0”,如果没有键按下,则四个行线均为高电平。

74HC21输出为高电平。

当有任意一个键被按下,则如图1-2所示,则74HC21的四个输入端总有一个输入为低电平。

此时的74HC21的功能为:

只要有一个输入端为低电平,则其输出端为低电平。

此下降沿触发51单片机的外中断0而引发中断服务(搜索中断键号),所以对键盘控制方式采用的是中断搜索方式。

键号的数码显示方式仍采用P0口输出给两片4511译码器,如图1-4。

DC4511为四位BCD码输入,译码后产生7段数码管显示信号驱动数码管进行键号显示。

图1-3

图1-4

4511的6脚,2脚,1脚,7脚为8421BCD码的输入端,引脚

为输入使能端,低电平有效。

B1为工作使能端,高电平有效。

其控制功能见表1-1。

表1-1

输入端

输出端

B1

LT

LE

DCBA

gfedcba

1

0001

0000110

0010

1011011

0011

1001111

…………………

……………………

×

×

0000000

1111111

当控制地址为0xBFFF时,(即P2状态为10111111),与

配合,驱动74HC02至4511的第5脚LE端,打开4511的锁存器,键号的显示由P0口输出。

见图1-2。

P0口的P0.3,P0.2,P0.1,P0.0与4511-1的D、C、B、A相连,再经译码后驱动数码管Ⅰ,显示键号的个位。

而P0的P0.7,P0.6,P0.5,P0.4与4511-2的D、C、B、A相连,经译码后驱动数码管Ⅱ,显示键盘号的十位数。

2MCS-51/MCS/52单片机键盘控制及键号显示电路的软件设计。

键盘控制程序采用外中断的方式进入,即有人按下任意一个键,则外中断0启动,外中断0的中断服务程序主要采用两级循环程序嵌套的方式。

键盘号码变量为一个无符号的8位nkeynumber。

外循环中首先将P1.3设置为0,P1其它端口设置为1,再读入P1口状态,进入内循环程序。

第一步测试P1.4是否为0,(见图1-2及扫描键盘子程序scan_key.h)。

若是,则是0号键被按下,将键号0送nkeynumber,退出。

若不是,则检查P1.5是否为0,若是,是4号键被按下,则将键号4送nkeynumber,退出。

若不是,则检查P1.6是否为0………一直检查到P1.7。

若没查到键号,则退出内循环,进入外循环,再将P1.2置0,P1其它端口置1,再读入P1口状态,又进入内循环,再分别查1,5,9,13号键。

若是其中某键,则将键号送nkeynumber,若没查到键号,则退出内循环,进入外循环,将P1.1置0,P1其它端口置1,读入P1口状态,又进入内循环,再分别查2,6,10,14号键。

若是其中某键,则将键号送nkeynumber,若没查到键号,则退出内循环,进入外循环,最后将P1.0置0,查找最后的四个键号。

当查找到键号后,对nkeynumber进行2-10进制数的处理,过程是:

nkeynumber/10<

4,即取得nkeynumber除以10后取整再左移4位,由P1.7—P1.4输出键盘号码的十位给4511-Ⅱ,将nkeynumber%10取余数,即键盘号码的个位由P1.3—P1.0输出给4511-Ⅰ。

键盘中断及控制,键号显示子程序如下:

/****************扫描矩阵键盘子程序scan_key.h******************/

#ifndef_SCAN_KEY

#define_SCAN_KEY

#defineSEG_ADDRXBYTE[0xbfff]

#defineLED_ADDRXBYTE[0x7fff]

unsignedcharnKeyNumber;

voidint0()interrupt0

inti,j;

intPin1;

EX0=0;

delay_nms(20);

//if(P3_2==0)

//{

for(i=0;

4;

i++)//i代表行,j代表列,每列逐行扫描

P1=0xff&

(~(0x01<

3-i));

Pin1=P1;

for(j=0;

j<

j++)

if(((Pin1>

(4+j))&

0x01)==0)

{

nKeyNumber=i+j*4;

i=4;

j=4;

P1=0xf0;

SEG_ADDR=(nKeyNumber/10<

4)+nKeyNumber%10;

delay_nms(20);

EX0=1;

return;

}

//}

}

#endif

1-3MCS-51/MCS/52单片机控制直流电机转速电路的软硬件设计。

1MCS-51/MCS/52单片机控制直流电机转速电路的硬件设计。

如图1-5所示,将P0口的P0.0-P0.7与A/D转换器0832的D0-D7相连,单片机的待转换数据由P0口输出给8位D/A转换器0832的输入寄存器,写入地址为0xDFFF,即89S51的P2.5=0与

同时为低,经74HC02反向后,则8位输入寄存器的输入使能端ILE为高,将D0—D7的8位转换数据送入0832寄存器,DAC0832内部两级寄存器接成直通状态,即0832的

,XFER均接低电平,所以DAC0832的D/A转换器对输入的数据信号实时进行转换输出。

输出端口为IOUT1和IOUT2。

输出的模拟信号由两级运放LM324放大馈送至直流电机。

LM324均由负极端口输入而正极端口接地,构成两极反向放大电路。

故最终给电机的直流电流信号与DAC0832的输出端口的电流电压信号为同相信号,运算放大器的供电电压为±

9V。

图1-5

直流电机一端接LM324的输出,另一端接地。

由于LM324用±

9V供电,则LM324的输出电压则会以0V为中心点,对DAC0832的输出端的输出信号进行电流电压放大,使LM324的输出在+8V—-8V之间成比例地浮动,从而驱动直流电机以不同速度正转和反转。

2MCS-51/MCS/52单片机控制直流电机转速电路的软件设计。

如下程序所示,用多分支语句SWITCH语句对不同按键下对0832数模转换器赋给不同的转换值。

当键值变量nkeynumber的值为0时,给数模转换器0832赋值7F,其十进制值为127。

经模数转换后,在LM324输出给直流电机的电压为0V,使得直流电机停转。

同时,经步进电机控制端口赋值为SEG_ADDR=0x00,所以步进电机停转。

当键值变量nkeynumber的值为1时,给数模转换器0832的数值量为0x00,经模数转换LM324比例放大后,赋给直流电机电压为-8V,直流电机以反向最快速度转动,转速达到48转/S。

当键值变量nkeynumber的值为2时,给数模转换器0832的数值量为25,经模数转换LM324比例放大后,赋给直流电机电压为-6.8V,直流电机以39转/S左右反向转动。

键值由1逐步增加到6,数模转换值逐次递增至25,LM324输出电压,以每次递增1.3V左右。

当键值为6时,赋给模数转换器的数值为127,此时LM324输出值为0V,直流电机停止转动。

当键值nkeynumber=7时,模数转换赋值为150,经过模数转换器后由LM324比例放大输出电压为+1.2V,直流电机以2转/S左右的速度正向转动。

当键值变量nkeynumber的值为8时,给数模转换器0832的数值量为175,经模数转换LM324比例放大后,赋给直流电机电压为+2.5V,直流电机以10转/S正向转动。

当键值逐次增大,赋给数模转换器的数值以25的速度递增,LM324则以每次1.3V逐次递增。

当键值变量nkeynumber的值为12时,LM324赋给直流电机电压为+8V,直流电机正向运动,速度为48转/S。

/***********************************/

/*键盘中断及直流电机手动变速速控制*/

/**********************************/

#defineSEG_ADDRXBYTE[0xbfff]//数码管地址

#defineLED_ADDRXBYTE[0x7fff]//跑马灯地址

#defineDAC_ADDRXBYTE[0xdfff]//直流电机地址

#defineSTEP_ADDRXBYTE[0xefff]//步进电机地址

voidint0()interrupt0

EX0=0;

delay_nms(20);

for(i=0;

P1=0xff&

Pin1=P1;

for(j=0;

if(((Pin1>

{

nKeyNumber=i+j*4;

i=4;

j=4;

P1=0xf0;

SEG_ADDR=nKeyNumber/10+(nKeyNumber%10<

4);

//交换键值位置并赋键值

//////////*根据键盘键值,调整直流电机转速*///////////////////////

switch(nKeyNumber)

{

case0:

DAC_ADDR=0x7f;

SEG_ADDR=0x00;

break;

case1:

DAC_ADDR=0x00;

case2:

DAC_ADDR=25;

case3:

DAC_ADDR=50;

case4:

DAC_ADDR=75;

case5:

DAC_ADDR=100;

case6:

DAC_ADDR=127;

case7:

DAC_ADDR=150;

case8:

DAC_ADDR=175;

case9:

DAC_ADDR=200;

case10:

DAC_ADDR=225;

case11:

DAC_ADDR=240;

case12:

DAC_ADDR=255;

default:

EX0=1;

return;

1-4MCS-51/MCS-52单片机转速计数控制电路的软硬件设计

图1-6

1MCS-51/MCS-52单片机转速计数控制电路的硬件电路设计

如图1-6所示,由红外发射管D和红外接收管T组成的转速检测电路中,当D和T之间没有遮挡物时,红外光由D照向T,红外接收管T受光后饱和导通,A点电位为0.3V,经或非门输出高电平。

P3.3端因高电平无中断触发;

当转动轴上的叶片经过D-T之间划过瞬间,T管因叶片遮挡不受光而截止,A点呈高电平。

在P3.3端口接收到一个由高电平至低电平的下降沿,导致外中断1被触发而引起中断请求。

转动轴上的叶片每转动一周,划过D-T一次,红外光被遮一次而中断一次。

如果在单位时间(秒)内D-T间被遮挡n次,则被中断n次,直流电机的转速便是n。

2MCS-51/MCS-52单片机转速计数控制电路的软件设计

在头文件中设外中断1为0级中断,定时器1为1级中断,开外中断0,开定时器1中断,开定时器1。

在直流电机测速程序中,ft为转轴转速次数变量,外中断1每中断一次,则对ft进行加1操作。

Pt为定时器1的中断次数,定时器1工作于方式1,即十六位计数。

每中断一次pt+1,若中断15次,总时间为65535μs*15=983ms。

外加每中断一次,所占用的时间,总时间约1秒钟。

计时1秒后,先将转动圈数变量修正(因为用频率计检测后,51单片机所计转速与频率计计数略有误差,所以需要修正。

)51单片机每秒测得转速为大于45转时,ft减4与频率计计数相当,51单片机每秒测得转速大于40转时,ft减3与频率计计数相当;

当转速大于35转时,ft减2合适。

修正后将ft的值送数码管显示。

Ft清零后重新计数。

/******************************************/

/*直流电机测速程序*/

/*pt:

T1中断次数,ft:

直流电机旋转圈数变量*/

AT89x52.h>

#ifndef_SPD_H

#define_SPD_H

unsignedintpt=0;

unsignedcharft=0;

voidint1()interrupt2

{

ft=ft+1;

voidtimer1_isr()interrupt3

unsignedcharpp;

if(pt>

=15)

{

pt=0;

if(ft!

=0)

{

if(ft>

45)

ft=ft-4;

elseif(ft>

40)

ft=ft-3;

elseif(ft<

35)

pp=ft/10+(ft%10<

SEG_ADDR=pp;

ft=0;

else

pt=pt+1;

1-5MCS-51/MCS-52单片机控制步进电机转速的硬软件设计

如图1-7所示,步进电机的驱动数码信号经P0.3,P0.2,P0.1,P0.0传送至HC573的D3,D2,D1,D0和D7,D6,D5,D4,传送到D7,D6,D5,D4的数码信号由HC573的Q7,Q6,Q5,Q4输出,再驱动四只发光二极管,显示驱动步进电机的数码及转速频率,而另外一路经过Q3,Q2,Q1,Q0传送至LM2003电流放大,LM2003的最大驱动电流可以达到0.5A。

图1-7

1MCS-51/MCS-52单片机控制步进电机转速的硬件电路设计

由LM2003去驱动步进电机正向或者反向转动。

由于步进电机为感性负载,当驱动器LM2003输出端关断时,势必引起电机与LM2003D端口较大的反向电动势,危及LM2003输出端口的安全。

因此电路中在LM2003与步进电机的输入端并接四只二

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2