/*******************************************
File:HS.C
SoftWare Enviroment:Complier is ICC AVR7.25
HardWare:ATmega16
Clock:internal clock 11.0592MHZ
Data:2012-4-20
Function:上盖板测量
Remarks:
/******************************************/
#include <iom32v.h> //IC type
#include <macros.h>
#include <stdio.h>
#include <Eeprom.h>
#include "DMulti.h"
unsigned char DisplayBuffer[8];
unsigned char TimeDelayParameter[20]={0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
unsigned char TimePositionFlag[20]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
unsigned int MotorParameter[24]={0};
unsigned char SaveMotorParameterAddress[24]={50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73};
unsigned int *P;
unsigned char SavePosiotionAddress=100;
unsigned char PosiontPrameter;
/*******************************************
Function Name: Delayus
Function: Delay us (11.0592M)
Remarks: this function isn't accurate,the bigger us the more accurate of the delay time
Return value:
/********************************************/
void Delayus(unsigned int US)
{
unsigned int i;
US=US*3/2;
for( i=0;i<US;i++);
}
/*******************************************
FUnction Name: Delayms
Name:Delay ms(8M)
Parameter:
Return Value:
/********************************************/
void Delayms(unsigned int MS)
{
unsigned int i,j;
for( i=0;i<MS;i++)
for(j=0;j<1577;j++);
}
/*******************************************
Function Name:LCDDataIn
Function:
Parameter:
Return value:
/********************************************/
void U595OutData(unsigned char ByteData,unsigned char UT)
{
unsigned char Count,Temp;
PORTA&= ~(BIT(SerialCLK));
Delayus(1);
for(Count=0;Count<8;Count++)
{
Temp=PORTA;
Temp&=0x7f;
PORTA=(Temp|(ByteData&0x80));
ByteData<<=1;
Delayus(1);
PORTA|= BIT(SerialCLK);
Delayus(1);
PORTA&= ~(BIT(SerialCLK));
Delayus(1);
}
if(U30==UT)
{
PORTA|= BIT(SerialOutPut0);
Delayus(1);
PORTA&= ~(BIT(SerialOutPut0));
}
else if(U4==UT)
{
PORTA|= BIT(SerialOutPut1);
Delayus(1);
PORTA&= ~(BIT(SerialOutPut1));
}
else
{
PORTA|= BIT(SerialOutPut2);
Delayus(1);
PORTA&= ~(BIT(SerialOutPut2));
}
}
/*******************************************
Function Name: Board_init
Function:
Parameter:
Return value:
********************************************/
void Board_init(void)
{
//Set I/O Direction
DDRA=0xf8;
PORTA=0x00;
DDRB=0xfC;
PORTB=0xff;
DDRC=0xff;
PORTC=0x00;
DDRD=0x02;
PORTD=0xff;
U595OutData(0x0f,U30);
U595OutData(0,U4);
U595OutData(0x79,U43);
U595OutData(0x0f,U30);
U595OutData(0,U4);
U595OutData(0x79,U43);
}
/*******************************************
Function Name: Initial_INT
Function: External Interrupt Initialization
Parameter:
Return Value:
/********************************************/
void Initial_INT(void)
{
MCUCR|=0x0a; //the falling edge of INTx generate an interrupt request
GICR|=BIT(INT0);//Enable the INT0,INT1 interrupt
DDRD&=~(BIT(PD2)|BIT(PD3));
PORTD|=BIT(PD2)|BIT(PD3);
SREG=(1<<7); //enable globle interrupt
}
/*******************************************
Function Name: Uart_init
Function:USART initialization
Parameter:
Return value:
********************************************/
void Uart_init(unsigned int baud)
{
baud=MCLK/16/baud-1;
UCSRB=0x00;
UCSRA=0x00;
UBRRL=baud; //4800
UBRRH=baud>>8;
UCSRB=BIT(RXCIE)|BIT(RXEN)|BIT(TXEN); //Enable Receive Data Interrupt,Receive data enable,Transmite data enable,
UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0); //选择UCSRC,异步模式,禁止校验,1位停止位,8位数据位
SREG=(1<<7); //enable globle interrupt
DDRD|=0X02; //Ser TX pin output mode
}
/*******************************************
Function Name: Uart_Disable
Function:
Parameter:
Return value:
********************************************/
void Uart_Disable(void)
{
U595OutData(TempU43|BIT(CD4052_INH), U43);
TempU43=TempU43|(BIT(CD4052_INH));
}
/*******************************************
Function Name: Uart_init
Function:USART initialization
Parameter:
Return value:
********************************************/
void Uart_Select(unsigned char Num)
{
if(Num==ComputerS)
{
U595OutData(TempU43&~(BIT(CD4052_A)|BIT(CD4052_B)), U43);
TempU43=TempU43&~(BIT(CD4052_A)|BIT(CD4052_B));
}
else if(Num==BiaoChi)
{
U595OutData(TempU43|BIT(CD4052_A), U43);
TempU43=TempU43|BIT(CD4052_A);
U595OutData(TempU43&~(BIT(CD4052_B)), U43);
TempU43=TempU43&~(BIT(CD4052_B));
}
else if(Num==GSC)
{
U595OutData(TempU43|BIT(CD4052_B), U43);
TempU43=TempU43|BIT(CD4052_B);
U595OutData(TempU43|BIT(CD4052_A), U43);
TempU43=TempU43|BIT(CD4052_A);
}
U595OutData(TempU43&~(BIT(CD4052_INH)), U43);
TempU43=TempU43&~(BIT(CD4052_INH));
Delayus(10);
}
/*******************************************
Function Name: Uart_RX
Function: Asynchronism date receive interrupt
Parameter:
Return Value:
/********************************************/
void Uart_RX(void)
{
UCSRB&=~(BIT(RXCIE)); //Closed the receive data interrupt
ReceiveBuffer[Pwrite++]=UDR;
if(Pwrite>49)
Pwrite=48;
UCSRB|=BIT(RXCIE); //Closed the receive data interrupt
}
/*******************************************
Function Name: OpenBuzzer
Function:
Parameter:
Return value:
********************************************/
void OpenBuzzer(void)
{
;
//U595OutData(TempU43|BIT(BZCon),U43);
//TempU43=TempU43|BIT(BZCon);
}
/*******************************************
Function Name: OpenBuzzer
Function:
Parameter:
Return value:
********************************************/
void CloseBuzzer(void)
{
;
//U595OutData(TempU43&~(BIT(BZCon)),U43);
//TempU43=TempU43&~(BIT(BZCon));
}
/******************************************
发送一个字节的子程序:
上升沿发送数据,
MSB first
******************************************/
void Write_Max7219_byte(unsigned char temp)
{
unsigned char i;
unsigned char Temp1;
U595OutData(TempU30&~(BIT(MAx7219_CLK)),U30);
TempU30=TempU30&~(BIT(MAx7219_CLK));
Delayus(1);
for(i=0;i<8;i++)
{
Temp1=TempU30;
Temp1&=~(BIT(MAx7219_DIN));
U595OutData(Temp1|((temp&0x80)>>7),U30);
TempU30=Temp1|((temp&0x80)>>7);
Delayus(1);
U595OutData(TempU30|BIT(MAx7219_CLK),U30); // data in
TempU30=TempU30|BIT(MAx7219_CLK);
temp<<=1;
Delayus(1);
U595OutData(TempU30&~(BIT(MAx7219_CLK)),U30);
TempU30=TempU30&~(BIT(MAx7219_CLK));
Delayus(1);
}
}
/**********************************************************
向寄存器中写入一个数据
先写地址,后写数据
load 上升沿锁存数据
**********************************************************/
void Write_Max7219(unsigned char address,unsigned char dat)
{
U595OutData(TempU30&~(BIT(MAx7219_CS)),U30);
TempU30=TempU30&~(BIT(MAx7219_CS));
Write_Max7219_byte(address);
Write_Max7219_byte(dat);
U595OutData(TempU30|BIT(MAx7219_CS),U30);
TempU30=TempU30|BIT(MAx7219_CS);
}
/**********************
初始化max7219 子函数
设置工作寄存器
需要查看芯片手册
**********************/
void Init_Max7219(void)
{
Write_Max7219(SHUT_DOWN,0x01); //Normal Operation XXXXXXX1 Shutdown Mode XXXXXXXX0
Write_Max7219(DISPLAY_TEST,0x00); //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1
Write_Max7219(DECODE_MODE,0xff); //Decode Mode Select D7~D0 1 B decode 0 No decode
Write_Max7219(SCAN_LIMIT,0x07); //SCAN LIMIT 0~7 0xX0~0xX7
Write_Max7219(INTENSITY,0x06); //Set Intensity 0xX0~0xXf
}
/*******************************************
Function Name: Uart_init
Function:USART initialization
Parameter:
Return value:
****************
没有合适的资源?快使用搜索试试~ 我知道了~
数控平面磨床控制系统C语言代码
共167个文件
h:10个
pdf:5个
c:3个
3星 · 超过75%的资源 需积分: 50 16 下载量 116 浏览量
2013-05-10
11:19:59
上传
评论 3
收藏 6.16MB RAR 举报
温馨提示
包括三个伺服电机 一个两项步进电机 三个光栅尺 一个带串口的高度千分尺 两个单片控制的所有C语言代码
资源推荐
资源详情
资源评论
收起资源包目录
数控平面磨床控制系统C语言代码 (167个子文件)
HSM.c.090314112938 12KB
HSM.c.090314112944 12KB
HSM.c.090314113152 13KB
HSM.c.090314113450 11KB
HSM.c.090314113502 13KB
HS.c.100614170516 3KB
HS.c.100614172950 3KB
HS.c.100615153212 6KB
HS.c.100615162552 6KB
HS.c.100615171340 6KB
HS.c.100617091208 6KB
HS.c.100617102528 7KB
HS.c.100617102632 7KB
HS.c.100617102644 7KB
HS.c.100617102902 7KB
HS.c.100617113424 9KB
HS.c.100617113452 9KB
HS.c.100625172546 9KB
HSM.c.110113185608 25KB
HSM.c.110114134150 26KB
HSM.c.110114134352 26KB
HSM.c.110114140016 26KB
HSM.c.110114153608 28KB
HSM.c.110116090018 29KB
HSM.c.110116103538 33KB
HSM.c.110116110228 22KB
HSM.c.110117154126 37KB
HSM.c.110119100500 39KB
HSM.c.110123105136 42KB
HSM.c.110123111942 43KB
HSM.c.110123130346 43KB
HSM.c.110124133154 51KB
HSM.c.110321085314 13KB
HSM.c.110322101512 14KB
HSM.c.110322101616 14KB
HSM.c.110324092428 21KB
HSM.c.110324111700 21KB
HSM.c.110324111806 21KB
HSM.c.110324113100 21KB
HSM.c.110324113120 21KB
HSM.c.110324114248 21KB
HSM.c.110328175910 22KB
HSM.c.110328180032 22KB
HSM.c.110329091722 25KB
HSM.c.110329095550 24KB
HSM.c.110522204454 36KB
HSM.c.110523211230 36KB
HSM.c.110523211244 36KB
HSM.c.110525094720 34KB
HSM.c.110526160516 35KB
HSM.c.110526160632 35KB
HSM.c.120215132756 34KB
HSM.c.120215164104 40KB
HSM.c.120215164124 40KB
HSM.c.120216104436 41KB
HSM.c.120217095622 43KB
HSM.c.120217095656 43KB
HSM.c.120217095830 43KB
HSM.c.120220145122 45KB
HSM.c.120220145142 45KB
HSM.c.120220145148 45KB
HSM.c.120222101216 51KB
HSM.c.120229102912 47KB
HSM.c.120229103414 47KB
HSM.c.120229103436 47KB
HSM.c.120229103444 47KB
HSM.c.120229103614 46KB
HSM.c.120229103652 46KB
HSM.c.120229115614 50KB
HSM.c.120301092906 50KB
HSM.c.120301093146 50KB
HSM.c.120319135246 51KB
HSM.c.120416162646 54KB
HSM.c.120419113750 46KB
HSM.c.120419113800 46KB
HSM.c.120420115616 29KB
HSM.c.120420115714 29KB
DMulti.h.120421135640 3KB
HSM.c.120421140412 22KB
HSM.c.120422141712 23KB
HSM.c.120423080026 25KB
HSM.c.120423080426 25KB
HSM.c.120423080436 25KB
HSM.c.120423101254 27KB
HSM.c.120423101330 27KB
HSM.c.120423101338 27KB
HSM.c.120423101346 27KB
HSM.c.120423101354 27KB
HSM.c.120423101400 27KB
DMulti.h.120424150246 4KB
HSM.c.120424151152 32KB
DMulti.h.120424151222 4KB
HSM.c.120427155028 35KB
HSM.c.120502114532 36KB
HSM.c.120502114618 36KB
HSM.c.120504080854 48KB
HSM.c.120504081016 48KB
HSM.c.120504110658 50KB
HSM.c.120505124126 51KB
HSM.c.120508115234 51KB
共 167 条
- 1
- 2
资源评论
- yinzi08072015-09-14对我有很大帮助呢
- 云天16882014-09-10具有参考价值
sangzijin
- 粉丝: 27
- 资源: 139
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功