当前位置:首页 >> 机械/仪表 >>

机电传动单向数控平台课程设计


一、 教学目的
通过课程设计培养学生综合运用所学知识和能力、 提高分析和解决实际问题 能力的一个重要环节, 专业课程设计时建立的专业基础课程和专业方向课的基础 上的,是学生根据所学课程进行的工程基本训练,课程设计的目的在于: 1. 培养学生综合运用所学的基础理论和专业知识,独立进行机电控制系 统(产品)的初步设计工作,并结合设计或试验研究课题进一步巩固 和扩大知识领域。

2. 培养学生搜索、阅读和综合分析参考资料,运用各种标准和工具书籍 一集编写技术文件的能力、提高计算、绘图等基本能力。 3. 培养学生掌握机电产品设计的一半程序和方法,进行工程师基本素质 的训练。 4. 树立正确的设计思想及严肃认真的工作作风。

二、 设计要求

1. 电机驱动方式:步进电机。 2. 机械传动方式:螺旋丝杠。 3. 电气控制方式:单片微机控制。 4. 功能控制要求:速度控制。 5. 主要设计参数:单向工作行程 1000mm,移动负载质量 50kg,负载移动 阻力 50N,移动速度控制 3m/min。

三、 总体方案设计

2.1 方案概述:

本系统将采用 ATMEL 公司生产的 MEGA-16L 系列产品作为控制单元。通 过控制单片机的引脚发送的脉冲信号控制步进电机的速度然后将步进电机产生
1

的力矩通过减速器进行一级减速之后输入螺旋丝杠端驱动工作平台的移动。 同时 该系统将采用实时控制系统通过按键的控制调整当前的速度值并将速度值显示 在显示系统中,显示系统由 12864 屏幕承担工作任务,可以显示中文字符,通过 将当前的速度值显示在屏幕上可以方便控制者对系统的操作。

2.2 方案特点:

本系统与其他同类产品相比具有以下的特点:

1. 单片机控制具有较强的灵活性,可以处理多种可能发生的情况。 2. 响应速度快,提高控制的实时性。 3. 造价比较便宜,系统扩展方便。 4. 可视化程度高,方便控制。

四、 机械传动系统设计

给定参数: 单向工作行程:1000mm 移动负载质量:50kg 负载移动阻力:50N 移动速度控制:3m/min

4.1 滑动螺旋传动计算

一、确定丝杠的导程 查手册知导程为 10MM 的丝杠其公称直径范围最大,且在这个公称直 径 范 围 内 的 丝 杠 其 优 先 腿 脚 选 用 的 稻 城 也 为 10MM, 因 此 , 确 定 选 用 导 程 Ph=10MM 的丝杠。

2

二、丝杠的转速

n3 ? V / h P? 3 0 0r / m i n

三、丝杠的平均载荷

Fm ? ?mg ? Ff ? 0.1*50*9.8 ? 50 ? 100

四、预期额定动载荷

(1)按预期工作时间估计 查表:轻微冲击 f w =1.2 精度等级 1-3,取 f a =1.0 可靠性 96%,取 fc =0.53 已知:寿命 Lh =15000h 得: Cam ?

f w Fm 3 60 n

m Lh

100 f a f c

? 1848

五、丝杠副的型号

根据所选定的导程 Ph =10mm 以及动载荷 Ca ? Cam 选用 FFZD 型丝杠,型号 FFZD3210,其主要参数如下: 公称直径 32mm 导程 10mm 丝杠大径 30mm
3

轴端直径<=24mm 动负荷 32KN 静载荷 70KN 刚度 1170N/um

六、耐磨性计算

选择梯形螺纹 ξ 的值为:0.8

整体式螺母的φ 值在 1.2-2.5 之间选取φ 值为 1.8 φ 的值为:1.8

许用压强在 18 MPa -25 MPa 之间 ,选取[p]为 22 MPa 许用压强[p]为:22MPa

七、验算自锁

螺旋副摩擦系μ s 在 0.08-0.1 之间,选取螺旋摩擦系数为 0.088 螺旋副摩擦系数μ s 为:0.088

根据φ ? arctan

L 得出螺纹升角 ? d2

螺纹升角为:1.658°

4

根据 ? ' ? arctan

cos

?s 得出当量摩擦角 ?
2

? ' =5.21

八、计算驱动转矩

T?T 1 ? T 2 ? T 3

T1 ? F

