单片机课程设计--步进电机驱动器-毕业设计_第1页
单片机课程设计--步进电机驱动器-毕业设计_第2页
单片机课程设计--步进电机驱动器-毕业设计_第3页
单片机课程设计--步进电机驱动器-毕业设计_第4页
单片机课程设计--步进电机驱动器-毕业设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、长 沙 学 院单片机原理及应用课程设计说明书题目步进电机控制系统设计系(部)电子与通信工程系专业(班级)电气工程及其自动化1班姓名学号2010042103指导教师起止日期2013.6.11-2013.6.21单片机原理及应用课程设计任务书6系(部):电信系 专业:2010级电气工程 指导教师:王新辉、刘辉课题名称步进电机控制系统设计设计内容及要求课题要求:设计基于单片机的步进电机控制系统,具体要求如下:(1)开始通电时,步进电机停止转动;(2)单片机分别接有按键开关k1、k2、k3、k4和k5,用来控制步进电机的转向,要求如下:当按下k1时,步进电机正转; 当按下k2时,步进电机反转;当按下k

2、3时,步进电机停止; 当按下k4时,步进电机加速;当按下k5时,步进电机减速; 用12864液晶显示显示本人的姓名、班级和学号,还有步进电机的转向、步数、转速、开机时显示欢迎提示字符、按键功能提示等信息。设计工作量1、汇编或c51语言程序设计;2、在proteus上进行仿真成功;3、提交一份完整的课程设计说明书,包括封面,中文摘要,目录,正文(正文主要包括:设计原理、程序设计、程序分析、仿真分析、调试过程,调试结果等部分),参考文献、设计总结等。进度安排起止日期(或时间量)设计内容(或预期目标)备注第一天课题介绍,答疑,收集材料,c51介绍第二天设计方案论证,练习编写c51程序第三天第六天程序

3、设计第六天第八天 程序调试、仿真第九天第十天系统测试并编写设计说明书教研室意见年 月 日系(部)主管领导意见年 月 日长沙学院课程设计鉴定表姓名卢超望学号2010042103专业电气工程及自动化班级电气1班设计题目步进电机控制系统设计指导教师刘辉、王新辉指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;目录第1章 步进电机的原理介绍51.1 步进电机的工作原理51.2 步进电机24byj48的相关电气参数51.3 步进电

4、机的基本术语61.3.1 相数61.3.2 拍数61.3.3 步距角61.3.4 信号分配6第2章 总体设计思路62.1 方案与设计思路62.2 总框图7第3章 程序设计73.1 主程序73.2 lcd及档位显示程序83.3正反转流程图103.4启动与停止流程图10第4章 硬件设计114.1 硬件的设计与选取114.1.1 步进电机的驱动114.1.2 单片机的选取124.1.3 液晶lcd1602显示模块12第5章 设计程序145.1设计程序14第6章 心得体会37第7章 参考文献37第1章 步进电机的原理介绍1.1 步进电机的工作原理步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲

5、:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。本次设计是采用步进电机28byj48型四相八拍电机,电压为dc5vdc12v。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)

6、四拍(a-b-c-d-a。),双(双相绕组通电)四拍(ab-bc-cd-da-ab-。),八拍(a-ab-b-bc-c-cd-d-da-a。)其相序分配表如下:1.2 步进电机24byj48的相关电气参数1.额定电压:12vdc(另有电压:5v、6v、24v)2.相数:43.减速比:1/64(另有减速比:1/16、1/32)4.步距角:5.625/645.驱动方式:4相8拍6.直流电阻:2007%(25)(按客户要求而定:80、130欧姆)7.空载牵入频率:600hz8.空载牵出频率:1000hz9.牵入转矩:34.3mn.m(120hz)10.自定位转矩:34.3mn.m11.绝缘电阻:10

