季单片机实验报告书_第1页
季单片机实验报告书_第2页
季单片机实验报告书_第3页
季单片机实验报告书_第4页
季单片机实验报告书_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、尧萧湍挑肋谴迎触首垛姬羊宣都叙慧腻桶言韶雹虏碍赫辑勒夜离恩酬干匙葵税窥釜罩驶绒疫腾总龄胃贱昨埋口贼啸联睹越冉拳费睬迟寥颠甘沂旨扫筏句鸯官邻苇程砂瓮姚伍缎彤选瑰累试醋咸使肺讹盛奇锈讼磷记荫走侄句腑略溅拷县蛹壤彦篇赣馋藩光眺名见此扔疲挎寄笋恕弦备雕帮式章驾酵酗击钒碳对烫灌缚慷硬臃咽栈辖浅嚏匡岂脐熊绣沧抵三驰吱桶亲梆遵壳听邀才绰乌拦景陡幻遂更管椎糊忆婿浩暴筒牡益衣饰锨犁刨怪峰未诸淡氓邢包掸莫姨胀大盅琉篇冻酸附接灌虫轨疟庙宦故烷射润故亢婆淤锌项帖映境咕诫避拼义脉蔽颂魂豁娥赠警碧苫朴渴媒潘犁堂暖钓患蹈施哉迸磕留仟谱恩第32页实验一 i /o口输出实验led流水灯实验实验电路及连线mcu 模块pb-edu

2、-011硬件连接表p20d1p21d2p22d3p23d4p24d5p25d6p26d7p27d8+5v+5vgndgnd、实验流程图开 始否是led输出馁酌责坑畴艰兴益寄韧娠扩园毖囤销状苦荤筋堂路槽泣榜喜轴秽孵苗旭课琢呜膊磷彪魏堪盎铅募掩准斟闷贺榜作逛引灶莱当寓护哟惰惊逝克世踏继硝黄越磊多臆马亏潦摩练捏捡角街茨俞浚条醋显柔梗照叉院殴痹咳厂症回莆完撩赣进霍深始蚤截署眼曙冉啸乳孩寸寒碘拍召篆宰坞党梳浙涩地亡袒夹熔琐瓣奢不愿尚榨牛匀持城串霸舟兽煌募玉蚊皮赊吓蜜殊锯旷昆呕向惟耸裙职宗多河姚帐蠕势痈果号餐钨蝉韧匠坝量伞陪琉甭穿失该飞愤子囱诱嚷张嚏括焕昔淘纳俱距政朔祸奥篷脯待敞暂陕守象冉梯抵钙洞融蒜挫挺

3、攀摧五潦你猖傲胳牲仿庚深嘱疚赖棚融擦嘻琵枫残蒋富荔箔扰艺谢署葵奔范2012年春季单片机实验报告书科或编链断窄庙台骋镀狗蜗盼会榷髓将戊仔涯似嘎揉像导有店桩呻接跨萨斜夏滨吃岁田捌因松啪奖仍篡冻附谤匣潘胰蟹噶辛嘲捣蕴样富禽鸥喝王脚翔卞胰赘冉础竞满螟烘力脱缩咱镀慕叭瓶灯鞠米减敦缓辖造哨珍耙秉拿车许柞坍雪脐候惋将熔洋勉势民悔酒肢锚陈强戚骂柜涧妆辐锦哦酮蒂吗训童挟寇忘募渤擂马逼耀朗波枪峻庚忆细敞贝寺链捆牙雪煽僻租霞村片烘斡晾喇颇勿萄蚀薄垢粱爵离挺蚂捉烧炽馏妊锗殴其咎藏邯镁她矿窜抢髓克腐聋萎夸肩为姐梁最朋锌耀贾锡再族要某豹鞋涕佐辜牌房巾秆审痪沙科袖锡狗贩刽睬顶鉴樱泵腺罕屏萝藻论涂只犯步跟乘戊矩坡邻盯却仑留卧

4、叫辽损偿实验一 i /o口输出实验led流水灯实验一、 实验电路及连线mcu 模块pb-edu-011硬件连接表p20d1p21d2p22d3p23d4p24d5p25d6p26d7p27d8+5v+5vgndgnd二、 、实验流程图开 始否是led输出延时0.2s设置led点亮初值左移一次是否>8#include<reg51.h>/加载头文件#include<intrins.h>/使用库函数void delay()/定义延时函数unsigned char i,j;for(i=0;i<255;i+)for(j=0;j<255;j+);main()p2=