d2 t a n? ( ? ?' ) 2

T2 、 T3 为轴承摩擦力矩
驱动转矩 T 为:258(N*mm)

九、计算螺杆强度

?? (

4F 2 T 2 ) ? 3( ) 2 ? d1 0.2d13

[ ? ]取 71-118.333Mpa

螺杆当量应力σ 的值为:0.043MPa

? < [ ? ] 合格

十、螺纹牙强度计算

5

??
??

F ? [? ] ? d1bz F ? [? ] ? d bz

螺杆

螺母

?b ? ?b ?

3F ? [? ]b ? d1b2 z 3F ? [? ]b ? d b2 z

螺杆

螺母

螺纹牙底宽度为:5.2mm 螺杆抗剪强度为:0.008MPa 螺杆抗弯强度为:0.018MPa 螺母抗剪强度为:0.077MPa 螺母抗弯强度为:0.178MPa

十一、螺杆的稳定性计算

螺杆的最大工作长度 l 为:1300mm 两端固定长度系数μ 为:0.5 螺杆材料的弹性模量 E 为:207000MPa

Fc ?

480 1 ? 0.0002(

?l
i

* )2

? d12
4

(i ?

la d1 ?d4 ? , la ? 1 ) A 4 64

应使

Fc ? 2.5 ? 4 (不能满足此条件应该加大 d 1 ) F

临界载荷 Fc 的值为:326929.962N

6

十二、螺杆的刚度计算

? LF ?

FL 4 FL ? E A ? E12d

? LT ?

L TL 16TL2 * ? 2? Gl p ? 2Gd14
16TL2 4 FL ? 2 4 ? Gd1 ? Ed1 2

? LF ? ? LT ? ? LF ?
(l p ?

? d14
32

)

螺杆材料的切变模量 G 为:83000MPa 轴向载荷使导程产生的变形量δ LF 为:0mm 转矩使导程产生的变形量δ LT 为:0mm 导程的总变形量δ L 为:0mm

十三、计算横向振动

螺杆两支承间的最大距离 lc 为:1000mm 两端固定的系数μ 1 为:4.730

nc ? 12.3 ?10

6

?12 d1
lc2

临界转速 nc 为: 5255.678(r/min)

十四、计算效率

7

? ? ( 0 . 9?5?

tan ? 0.99) tan ?( ? ? '

)

轴承效率为:0.99 效率为:0.26678

4.2 电动机的选择
选用步进电机: 工作机所需输入功率: P W ? F ? v =(50+50N)*3m/min=5w 电机所需功率: Pd ? 其中,
P W

?

?

?1?23? 23?4

P W

? 48.6W

?1 为高速级联轴器效率,0.99

?2 为滚动轴承效率,0.99

?3 为闭式圆柱齿轮效率,0.97(按 8 级精度)
?4 为螺旋传动效率,0.26678
所以查表选电机型号为:75BF001 电机参数: 型号: 相数: 75BF001 3 1.5 24 3 0.392 1750

步距角(°): 电压/V: 相电流/A:

最大静转矩/(N·m): 空载起动频率/(step/s): 空载运行频率/(step/s): 电感/mH: 电阻/Ω : 19 0.62

8

分配方式: 外形尺寸/mm: 质量/kg:

三相六拍 φ 75×53

1.1

4.3 轴承选择
查表采用固定式 E 型、 F 型轴承、 轴承型号为 7602020TVP, 主要参数如下: 内径 d=20mm 外径 D=47mm 宽度 B=14mm 球径 Dw=5.953mm 球数 Z=15 动负荷 Ca=19600N 预加负载 F0=2300N 极限转速 nm=3000r/min 重量 m=0.123kg

4.4 轴承校核
(1)由设计条件知,负载很小 G=mg=500N<19600,因此轴承承载能力能完 全满足要求。

(2)寿命设计:

P ? Rf p f p =1.1
f t =1

9

Lh1 ?

106 ft c ? ( ) ? 157140h 60n P

4.6 润滑与密封
轴承的润滑: 根据轴颈的圆周速度,轴承可以用润滑脂和润滑油润滑,由于齿轮的转速 根据以知是大于 2m/s,所以润滑可以靠机体的飞溅直接润滑轴承。 齿轮的润滑: 采用浸油润滑,由于低速级周向速度为 2.87m/s,所以浸油高度约为六分 之一大齿轮半径 齿轮与轴承用同种润滑油较为便利,考虑到该装置用于小型设备,选用 L-AN15 润滑油。 密封: 采用迷宫式密封件,圆周速度小于等于 10m/s,环境温度低于润滑脂溶点

五、电气控制系统设计
5.1 控制芯片选择
本系统将采用 ATMEL 公司生产的 AVR 系列 MEGA-16L 产品作为控制 单元。其具有以下优点: 一、简便易学,费用低廉 首先,对于非专业人员来说,选择 AVR 单片机的最主要原因,是 进入 AVR 单片机开发的门槛非常低,只要会操作电脑就可以学习 AVR 单片机的开发。单片机初学者只需一条 ISP 下载线,把编辑、调试通 过的软件程序直接在线写入 AVR 单片机, 即可以开发 AVR 单片机系列 中的各种封装的器件。 AVR 单片机因此在业界号称 “一线打天下 ”。

10

其次, AVR 单片机便于升级。 AVR 程序写入是直接在电路板上进 行程序修改、烧录等操作,这样便于产品升级。 再次,AVR 单片机费用低廉。学习 AVR 单片机可使用 ISP 在线下 载编程方式 (即把 PC 机上编译好的程序写到单片机的程序存储器中 ), 不需购买仿真器、编程器、擦抹器和芯片适配器等,即可进行所有 AVR 单片机的开发应用,这可节省很多开发费用。程序存储器擦写可达 10000 次以上,不会产生报废品。 二、高速、低耗、保密 首先, AVR 单片机是高速嵌入式单片机: 1 、AVR 单片机具有预取指令功能,即在执行一条指令时,预先把 下一条指令取进来,使得指令可以在一个时钟周期内执行。 2 、多累加器型,数据处理速度快。 AVR 单片机具有 32 个通用工 作寄存器,相当于有 32 条立交桥,可以快速通行。 3 、中断响应速度快。 AVR 单片机有多个固定中断向量入口地址, 可快速响应中断。 其次, AVR 单片机耗能低。对于典型功耗情况, WDT 关闭时为 100nA , 更适用于电池供电的应用设备。 有的器件最低 1.8 V 即可工作。 再次,AVR 单片机保密性能好。它具有不可破解的位加密锁 Lock Bit 技术,保密位单元深藏于芯片内部,无法用电子显微镜看到。 三、 I/O 口功能强 , 具有 A/D 转换等电路 1. AVR 单片机的 I/O 口是真正的 I/O 口,能正确反映 I/O 口输入 / 输出的真实情况。工业级产品,具有大电流 (灌电流 )10 ~ 40 mA, 可直接 驱动可控硅 SCR 或继电器,节省了外围驱动器件。 2. AVR 单片机内带模拟比较器, I/O 口可用作 A/D 转换,可组成 廉价的 A/D 转换器。 ATmega48/8/16 等器件具有 8 路 10 位 A/D。 3. 部分 AVR 单片机可组成零外设元件单片机系统, 使该类单片机 无外加元器件即可工作,简单方便,成本又低。

11

4. AVR 单片机可重设启动复位 , 以提高单片机工作的可靠性。有看 门狗定时器实行安全保护 , 可防止程序走乱 (飞 ), 提高了产品的抗干扰能 力。 四、有功能强大的定时器 /计数器及通讯接口 定时 / 计数器 T/C 有 8 位和 16 位 , 可用作比较器。计数器外部中断 和 PWM(也可用作 D/A)用于控制输出,某些型号的 AVR 单片机有 3 ~ 4 个 PWM,是作电机无级调速的理想器件。 AVR 单片机有串行异步通讯 UART 接口 , 不占用定时器和 SPI 同步 传输功能 , 因其具有高速特性,故可以工作在一般标准整数频率下 , 而波 特率可达 576K 。

5.2. 电机驱动芯片选择
在电机驱动芯片我选用 L298n ,它能驱动的最高电压为 50V ,单 向电流最大可达 5A

12

13

L298n 芯片采用以下接线方式:

14

5.3 稳压电源芯片的选择

在稳压电源上我选择三端稳压集成电路 7805 为单片机供电。 电子产品中,常见的三端稳压集成电路有正电压输出的 78 ×× 系列和 负电压输出的 79××系列。顾名思义,三端 IC 是指这种稳压用的集成电路, 只有三条引脚输出,分别是输入端、接地端和输出端。它的样子象是普通的 三极管, TO- 220 的标准封装,也有 9013 样子的 TO-92 封装。 用 78/79 系列三端稳压 IC 来组成稳压电源所需的外围元件极少,电路 内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格 便宜。该系列集成稳压 IC 型号中的 78 或 79 后面的数字代表该三端集成稳 压电路的输出电压,如 7806 表示输出电压为正 6V , 7909 表示输出电压为 负 9V 。 因为三端固定集成稳压电路的使用方便,电子制作中经常采用。 在实际应用中,应在三端集成稳压电路上安装足够大的散热器(当然小 功率的条件下不用)。当稳压管温度过高时,稳压性能将变差,甚至损坏。 当制作中需要一个能输出 1.5A 以上电流的稳压电源,通常采用几块三 端稳压电路并联起来,使其最大输出电流为 N 个 1.5A ,但应用时需注意: 并联使用的集成稳压电路应采用同一厂家、同一批号的产品,以保证参数的 一致。另外在输出电流上留有一定的余量,以避免个别集成稳压电路失效时 导致其他电路的连锁烧毁。 在 78 ** 、 79 ** 系列三端稳压器中最常应用的是 TO-220 和 TO-202 两种封装。这两种封装的图形以及引脚序号、引脚功能如附图所示。 图中的引脚号标注方法是按照引脚电位从高到底的顺序标注的。 这样标 注便于记忆。引脚①为最高电位,③脚为最低电位,②脚居中。从图中可以 看出,不论正压还是负压,②脚均为输出端。对于 78** 正压系列,输入是最 高电位,自然是①脚,地端为最低电位,即③脚,如附图所示。对与 79** 负压系列,输入为最低电位,自然是③脚,而地端为最高电位,即①脚,如

15

附图所示。

5.3 串行通讯设计
在本系统中我设计了串行通讯的模块, 可以使单片机接受上位电脑发送 过来的数据进而控制电机的转动,实时的通讯系统方便了对该平台的控制, 同时能实现远程控制。 在串行通讯中我设计使用的是 MAX232N 芯片, 以下是其接线电路与引脚 配置图。

16

5.4 控制电路设计
首先设计的部分是 ATmega16 单片机的最小外围电路,包括:晶振电路、 复位电路、 ISP 下载电路、供电电源电路。 晶振电路图如下:

复位电路如下:

17

稳压电源电路:

ISP 下载电路如图:

18

5.5 显示系统设计
改系统的显示部分我采用 12864 屏幕作为显示元件, 它作为汉字屏幕能 显示 4*8 个汉字。 同时能使用穿行方式与单片机进行通信接受单片机发送的 数据并显示

19

工作于串行模式时的引脚定义: PIN1------------ GND PIN2------------VDD PIN3------------V0 电源-, 一般接 0V。 电源+, 一般接 5V。 对比度调整端。

PIN4------------CS,片选 PIN5------------SID,数据 PIN6------------SCK,脉冲 PIN7------------NC,不连接 PIN8------------NC,不连接 PIN9------------NC,不连接 PIN10-----------NC,不连接 PIN11-----------NC,不连接 PIN12-----------NC,不连接 PIN13-----------NC,不连接 PIN14-----------NC,不连接
20

PIN15-----------PSB GND

并行:PSB=1,可以接 VCC;

串行:PSB=0,一般接

PIN16 ----------NC,不连接 PIN17-----------RST,模块复位(低电平有效) PIN18 ----------NC,不连接 PIN19 ----------LED+ ,背光 +,一般接 5V。 PIN20 ----------LED- ,背光 -,一般接 GND。

下图是 12864 的驱动电路:

12864 屏幕的指令集:

21

22

六、部分程序
// // // 串口通讯 芯片: Mega16 晶振: 16M

//计算机串口发送字节后 单片机接收到返回, #include <iom16v.h> #include <MACROS.h> unsigned char temp,shu=0; /**************************************************************** **************/

void uart0_init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UCSRC = BIT(URSEL) | 0x06; UBRRL = 0x67; //set baud rate lo UBRRH = 0x00; //set baud rate hi UCSRB = 0x98; } //tansmit------------------------------- 串口发 ----void uart_t( unsigned char datax ) {

while ( !( UCSRA & (1<<UDRE)) ); UDR = datax; } /* 字符输入函数 */
23