7、m(500v)12.绝缘介电强度:600vac/1ma/1s13.绝缘等级:a14.温升:50k(120hz)15.噪音:40db(120hz)16.重量:大约40g17.未注公差按:gb1804-m18.转向:ccw1.3 步进电机的基本术语1.3.1 相数产生不同对极n、s磁场的激磁线圈对数,常用m表示。1.3.2 拍数完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,比如说本次设计中使用的24byj48有单(单相绕组通电)四拍(a-b-c-d-a。),双(双相绕组通电)四拍(ab-bc-cd-da-ab-。),八拍(a-ab-b-bc-c-cd-d-d

8、a-a。)1.3.3 步距角对应一个脉冲信号,电机转子转过的角位移用表示。=360度(转子齿数j*运行拍数),以常规二相,转子齿为50齿电机为例。四拍运行时步距角为=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为=360度/(50*8)=0.9度(俗称半步)。1.3.4 信号分配四相步进电机按照其通电方式的不同,可以分为单四拍,双四拍和双八拍三种工作方式。单四拍与双四拍的步距角相等,均为11.25度,而八拍的步距角则是单四拍与双四拍的一半,5.625度。单(单相绕组通电)四拍(a-b-c-d-a。),双(双相绕组通电)四拍(ab-bc-cd-da-ab-。),八拍(a-ab-

9、b-bc-c-cd-d-da-a。)。这里选取的是四相八拍的工作方式。第2章 总体设计思路2.1 方案与设计思路因为步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。所以怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。用单片机来产生这个脉冲信号,通过单片机的p1口输出脉冲信号,因为所选电机是四相的,所以只需要p1口的低四位p1.0p1.3分别接到电机的四根电线上。定时器定时来调整电机的转速,通过键盘的按钮,就可以改变定时初值从而改变了电机的转速,单片机上p3.2p3.5连的是按键,这里键盘上的k1键为顺时针转动,k2键为逆时针转动,k3键为停止键,k4

10、键为加速键,k5键为减速键。p0以及p2.0p2.2口接lgm12641bs1r,可以显示当前的电机转速、运行状态、运行方向。2.2 总框图图3-1 总体设计方框图第3章 程序设计3.1 主程序进入主程序,首先是对lcd进行初始化,然后依次进行键盘扫描,调用步进电机相关数据显示子函数,若检测到有键按下,则进去相应的处理。流程图如下图4-1:4-1图 主程序流程图3.2 lcd及档位显示程序此次设计使用lgm12641bs1r液晶显示步进电机运行状态,其效果比用数码管显示要更加明了,也更容易读取相关状态和数据。液晶上显示有电机运行的状态、当前步数、运行方向以及其运转速度。其显示原理如下图4-2:

11、图4-2 液晶显示流程图3.3正反转流程图步进电机的正反转用k1、k2控制,初始化电机为顺时针转,即“”,每当按下k4键,电机转向改变,具体流程图如下图4-3:3.4启动与停止流程图启动与停止是用k1键来控制的,初始化标志位on_off=0,档按下k1,即将on_off置1,每当按下k1,都将在启动与停止间切换,具体流程图如下图4-4:图4-4 启动与停止流程图第4章 硬件设计4.1 硬件的设计与选取4.1.1 步进电机的驱动步进电机的驱动采用uln2003,接到单片机的p1.0p1.3,具体如图5-1:图5-1 步进电机驱动及其接口图4.1.2 单片机的选取目前市面上的通用型单片机种类很多,

12、且适合不同应用场合的新产品不断出现,但目前的应用状况,以8位中档mcs-51系列单片机的应用最为普遍。基于这次课程设计的要求不高,我们可以选用51系列或52系列单片机,其有可靠性高,易于扩展以及实用性好等特点,完全可以满足我们的控制要求。4.1.3 液晶lcd1602显示模块p0接液晶的数据传送口,p2.0p2.2接液晶的控制端口。其接线图如下图5-3:图5-3 液晶与单片机接口原理图4.2 硬件的总体电路连接图 5-5 总体原理图第5章 设计程序5.1设计程序#include/ / 这个的关键在于adc0808的接线特别是0808的输出高地位不要搞错了,一开始搞错了#include#incl