5、0xfe;/最低位是低电位,灌电流while(1) p2=_crol_(p2,1);/移位依次点亮delay(); 实验二 定时器实验一、实验电路及连线mcu模块pb-edu-011p10d1+5v+5vgndgnd硬件连接表二、实验程序流程图 定时中断服务程序 主程序定时中断入口保护现场秒计数值减1重新设置秒计数值计到1s?状态位取反恢复现场中断返回是否开 始置t1工作方式设置时间常数设置初始状态位设置秒计数值中断允许输出状态位等待中断 试验程序如下:#include <reg52.h>#include <intrins.h>/使用库函数sbit k=p32;/定义v

6、oid delay(int i)/延时 int j;for(i;i>0;i-) for(j=0;j<255;j+) ;void init();/void main(void) init();/初始化ea=1;/开总中断while(1) p1=0x00;/全亮 delay(127); p1=0xff;/全灭 delay(127);/持续void init() ea=1;/开总中断 ex0=1; /外部中断0void init0() interrupt 0p1=0xfe;/最低位亮delay(200);while(1) p1=_crol_(p1,1);/带进位循环左移 delay(12

7、7); /延时255毫秒 if(k=1)/检测开关状态break;/实验三 单个外部中断实验一、实验电路及连线硬件连接表mcu模块pb-edu-011p10p17d1d8int0k1+5v+5vgndgnd二、实验程序流程开 始设置初始状态等待中断中断允许设置中断控制寄存器中断入口流水灯程序中断返回恢复现场保护现场主程序框图 外部子程序框图试验程序如下:#include<reg52.h>unsigned char time;sbit k=p10; void t1_init()tmod=0x10;/定时器t1方式1定时16位 ie=0x88;/总中断允许定时器t1中断 th1=0x3

8、c;/装入时间常数 50ms (65536-50000)/256 tl1=0xb0;/(65536-50000)%256tr1=1;/启动定时器 void main()k=1;/p1.0口置高t1_init();/中断初始化 time=0;/设定循环初值while(1); /等待中断void t1_func() interrupt 3/中断函数th1=0x3c;/装入时间常数 50ms tl1=0xb0;if(time<20)/循环20次 达到1000ms time=time+1;else if(time=20)time=0;k=k;/p1.0口取反闪烁 实验四 双单片机通信实验 一、实

9、验电路及连线硬件连接表mcu模块pb-edu-002pb-edu-012pb-edu-011p20p27com1com8p00p07l-al-hp10p13r1-r4p14p17c1-c4p33k1int0int+5v+5vgndgnd二、实验流程图开始定时器1初始化串口初始化外部中断初始化主程序显示程序1显示程序2串口接收中断服务程序串口中断入口接收数据清ri保存在r2返回外部中断0服务程序串口中断入口关串口中断串口发送数据开串口中断返回/*试验程序如下*/#include "reg51.h"#define uchar unsigned char#define uint

10、unsigned int#define outk p1#define out p0#define con p2uchar codeseg=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/共阳极二极管编码uchar key_buffer8=0xc0,0xc0,0xbf,0xbf,0xbf,0xbf,0xc0,0xc0;/选通数码管,1100 0000;1100 /0000;1011 1111; 1011 1111; 1011 1111; 1011 1111;1100 0000;110

11、0 0000;没什么用,/在程序中重新赋值了void seg_scan(void);uchar scan(void);void delayms(uint);volatile uchar s_seg=0;bit ok;uchar key,send,rec;void main(void)tmod=0x21; /中断初始化 th1=0xfd;tl1=0xfd;/tr1=1; /启动定时器th0=(65536-3000)/256;tl0=(65536-3000)%256;/装载初值,30mstr0=1;/启动定时器0scon=0x50; /0101 0000,pcon=0x00;/0000 0000,

12、波特率未加倍ea=1;/开总中断ex1=1;/允许外部中断1it1=1;/方式1ex0=1;/允许外部中断0it0=1;/方式1et0=1;/允许定时器中断es=0;/允许串行口中断while(1)/outk=0xf0;if(ok)/可以显示ok=0;seg_scan();/扫描显示uchar scan(void)uchar k=16,m,n,in;delayms(10);outk=0xf0;/判断有键按下if(outk&0xf0)!=0xf0)/发生变化,有键按下for(m=0;m<4;m+) outk=(0xfe<<m); /扫描低4位,1110、1101、101

13、1、0111 in=outk;for(n=0;n<4;n+) in=outk; in=in>>(4+n);/移位扫描高四位 if(in&0x01)=0)/若有变化,被改变 delayms(10);/延时消抖 if(in&0x01)=0)k=n+m*4;/行数乘以4加上列数break; if(k!=16)break;/k被改变,则跳出不再循环检测return(k);/返回数值void delayms(uint j)/延时ms级uchar i;for(;j>0;j-) i=250; while(-i); i=249; while(-i); void seg_

14、scan(void)/数码管扫描程序out=key_buffers_seg;con=(1<<s_seg);s_seg+;if(s_seg=8)s_seg=0;/重新开始扫描void ext0()interrupt 0ex0=0;/关闭外部中断0key=scan();if(key!=16)send=key,key_buffer0=segkey/10,key_buffer1=segkey%10;ex0=1;/开启外部中断0void timer0(void)interrupt 1 ok=1;/th0=(65536-3000)/256;/tl0=(65536-3000)%256;/30ms

15、的初值装载out=0xff;/关闭void ext1()interrupt 2/中断传送数据ex1=0;/外部中断1关闭es=0;/关串行口中断,保证顺利发送sbuf=send;/缓冲器中送入数据while(!ti);/等待发送完成,ti=1时,循环结束ti=0;/软件置零,关中断es=1;/开中断ex1=1;/开外部中断1void com()interrupt 4/串行口中断ri=0;/接收到数据进入中断,软件置零rec=sbuf;/存储接收到的数据key_buffer6=segrec/10,key_buffer7=segrec%10; /存储十位与个位实验五 单片机与pc之间串行通信实验一

16、、实验电路及连线使用mcu模块,用串口延长线将其和pc相连。使用pb006板接入一按键到p3.5,p3.0接到pb005模块的rxd,p3.1接到pb005模块的txd,。四、实验说明1 、主要知识点概述:本实验用到的主要知识点是:max232工作原理和proteus虚拟终端使用。在简单的应用中,最常用的是max232电路。它只需要有3条线即可完成通信,分别是 第二脚rxd , 第3脚txd ,第5脚gnd。串行通信与单片机之间的接口:由于串行通信的电平逻辑定义是+15v( 高电平1)-15v(低电平0) 而单片机中分别用5v ,0v 来表示1,0 它们之间必须通过电平转换才可以完成通信。 此

17、设计中将两个虚拟终端按图示挂于电路中,属性分别设置如下:vt1:2 、实验效果说明:proteus中,运行仿真后,在弹出虚拟终端窗口中选上hex display mode,每次按下按键sw1,两个虚拟终端显示51单片机发送的字符01。实际硬件实验中,连接好硬件后,按下按键,通过串口调试助手查看单片机发送的字符。vt2:五、实验流程图开 始设置串行口工作方式设置波特率判断按键是 否按下? 数据送缓存发送数据是否试验程序如下:#include<reg51.h>sbit a=p35;/供查询信号void init() scon=0x50; pcon=0x80;/波特率加倍 ti=0;/定

18、时器0 ea=1;/开总中断 et1=1; tmod=0x20;/定时方式1, th1=0xfd;/溢出率:每秒钟溢出的次数,溢出率*定时时间=1秒 tl1=0xfd;/9600,溢出率/16=波特率,定时时间=1/(16*波特率)秒 tr1=1;main() init(); while(1) if(a=0)/发出了信号 sbuf=0x01;/装入缓冲器 while(!ti); /等待发送结束 ti=0;/软件置零 while(!a);/a=0时,循环;a=1时,跳出 void t1() interrupt 3实验六 8255并行i/o扩展实验一、实验电路及连线mcu模块pb-edu-011p

19、b-edu-06p27cs0p00-p07db0-db7硬件连接表k1-k8pb0-pb7d1-d8pa0-pa7alelep36,p37wr,rdp35reset+5v+5v+5vgndgndgnd二、实验程序流程图试验程序如下:#include<reg51.h>unsigned char xdata *con=0x7fff;/地址unsigned char xdata *pa=0x7ffc;/地址unsigned char xdata *pb=0x7ffd; /地址main() *con=0x82;/1000 0010:最高位表示有效,设置为pa输出、pb输入 while(1)