unsigned int uart_r(void) { while(!(UCSRA& (1<<RXC))); return UDR; } /* 字符串输出函数 */

void main() { DDRD=0xff; uart0_init(); SREG=0x80; while(1); // 开总中断

}

#pragma interrupt_handler uart0_rx_isr:12 void uart0_rx_isr(void) { //uart has received a character in UDR temp=UDR; uart_t(temp); //送什么发什么 PORTD=temp;

// 串口接收中断

////////////////////////////////这里可以收到串口助手发来的数 据

}

24

七、参考文献
[1]康永泽,论机电一体化的发展。 (论文) [2]上海电器科学研究所,电机与控制应用(期刊) 。 [3]计时鸣,机电一体化控制技术与系统。 [4]尚涛,机电控制技术。 [5]尹志强,机电一体化系统设计课程设计指导书。 [6]刘同法,单片机外围接口电路与工程实践。 [7]龙威林,单片机应用入门:AT89S51 和 AVR [8]陈忠平,单片机基础和最小系统实践。 [9]白静,数字电路与逻辑设计。 [10]董景新,控制工程基础。 [11]程志红,机械设计。 [12]程志红,机械设计课程上机与设计。 [13]肖兴明,机电控制及自动化。 [14]李朝青,单片机原理及接口技术。 [15]路敦民,机电传动及控制。 。