13、ude /keil library #include /keil library #define lcd_databus p0 /lcd12864的8位数据口#define uint unsigned int#define uchar unsigned charsbit en=p22; /down wr high rdsbit rs=p20; /di high dat low comsbit rw=p21; /high rd low wrsbit cs2=p23; /sbit cs1=p24;sbit key1=p30;sbit key2=p31;/sbit key3=p32;sbit key

14、3=p33;sbit key4=p34;sbit key5=p35;uchar ii;uint num=60; / 1 to 208uint sudu;/uint bushu;/uchar *temp;uchar flag;uint shuju;unsigned char code tabz8=0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6; /正转unsigned char code tabf8=0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe; /反转unsigned char code time16=0x00,0xe0,0x1

15、0,0x08,0x08,0x10,0xe0,0x00,0x00,0x0f,0x10,0x20,0x20,0x10,0x0f,0x00,/0,0x00,0x10,0x10,0xf8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3f,0x20,0x20,0x00,0x00,/1,0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/2,0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20

16、,0x11,0x0e,0x00,/3,0x00,0x00,0xc0,0x20,0x10,0xf8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3f,0x24,0x00,/4,0x00,0xf8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0e,0x00,/5,0x00,0xe0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0f,0x11,0x20,0x20,0x11,0x0e,0x00,/6,0x00,0x38,0x08,0x08,0xc8,0x38,0x

17、08,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,/7,0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1c,0x22,0x21,0x21,0x22,0x1c,0x00,/8,0x00,0xe0,0x10,0x08,0x08,0x10,0xe0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0f,0x00,/9,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3f,0x21,0x20,0x00,0x01,0x00,/*r

18、,0*/ 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/*/,0*/0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3f,0x20,0x00,0x3f,0x20,0x00,0x3f,/*m,0*/0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3f,0x20,0x20,0x00,0x00,/*i,0*/0x80,0x80,0x00,0x80,0x80,0x80,0x00

19、,0x00,0x20,0x3f,0x21,0x00,0x00,0x20,0x3f,0x20,/*n,0*/0x08,0xf8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3f,0x11,0x20,0x20,0x11,0x0e,0x00,/*b,0*/0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2c,0x22,0x21,0x30,0x00,/*z,0*/0x00,0x80,0x80,0xf0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3f,0x20,0x20,0x0

20、0,0x00,/*- 文字: : -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x00,0x00,0x00,0xc0,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,/0xf0,0x08,0xf0,0x00,0xe0,0x18,0x00,0x00,0x00,0x21,0x1c,0x03,0x1e,0x21,0x1e,0x00,/%/0xe3,0x13,0x08,0x08,0x08,0x08,0x10,0x00,0x07,0x08,0x10,0x10,0x10,0x10,0x08,0x00/c/*-

21、 文字: k -*/*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/0x08,0xf8,0x88,0xc0,0x28,0x18,0x08,0x00,0x20,0x3f,0x20,0x01,0x26,0x38,0x20,0x00,/*f,19*/;uchar code hz32= /*- 文字: 卢 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x00,0xe0,0x20,0x20,0x20,0x3f,0x24,0x24,0x24,0x24,0xe4,0x04,0x00,0x00,0x80,0x40,0x30,0x0f,0x02,0

22、x02,0x02,0x02,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,/*- 文字: 超 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x48,0x48,0x48,0xff,0x48,0x48,0x42,0xa2,0x9e,0x82,0xa2,0xc2,0xbe,0x00,0x00,0x80,0x60,0x1f,0x20,0x7f,0x44,0x44,0x40,0x4f,0x48,0x48,0x48,0x48,0x4f,0x40,0x00,/*- 文字: 望 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x

23、16 -*/0x04,0x04,0xfc,0x45,0x46,0x24,0x24,0x04,0x80,0x7e,0x2a,0xaa,0x2a,0xfe,0x00,0x00,0x80,0x82,0x92,0x92,0x92,0x92,0x92,0xff,0x92,0x92,0x92,0x92,0x93,0x82,0x80,0x00, 0x00,0xfe,0x00,0xfc,0x00,0xfe,0x02,0xf2,0x12,0x1a,0xd6,0x12,0x12,0xfb,0x12,0x00, 0x40,0x3f,0x00,0x1f,0x00,0x7f,0x80,0x8f,0x40,0x20,0x

24、1f,0x20,0x20,0x4f,0x80,0x00, 0x40,0x42,0x44,0xcc,0x00,0x08,0xe9,0x0a,0x0c,0xf8,0x0c,0x0a,0xe9,0x08,0x00,0x00, 0x00,0x40,0x20,0x1f,0x20,0x40,0x47,0x62,0x52,0x4f,0x42,0x42,0x47,0x60,0x20,0x00, 0x04,0x34,0xc4,0x04,0xc4,0x3c,0x20,0x10,0x0f,0xe8,0x08,0x08,0x28,0x18,0x00,0x00, 0x10,0x08,0x06,0x01,0x82,0x8

25、c,0x40,0x30,0x0c,0x03,0x0c,0x10,0x60,0xc0,0x40,0x00, /欢, 5 0x40,0x42,0x44,0xc8,0x00,0xfc,0x04,0x02,0x82,0xfc,0x04,0x04,0x04,0xfe,0x04,0x00, 0x00,0x40,0x20,0x1f,0x20,0x47,0x42,0x41,0x40,0x7f,0x40,0x42,0x44,0x63,0x20,0x00, 0x40,0x20,0xf8,0x07,0x04,0xf4,0x14,0x14,0x14,0xff,0x14,0x14,0x14,0xf6,0x04,0x00

26、, 0x00,0x00,0xff,0x00,0x80,0x43,0x45,0x29,0x19,0x17,0x21,0x21,0x41,0xc3,0x40,0x00, 0x00,0x00,0xfe,0x22,0x22,0x22,0x22,0xfe,0x22,0x22,0x22,0x22,0xff,0x02,0x00,0x00, 0x80,0x60,0x1f,0x02,0x02,0x02,0x02,0x7f,0x02,0x02,0x42,0x82,0x7f,0x00,0x00,0x00,/*- 文字: 姓 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x10,

27、0xf0,0x1f,0x10,0xf0,0x40,0x3c,0x10,0x10,0xff,0x10,0x10,0x10,0x00,0x00,0x40,0x22,0x15,0x08,0x16,0x21,0x40,0x42,0x42,0x42,0x7f,0x42,0x42,0x42,0x40,0x00,/*- 文字: 名 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x20,0x20,0x10,0x08,0x14,0x67,0x84,0x44,0x24,0x14,0x0c,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x02,0xfe

28、,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0xfe,0x00,0x00,0x00,/*- 文字: 学 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7e,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,/*- 文字: 号 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=1

29、6x16 -*/0x80,0x80,0x80,0xbe,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xbe,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x44,0x84,0x44,0x3c,0x00,0x00,0x00,0x00,/*- 文字: 电 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0xf8,0x88,0x88,0x88,0x88,0xff,0x88,0x88,0x88,0x88,0xf8,0x00,0x00,0x00,0x00,0

30、x00,0x1f,0x08,0x08,0x08,0x08,0x7f,0x88,0x88,0x88,0x88,0x9f,0x80,0xf0,0x00,/*- 文字: 气 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x20,0x10,0x4c,0x47,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0xd4,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x30,0x40,0xf0,0x00,/*- 文字: 班 -*/*- 宋体12

31、; 此字体下对应的点阵为:宽x高=16x16 -*/0x84,0x84,0xfc,0x84,0x84,0x00,0xf8,0x00,0xff,0x00,0x84,0x84,0xfc,0x84,0x84,0x00,0x10,0x30,0x1f,0x08,0x88,0x42,0x21,0x18,0x07,0x00,0x20,0x20,0x3f,0x20,0x20,0x00, /*- 文字: 转 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0xc8,0xb8,0x8f,0xe8,0x88,0x88,0x40,0x48,0x48,0xe8,0x5f,0x48,0x48,0x

32、48,0x40,0x00, /*- 16 -*/0x08,0x18,0x08,0xff,0x04,0x04,0x00,0x02,0x0b,0x12,0x22,0xd2,0x0a,0x06,0x00,0x00,/*- 文字: 速 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x40,0x42,0xcc,0x00,0x04,0xf4,0x94,0x94,0xff,0x94,0x94,0xf4,0x04,0x00,0x00,0x00,0x40,0x20,0x1f,0x20,0x48,0x44,0x42,0x41,0x5f,0x41,0x42,0x44,0x48,

33、0x40,0x00,/*- 文字: 步 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x40,0x40,0x7c,0x40,0x40,0x40,0xff,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,0x80,0x90,0x88,0x46,0x40,0x40,0x20,0x2f,0x10,0x10,0x08,0x04,0x02,0x00,0x00,0x00,/*- 文字: 数 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x90,0x52,0x34,0x10,0xff,0x10,0x34,0x5

34、2,0x80,0x70,0x8f,0x08,0x08,0xf8,0x08,0x00,0x82,0x9a,0x56,0x63,0x22,0x52,0x8e,0x00,0x80,0x40,0x33,0x0c,0x33,0x40,0x80,0x00,/*- 文字: 正 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x02,0x02,0xc2,0x02,0x02,0x02,0xfe,0x82,0x82,0x82,0x82,0x82,0x02,0x00,0x00,0x40,0x40,0x40,0x7f,0x40,0x40,0x40,0x7f,0x40,0x40,0x

35、40,0x40,0x40,0x40,0x40,0x00,/*- 文字: 反 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0xfc,0x24,0x24,0xe4,0x24,0x24,0x22,0x22,0x22,0xa3,0x62,0x00,0x00,0x00,0x40,0x30,0x8f,0x80,0x40,0x40,0x23,0x14,0x08,0x14,0x22,0x41,0x40,0x80,0x80,0x00,/*- 文字: 停 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x80,0x60,0xf8,0x07,

36、0x00,0x04,0x74,0x54,0x55,0x56,0x54,0x54,0x74,0x04,0x00,0x00,0x00,0x00,0xff,0x00,0x03,0x01,0x05,0x45,0x85,0x7d,0x05,0x05,0x05,0x01,0x03,0x00,/*- 文字: 止 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xff,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x40,0x40,0x40,0x7f,0x40,0x40,0x40

37、,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,/*- 文字: 加 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x10,0x10,0xff,0x10,0x10,0xf0,0x00,0x00,0xf8,0x08,0x08,0x08,0xf8,0x00,0x00,0x80,0x40,0x30,0x0f,0x40,0x80,0x7f,0x00,0x00,0x7f,0x20,0x20,0x20,0x7f,0x00,0x00,/*- 文字: 减 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x

38、00,0x02,0x0c,0xc0,0x00,0xf8,0x08,0x48,0x48,0x48,0x08,0xff,0x08,0x09,0x8a,0x00,0x02,0x02,0x7f,0x80,0x40,0x3f,0x00,0x1e,0x92,0x5e,0x20,0x17,0x38,0x46,0xf1,0x00, ; void delay_10us(uint n) /延时n个10us12m晶振 uint i; for(i=n;i0;i-) _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); void delay_50us(uint z)uint

39、x,y;for(x=z;x0;x-)for(y=19;y0;y-); void delay_ms(uint z) uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void motor() for (ii=0; ii8; ii+) /一个周期转30度 p1 = tempii; /取数据 delay_50us(num); /调节转速 bushu+; if(bushu=10000)bushu=0; void delay(uint i)while(-i);/*/void read_busy()/读“忙”函数-数据线的最高位db71则busyp0=0x00; rs=0;

40、rw=1; en=1;while(p0 & 0x80);en=0;void write_lcd_command(uchar value)/写命令函数 read_busy();/对lcd的每次读写都要读忙 rs=0; /选择命令 rw=0; /读操作 lcd_databus=value; en=1;/en由1-0锁存有效数据 _nop_(); _nop_(); en=0;void write_lcd_data(uchar value)/写数据函数 read_busy(); rs=1; /选择数据 rw=0; lcd_databus=value; en=1;/en由1-0锁存有效数据 _nop_(

41、); _nop_(); en=0;void set_page(uchar page)/设置“页”lcd12864共8页,一页是8行点阵点 page=0xb8|page; /页的首地址为0xb8 write_lcd_command(page);void set_line(uchar startline) /设置显示的起始行 startline=0xc0|startline; /起始行地址为0xc0 write_lcd_command(startline); /设置从哪行开始:共0-63;一般从0 行开始显示 void set_column(uchar column)/设置显示的列 column=

42、column &0x3f; /列的最大值为64 column= 0x40|column; /列的首地址为0x40 write_lcd_command(column);/规定显示的列的位置 void setonoff(uchar onoff)/显示开关函数:0x3e是关显示,0x3f是开显示 onoff=0x3e|onoff; /onoff:1-开显示;0-关显示write_lcd_command(onoff);void selectscreen(uchar screen)/选择屏幕 switch(screen) case 0: cs1=0;cs2=0;break; /全屏 case 1: cs

43、1=0;cs2=1;break;/左半屏 case 2: cs1=1;cs2=0;break;/右半屏 default:break; void clearscreen(uchar screen)/清屏函数 uchar i,j; selectscreen(screen);/0-全屏;1-左半屏;2-右半屏 for(i=0;i8;i+) /控制页数0-7,共8页 set_page(i);set_column(0); for(j=0;j64;j+) /控制列数0-63,共64列 write_lcd_data(0x00); /写入0,地址指针自加1 void init_lcd() /lcd的初始化 s

44、etonoff(1); /开显示selectscreen(0);/clearscreen(0);/清屏set_line(0); /开始行:0void display_ascii(uchar screen,uchar page,uchar column,uchar a16,uchar h)uchar i;selectscreen(screen);set_page(page);set_column(column*8);for(i=0;i8;i+)/显示字符上半部分:8*8 write_lcd_data(*(ah+i);set_page(page+1);/显示字符下半部分:8*8 set_colum

45、n(column*8);for(i=0;i8;i+)write_lcd_data(*(ah+i+8); void display_hz(uchar screen,uchar page,uchar column,uchar a32,uchar h)uchar i;selectscreen(screen);set_page(page);/写上半页:16*8 set_column(column*16); /控制列for(i=0;i16;i+) /控制16列的数据输出write_lcd_data(*(ah+i); /汉字的上半部分 set_page(page+1);/写下半页:16*8 set_col

46、umn(column*16);/控制列 for(i=0;i16;i+)/控制16列的数据输出write_lcd_data(*(ah+16+i);/汉字的下半部分 void disp() display_hz(1,2,0,hz,9); display_hz(1,2,1,hz,10);/ display_ascii(1,2,5,time,18); display_hz(2,2,0,hz,0);/ display_hz(2,2,1,hz,1);/ display_hz(2,2,2,hz,2);/ display_hz(1,0,0,hz,5);/guanjian zhizheng display_hz

47、(1,0,1,hz,6);/guanjian zhizheng display_hz(1,0,2,hz,7);/guanjian zhizheng display_hz(1,0,3,hz,8);/guanjian zhizheng display_hz(1,4,0,hz,11);display_hz(1,4,1,hz,12);display_ascii(1,4,5,time,18);display_ascii(1,4,6,time,2); display_ascii(1,4,7,time,0); display_ascii(2,4,0,time,1);display_ascii(2,4,1,t

48、ime,0);display_ascii(2,4,2,time,0); display_ascii(2,4,3,time,4); display_ascii(2,4,4,time,2);display_ascii(2,4,5,time,1);display_ascii(2,4,6,time,0);display_ascii(2,4,7,time,3);display_hz(1,6,0,hz,13); display_hz(1,6,1,hz,14); display_ascii(1,6,5,time,1);display_hz(1,6,3,hz,15); void disp2() /功能提示 display_ascii(1,0,0,time,19); display_ascii(1,0,1,time,1);

温馨提示

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

评论

0/150

提交评论