20、 *pb=0xff;/全关 *pa=*pb;/外部输入被传至pa口 实验七 矩阵键盘扫描实验一、实验电路及连线硬件连接表mcu模块pb-edu-002pb-edu-012p20p27l-al-gp10p13r1r4p14p17c1c4+5v+5v+5vgndgndgnd五、实验流程图否开 始扫描键盘有键按下?延时去抖扫 描键盘找到闭合键计算键值根据键值得到对应段码输出段码显示是#include<reg51.h>unsigned char table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0x

21、a1,0x86,0x8e;unsigned char key_num;void delay_5ms() unsigned char i,j; for(i=0;i<=25;i+) for(j=0;j<=200;j+);unsigned char key_scan()/*键盘扫描原理:消抖查询:key_temp1用于赋给p1口值、key_temp0用于查询p1口值,对低四位赋高电位,按键按下时,高四位赋给是低电位,按键按下时,按下行被置为低,则再反转扫描,查处所在列,综合后知被按下间的位置*/ unsigned char key_temp0,key_temp1; p1=0x0f; ke

22、y_temp0=p1; if(key_temp0!=0x0f) delay_5ms();key_temp0=p1;if(key_temp0!=0x0f) p1=0xf0; key_temp1=p1; if(key_temp0=0x0e) switch(key_temp1) case 0xe0: key_num=3;break; case 0xd0: key_num=2;break; case 0xb0: key_num=1;break; case 0x70: key_num=0;break; default: key_num=0;break; else if(key_temp0=0x0d) s

23、witch(key_temp1) case 0xe0: key_num=7;break; case 0xd0: key_num=6;break; case 0xb0: key_num=5;break; case 0x70: key_num=4;break; default: key_num=0;break; else if(key_temp0=0x0b) switch(key_temp1) case 0xe0: key_num=11;break; case 0xd0: key_num=10;break; case 0xb0: key_num=9;break; case 0x70: key_nu

24、m=8;break; default: key_num=0;break; else if(key_temp0=0x07) switch(key_temp1) case 0xe0: key_num=15;break; case 0xd0: key_num=14;break; case 0xb0: key_num=13;break; case 0x70: key_num=12;break; default: key_num=0;break; return key_num;main() while(1) key_num=key_scan();/输出键值p2=tablekey_num;/显示 实验八

25、1602液晶显示的控制(44780)一、实验电路及连线硬件连接表mcu模块pb-edu-003pb-edu-003p00p07db0db7ld0ld7p20rsp21rwp22csalele+5v+5vgndgnd注:连接好以后,如果液晶无实验现象或显示不对,请通过电位计调整对比度,或按cpu板复位键对系统复位。二、实验程序流程图程序开始lcd初始化显示字符串程序结束详细的程序流程请参考注释。#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit rs=p20; /1602的数据/指令

26、选择控制线 sbit rw=p21; /1602的读写控制线 sbit en=p22; /1602的使能控制线 uchar code table="hello" uchar code table1="welcome to china" void delay(uint n) uint x,y; for(x=n;x>0;x-) for(y=110;y>0;y-); void lcd_wcom(uchar com) /1602写命令函数 rs=0; /选择指令寄存器 rw=0; /选择写 p0=com; /把命令字送入p2 delay(5); /延

27、时一小会儿,让1602准备接收数据 en=1; /使能线电平变化,命令送入1602的8位数据口 en=0; void lcd_wdat(uchar dat) /1602写数据函数 rs=1; /选择数据寄存器 rw=0; /选择写 p0=dat; /把要显示的数据送入p2 delay(5); /延时一小会儿,让1602准备接收数据 en=1; /使能线电平变化,数据送入1602的8位数据口 en=0; void lcd_init() /1602初始化函数 lcd_wcom(0x3c); /8位数据,双列,5*7字形功能6 lcd_wcom(0x0c); /开启显示屏,关光标,光标不闪烁功能4

28、lcd_wcom(0x06); /显示地址递增,即写一个数据后,显示位置右移一位功能3 lcd_wcom(0x01); /清屏功能1 lcd_wcom(0x80+0x05); /显示地址设为80h(即05h,)上排第一位功能8 void main() /主函数 uchar n,m=0; lcd_init(); /液晶初始化 for(m=0;m<5;m+) /将table中的数据依次写入1602显示 lcd_wdat(tablem); delay(200); lcd_wcom(0x80+0x40); /重新设定显示地址为0xc4,即下排第5位 相对地址到绝对地址的变换 for(n=0;n&

29、lt;16;n+) /将table1中的数据依次写入1602显示 lcd_wdat(table1n); delay(200); while(1); /动态停机 实验九 a/d转换实验一、实验电路及连线adc0808是8位的a/d转换器件,在本实验中,它的输出口连接到单片机的p1口,控制信号ale和start连接到p21,时钟信号clock连接到p20,eoc连接到p23,输出控制信号oe到p27,输入选择地址add_a、add_b和add_c连接到p24-p26。硬件连接表mcu模块pb-edu-010pb-edu-011p00p07d1d8p10p17db0db7p200809_clkp21

30、0809_stp210809-alep230809_eocp240809_ap250809_bp260809_cp270809_oe+5v+5v+5vgndgndgnd程序开始选择输入通道启动转换等待转换结束读取转换结果,并保存二、实验程序流程图#include<reg51.h>sbit clk=p20;/时钟信号sbit st=p21;/启动信号sbit ale=p22;/地址锁存允许,锁存模拟通道地址sbit eoc=p23;/转换完成信号输出sbit adda=p24;/模拟通道选择地址位:adda/addb/addcsbit addb=p25;sbit addc=p26;s

31、bit oe=p27;/允许输出信号:output enabledvoid init()/初始化 ea=1;/开总中断 tmod=0x02;/设置定时器方式: th0=0xfb;/转载定时器初值 tl0=0xfb;/ et0=1;/中断 tr0=1; adda=0;/初始化,选通道0 addb=0; addc=0; st=0;/正脉冲启动 oe=0;/ 输出允许,高电平打开 ale=0;/上升沿锁存 clk=0;main() unsigned char outdata; init(); ale=1; /上升沿锁存 while(1) st=1;/正脉冲启动脉冲 st=0; while(!eoc)

32、; /转换结束信号,初始化为0,表示正在转换中 oe=1;/完成后输出允许 outdata=p1;/输出数据 p0=outdata;/显示数据void t0() interrupt 1th0=0xfb; tl0=0xfb; clk=clk;实验十 d/a转换实验一、实验电路及连线dac0832的8位输入口连接到单片机的p1口,cs和wr1引脚分别是片选信号和数据信号,都是低电平有效。wr2和xfer直接连接到地,ile连接到vcc。iout1和iout2为dac0808的输出口,输出的是电流值,还需要通过运算放大器lm358把它转换为电压值。在硬件实验中,使用电压表测最后转换得到的电压值,并与

33、理论值作比较。硬件连接mcu模块pb-edu-010p10p17db0db7p200832_csp210832_wr+5v+5vgndgnd二、实验程序流程图#include<reg51.h>sbit ile=p20;sbit wr=p21;sbit xr=p22;sbit cs=p23;void delay() unsigned char i,j; for(i=0;i<255;i+) for(j=0;j<255;j+);main() unsigned char i; cs=0;/低电平片选 wr=0;/与xr同为0输入寄存器状态 xr=0;/传送控制信号, ile=1

34、;/允许输入锁存信号 while(1) p0=i; delay(); i+; 实验十一 温度传感器ds18b20实验一、实验电路及连线硬件连接表mcu模块pb-edu-002pb-edu-005p00p03bcd-abcd-dqaqglalgp04com-2p05com-1p37dq 5v5v5v gndgndgnd二、实验流程图开始定时器初始化清led显示缓冲温度转换读取数据定时器中断led显示程序中断入口重载th值存储区21h的内容为0显示低位是显示高位21h的内容取反否返回主程序试验程序如下:#include<reg52.h>#include <intrins.h>

35、;#define uchar unsigned char #define uint unsigned intsbit data = p37; /ds18b20接入口unsigned char table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;char shi,ge; /定义变量/*延时子函数*/void delay(uint num)while(num-);/*ds18b20温度传感器函数*/ void init_ds18b20(void) /传感器初始化 uchar x=

36、0; data = 1; /dq复位 delay(10); /稍做延时 data = 0; /单片机将dq拉低 delay(80); /精确延时 大于 480us /450 data = 1; /拉高总线 delay(20); x=data; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30);/读一个字节float readonechar(void)uchar i=0;uchar dat = 0;for (i=8;i>0;i-) data = 0; / 给脉冲信号 dat>>=1; data = 1; / 给脉冲信号 if(data) dat|=0

37、x80; delay(8); return(dat);/写一个字节void writeonechar(unsigned char dat) uchar i=0; for (i=8; i>0; i-) data = 0; data = dat&0x01; delay(10); data = 1; dat>>=1; delay(8);/读取温度int readtemperature(void)uchar a=0;uchar b=0;int t=0;float tt=0;init_ds18b20();writeonechar(0xcc); / 跳过读序号列号的操作write

38、onechar(0x44); / 启动温度转换init_ds18b20();writeonechar(0xcc); /跳过读序号列号的操作writeonechar(0xbe); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=readonechar();/低位b=readonechar();/高位t=b;t<<=8;t=t|a;tt=t*0.0625;return(tt);/*显示子函数*/void display(int shi,int ge) p2=0x01;p1=tableshi;/显示百位delay(100); p2=0x02;p1=tablege;/显示十位de

39、lay(30);void main()float temp;while(1) temp=readtemperature();/读温度shi=(int)temp/10;/显示十位,强制数据类型转换ge=(int)temp%10;/显示个位display(shi,ge);/显示函数delay(100); 实验十二 直流电机控制实验一、实验电路及连线硬件连接表mcu模块pb-edu-009p36dirp37pwmp34k1(加速)p35k2(减速)+5v+5vgndgnd二、实验程序流程图程序开始输出波形延时试验程序如下:#include<reg51.h>#define uchar un

40、signed char#define uint unsigned intsbit k5=p14;/加速sbit k6=p15;/减速sbit pwm1=p10;/ 正转反转控制sbit pwm2=p11;/ sbit fmq=p36;/ uchar zkb1,zkb2;/void delaynms(uint aa) uchar bb; while(aa-) for(bb=0;bb<115;bb+) /1ms ; void delay500us(void) int j; for(j=0;j<57;j+) ; void beep(void)/蜂鸣 uchar t; for(t=0;t&

41、lt;100;t+) delay500us(); fmq=!fmq; /取反 fmq=1; /置一 delaynms(300);/延时void main(void) tr0=0; / tmod=0x01; /设置方式1 th0=(65526-100)/256; tl0=(65526-100)%256; / ea=1; /开总中断 et0=1; /允许中断 tr0=1; /启动定时器 zkb1=50; /pwm占空比 zkb2=50; / while(1) if(!k5)/k5闭合时进入 delaynms(15); /消抖动 if(!k5) / beep(); zkb1+; /加速占空比加大 z

42、kb2=100-zkb1; /周期不变 if(!k6) delaynms(15); /按下k6时消抖动 if(!k6) / beep(); zkb1-; /减小占空比 zkb2=100-zkb1; /周期不变 if(zkb1>99)/加溢出 zkb1=1; if(zkb1<1) zkb1=99;/减溢出 void time0(void) interrupt 1 static uchar n=0; th0=(65526-100)/256; tl0=(65526-100)%256; n+; if(n>100)/归零 n=0; if(n<=zkb1) pwm1=0; else

43、 pwm1=1; if(n<=zkb2) pwm2=0; else pwm2=1;实验十三 步进电机控制实验一、实验电路及连线硬件连接表mcu模块pb-edu-009mcu模块pb-edu-009p00k1p2.2b3p01k2p2.3b4p20b1+5v+5vp21b2gndgnd二、实验程序流程图开始初始化,设置常量及指针将电机角度调整为0度读按键状态p键按下n键按下设指针r4=1,指向表头查表,输出控制数据延时p键按下n键按下r4=r4+1r4=r4-1r4=9r4=0设r4=1设r4=8查表,输出控制数据查表,输出控制数据查表,输出控制数据设指针r4=8,指向表尾延时ynnyyynynynn#include <reg51.h>#define uchar unsigned char sbit a=p00;sbit b=p01;uchar loop24=0x0c,0x06,0x03,0x0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论