25

八、程序附页
主程序:
#include #include <iom16v.h> // 头文件定义 <macros.h>

#pragma data:code #define uchar unsigned char #define uint unsigned int #include "12864.c" unsigned char data=0; uint speed=0; uchar turn=0; /******************************************* 函数名称 : Delayus 功 参 返回值 能 : 延时指定微秒( 8M 晶振) 数 : US--延时的微秒数 : 无

/********************************************/ void delay_us(uint US) { uint i; US=US*10/4; for( i=0;i<US;i++); }

void delay_ms(uint MS) { uint i,j;
26

for( i=0;i<MS;i++) for(j=0;j<1141*2;j++); //1141 是在 8MHz 晶振下,通过软件仿真反复实 验得到的数值 } /********************************************/

void port_init(void)//////// 端口初始化 { DDRA DDRB DDRC DDRD } //************************************T1 初始化 void timer1_init(void) { TCCR1B = 0x00; //stop TCNT1H = 0xFF; ////////////////////setup 初值 TCNT1L = 0x30; TCCR1A = 0x00;///////// ? tart Timer TCCR1B = 0x02; } = 0xFF; = 0xFF; = 0xFF; = 0x00;

/******************************************** 函数名称 : KeyPress 参 返回值 数 : 扫描键值 : 1 , 2 , 3, 4

27

/********************************************/ unsigned char KeyPress() { uchar i=0; DDRD&=0xf0; PIND|=0xf0; PORTD=0xff;

switch PIND { case 0xef: { // delay_ms(1); if(PIND==0xef) { i=1; return i; break; } }

case 0xdf: { // delay_ms(1); if(PIND==0xdf) { i=2; return i; break;

28

} }

case 0xbf: { // delay_ms(1); if(PIND==0xbf) { i=3; return i; break; } }

case 0x7f: { // delay_ms(1); if(PIND==0x7f) { i=4; return i; break; } }

case 0xff: {

29

//

delay_ms(1); if(PIND==0xff) { i=0; return i; break; }

}

} }

void init_devices() { CLI(); port_init(); timer1_init(); SEI(); }

void speedup() { speed++; }

void speeddown()

30

{ speed--; }

void speeddown() { CLI(); }

void back() { if(turn==0) turn=1; if(turn==1) turn=0; }

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

void main()

{ init_devices(); while(1) { write_12864(0,0,1/speed*1.5*60/360+48); write_12864(6,0,"r/min"); data=KeyPress(); if(data==1) speedup();

31

if(data==2) speeddown(); if(data==3) stop(); if(data==4) back(); } }

#pragma interrupt_handler timer1_ovf_isr:9 void timer1_ovf_isr(void) //TIMER1 has overflowed { TCNT1H = speed; //reload counter high value TCNT1L = 0xF8; //reload counter low value

flag++; flag%=9; if(turn==0) { switch(flag) { case 0: PORTB|=BIT(0); PORTB&=~BIT(1); PORTB&=~BIT(2); case 1: PORTB|=BIT(0); PORTB|=BIT(1); PORTB&=~BIT(2); case 2:

32

PORTB|=BIT(1); PORTB&=~BIT(2); PORTB&=~BIT(0); case 3: PORTB|=BIT(1); PORTB|=BIT(2); PORTB&=~BIT(0); case 4: PORTB|=BIT(2); PORTB&=~BIT(0); PORTB&=~BIT(1); case 5: PORTB|=BIT(2); PORTB|=BIT(0); PORTB&=~BIT(1); } }

if(turn==1) { switch(flag) { case 0: PORTB|=BIT(0); PORTB&=~BIT(1); PORTB&=~BIT(2); case 1: PORTB|=BIT(0); PORTB|=BIT(1);

33

PORTB&=~BIT(2); case 2: PORTB|=BIT(1); PORTB&=~BIT(2); PORTB&=~BIT(0); case 3: PORTB|=BIT(1); PORTB|=BIT(2); PORTB&=~BIT(0); case 4: PORTB|=BIT(2); PORTB&=~BIT(0); PORTB&=~BIT(1); case 5: PORTB|=BIT(2); PORTB|=BIT(0); PORTB&=~BIT(1); } }

}

void uart0_init(void)

34

{ UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UCSRC = BIT(URSEL) | 0x06; UBRRL = 0x67; //set baud rate lo UBRRH = 0x00; //set baud rate hi UCSRB = 0x98; } //tansmit------------------------------- 串口发 ----void uart_t( unsigned char datax ) {

while ( !( UCSRA & (1<<UDRE)) ); UDR = datax; } /* 字符输入函数 */

unsigned int uart_r(void) { while(!(UCSRA& (1<<RXC))); return UDR; } /* 字符串输出函数 */

35

12864 屏幕驱动程序:
///////////////////////////////////////////////////////////////// ///////////// ///////////////////// LCD 12864 汉 字 屏

//////////////////////////// ///////////////////// 运 行 环 境 : ICC AVR

//////////////////////////// ///////////////////// 目 标 系 统 : Atmega16L

//////////////////////////// ///////////////////// 编 辑 时 间 : 2010-1-8

//////////////////////////// ///////////////////// 编辑人 #include #include <iom16v.h> <macros.h> unsigned int : zhanggan // 头文件定义

#define uint

#define uchar unsigned char #define x1 #define x2 #define y #define comm #define dat 端口操作定义 #define LCD_RS_CLR #define LCD_RW_CLR #define LCD_E_CLR #define LCD_RS_SET #define LCD_RW_SET #define LCD_E_SET #define LCD_OUT PORTC&=~0X01;delay(5) PORTC&=~0X02;delay(5) PORTC&=~0X04;delay(5) PORTC|= 0X01;delay(5) PORTC|= 0X02;delay(5) PORTC|= 0X04;delay(5) DDRA = 0XFF;delay(5)
36

0x80 0x88 0x80 0 1

#define LCD_IN #define LCD_Data

DDRA = 0X00;delay(5) PORTA

通用延时函数 void delay(uint us) { while(us--); } void delay_nms(uint ms) { uint i,j; for(i=0;i<ms;i++) for(j=0;j<700;j++); } 忙检测函数 void chk_busy (void) { LCD_Data=0xff; LCD_RS_CLR; LCD_RW_SET; LCD_E_SET; LCD_IN; while(PINA&0X80); LCD_OUT; LCD_E_CLR; } 字节数据写入函数 void wr_lcd (uchar dat_comm,uchar content) { //delay time

37

chk_busy (); LCD_OUT; if(dat_comm) { LCD_RS_SET; LCD_RW_CLR; } else { LCD_RS_CLR; LCD_RW_CLR; } LCD_Data=content; LCD_E_SET; LCD_E_CLR; } 清 DDRAM- 函数 void clrram (void) { wr_lcd (comm,0x30); wr_lcd (comm,0x01); } 液晶屏初始化函数 void init_lcd (void) { wr_lcd (comm,0x30); wr_lcd (comm,0x01); wr_lcd (comm,0x06); wr_lcd (comm,0x0c); /*30--- 基本指令动作 */ /* 清屏,地址指针指向 00H*/ /* 光标的移动方向 */ /* 开显示,关游标 */ //output data or comm //command //write //data //write

38

} 全屏字符显示函数 void chn_disp (uchar const *chn) { uchar i,j; uchar add[]={0,2,1,3}; wr_lcd (comm,0x30); wr_lcd (comm,0x80); for (j=0;j<4;j++) { for (i=0;i<16;i++) wr_lcd (dat,chn[add[j]*16+i]); } } 显示图形函数 void img_disp (uchar const { uchar i,j; for(j=0;j<32;j++) { for(i=0;i<8;i++) { wr_lcd (comm,0x34); wr_lcd (comm,y+j); wr_lcd (comm,x1+i); wr_lcd (comm,0x30); wr_lcd (dat,img[j*16+i*2]); wr_lcd (dat,img[j*16+i*2+1]); } *img)

39

} for(j=32;j<64;j++) { for(i=0;i<8;i++) { wr_lcd (comm,0x34); wr_lcd (comm,y+j-32); wr_lcd (comm,x2+i); wr_lcd (comm,0x30); wr_lcd (dat,img[j*16+i*2]); wr_lcd (dat,img[j*16+i*2+1]); } } wr_lcd (comm,0x36); } 点阵显示函数 void lat_disp (uchar data1,uchar data2) { uchar i,j,k,x; x=x1; for(k=0;k<2;k++) { for(j=0;j<16;j++) { for(i=0;i<8;i++) { wr_lcd (comm,0x34); wr_lcd (comm,y+j*2); wr_lcd (comm,x+i);

40

wr_lcd (comm,0x30); wr_lcd (dat,data1); wr_lcd (dat,data1); } for(i=0;i<8;i++) { wr_lcd (comm,0x34); wr_lcd (comm,y+j*2+1); wr_lcd (comm,x+i); wr_lcd (comm,0x30); wr_lcd (dat,data2); wr_lcd (dat,data2); } } x=x2; } wr_lcd (comm,0x36); } 端口初始化函数 void port_init(void) { PORTA = 0x00; DDRA = 0xFF;

PORTC = 0x00; DDRC } END FILE = 0x07;

41

42


相关文章:
机电传动单向数控平台设计
机电传动单向数控平台设计_电子/电路_工程科技_专业资料。机电传动单向数控 平台设计 专班 业:机械电子 级:理工 11-1 学生姓名:张茂乐 学号: 22111614 2014 年...
机电传动单向数控平台设计
课程设计题目:机电传动单向数控平台设计 ①电机驱动方式:步进电机、直流伺服电机、交流伺服电机; ②机械传动方式:螺旋丝杆、滚珠丝杆、同步皮带、链传动等; ③电气...
机电传动单向数控平台设计
机电传动单向数控平台设计 专班 业: 级: 学生姓名: 学生姓名: 学号: 指导老师: 指导老师: 目录 1、设计任务 1.1 设计任务介绍及意义 1.2 设计任务明细 1....
机电传动单向数控平台课程设计
机电传动单向数控平台课程设计_机械/仪表_工程科技_专业资料。一、 教学目的通过课程设计培养学生综合运用所学知识和能力、 提高分析和解决实际问题 能力的一个重要...
机电传动单向数控平台设计
机电传动单向数控平台设计_机械/仪表_工程科技_专业资料。机械电子方向的课程设计一、 教学目的通过课程设计培养学生综合运用所学知识和能力、 提高分析和解决实际问题...
机电传动单向数控平台设计(矿大版)
1 设计任务 1.1 设计任务介绍及意义 1、课程设计题目机电传动单向数控平台设计 2、课程设计内容(1)机械传动结构设计 (2)电气测控系统 3、课程设计意义(1)培养学...
机电传动单向数控平台 矿大 机械电子 有图
机电传动单向数控平台 矿大 机械电子 有图_电子/电路_工程科技_专业资料。机电传动单向数控平台设计 有图 矿大机械工程及自动化专业 机械电子方向专业课程设计说明书...
机电传动单向数控平台设计
机电传动单向数控平台设计 课程设计机电传动单向数控平台设计 课程设计隐藏>> 机械电子方向 课程设计题目:机电传动单向数控平台设计 学班 院: 级: 机电工程学院 机自...
课程设计机电传动单向数控平台设计_图文
课程设计机电传动单向数控平台设计_工学_高等教育_教育专区 暂无评价|0人阅读|0次下载课程设计机电传动单向数控平台设计_工学_高等教育_教育专区。目录 一、设计...
机电传动单向数控平台设计
图 一轴数控平台 2 机械工程及自动化专业课程设计 1、设计任务 1.1 设计任务介绍及意义(1)课程设计题目:机电传动单向数控平台设计 (2)主要设计内容:机械传动...
更多相关标签: