数控直流电流源程序

数控直流电流源程序
数控直流电流源程序

数控直流电流源程序

/*

跳线说明:

1)将EXP-LM3S811板卡上JP9、JP13跳至左侧(短接1-2);

2)将EXP-min_system_board板卡上JP13、JP14、JP15、JP16跳至右侧(短接2-3。

操作过程:

1)将EXP-min_system_board板卡上K1拨动开关拨至ON状态,给液晶上电;

2)调节RP1电位器,使液晶有合适的背光;

3)上电,编译并下载程序,复位后全速运行程序;观察液晶显示的内容,再修改程序使之显示自己的内容。

*/

#include "systemInit.h"

#include "ADS7886.h"

#include "TLV5616.h"

#include "timer.h"

#define CTL_PERIPH SYSCTL_PERIPH_GPIOC

// 控制液晶所用的片内端口外设定义

#define CTL_PORT GPIO_PORTC_BASE

#define SCK GPIO_PIN_4 // 定义信号SCK

#define SID GPIO_PIN_5 // 定义信号SID

#define CS GPIO_PIN_6 // 定义信号CS

#define PSB GPIO_PIN_7 // 定义信号PSB

#define SCK_L GPIOPinWrite(CTL_PORT,SCK,0x00) // 定义信号输出低电平

#define SID_L GPIOPinWrite(CTL_PORT,SID,0x00)

#define CS_L GPIOPinWrite(CTL_PORT,CS,0x00)

#define PSB_L GPIOPinWrite(CTL_PORT,PSB,0x00)

#define SCK_H GPIOPinWrite(CTL_PORT,SCK,0xFF) // 定义信号输出高电平

#define SID_H GPIOPinWrite(CTL_PORT,SID,0xFF)

#define CS_H GPIOPinWrite(CTL_PORT,CS,0xFF)

#define PSB_H GPIOPinWrite(CTL_PORT,PSB,0xFF)

#define SID_READ GPIOPinRead(CTL_PORT,SID)

// 定义读回的数据

#define SID_IN GPIOPinTypeGPIOInput(CTL_PORT,SID) // 定义SID信号为输入

#define SID_OUT GPIOPinTypeGPIOOutput(CTL_PORT,SID) //定义SID信号为输出

#define LED_PERIPH SYSCTL_PERIPH_GPIOB

#define LED_PORT GPIO_PORTB_BASE

#define LED GPIO_PIN_5

#define KEY_PERIPH SYSCTL_PERIPH_GPIOD

// KEYS所接的端口

#define KEY_PORT GPIO_PORTD_BASE

#define KEY

GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_3|GPIO_ PIN_2|GPIO_PIN_1|GPIO_PIN_0

#define KEY_H

GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4

#define KEY_L

GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0

#define key_h_in GPIOPinTypeGPIOInput(KEY_PORT,KEY_H) #define key_l_in GPIOPinTypeGPIOInput(KEY_PORT,KEY_L) #define key_h_out

GPIOPinTypeGPIOOutput(KEY_PORT,KEY_H)

#define key_l_out

GPIOPinTypeGPIOOutput(KEY_PORT,KEY_L)

#define SysCtlPeriClkGating SysCtlPeripheralClockGating //定义睡眠函数

#define SysCtlPeriSlpEnable SysCtlPeripheralSleepEnable

#define BitRate 115200 // 设定SPI的波特率

#define DataWidth 8 // 设定SPI的数据宽度

unsigned char AC_TABLE[]=

{

0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行汉字位置

0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行汉字位置

} ;

//开始菜单欢迎界面

unsigned char Hello1[]="欢迎使用——数控" ;

unsigned char Hello2[]="直流电流源" ;

unsigned char Hello3[]="制作人: " ;

unsigned char Hello4[]="chenfangjie";

//一级菜单1

unsigned char menu1_1[]="请输入(20~2000):"; // 选择提示unsigned char menu1_2[]="设值: mA ";

//一级菜单1

unsigned char menu2_1[]="设定值: mA"; // 选择提示unsigned char menu2_2[]="读取值: A";

unsigned char key_val=0; //键值全局变量

int A;

void keyBoardInit(void)

{

SysCtlPeripheralEnable(KEY_PERIPH); //D口使能开

GPIOPinTypeGPIOOutput(KEY_PORT,KEY_H); //扫描信号输出

GPIOPinTypeGPIOInput(KEY_PORT,KEY_L); //按键信号输入}

//键盘扫描程序

void keyBoard_scan(void)

{

//如下依次输出行扫描线

//如果有键按下则扫描列线,并获得键值

//按键释放判断

unsigned char key_h,key_l;

key_val=0;

key_l_out;

key_h_out;

GPIOPinWrite(KEY_PORT,KEY,0xf0);

key_h_in;

key_h=GPIOPinRead(KEY_PORT,KEY_H);

if((GPIOPinRead(KEY_PORT,KEY_H)&0xf0)!=0xf0)

{

SysCtlDelay(5*(TheSysClock/3000));

if((GPIOPinRead(KEY_PORT,KEY_H)&0xf0)!=0xf0)

{

key_h=GPIOPinRead(KEY_PORT,KEY_H)&0xf0;

key_h_out;

key_l_out;

GPIOPinWrite(KEY_PORT,KEY,0x0f);

key_l_in;

key_l=GPIOPinRead(KEY_PORT,KEY_L)&0x0f;

key_val=key_h+key_l;

while(key_l!=0x0f)

{

key_l=GPIOPinRead(KEY_PORT,KEY_L)&0x0f;

}

switch(key_val)

{

case 0xe7: key_val=13;break;

case 0xeb: key_val=9;break;

case 0xed: key_val=5;break;

case 0xee: key_val=1;break;

case 0xd7: key_val=14;break;

case 0xdb: key_val=10;break;

case 0xdd: key_val=6;break;

case 0xde: key_val=2;break;

case 0xb7: key_val=15;break;

case 0xbb: key_val=11;break;

case 0xbd: key_val=7;break;

case 0xbe: key_val=3;break;

case 0x77: key_val=16;break;

case 0x7b: key_val=12;break;

case 0x7d: key_val=8;break;

case 0x7e: key_val=4;break;

}

}

}

}

// LCM端口初始化

void init(void)

{

SysCtlPeripheralEnable( CTL_PERIPH );

// 使能所用的端口

GPIODirModeSet(CTL_PORT, (SCK | PSB | CS ) ,GPIO_DIR_MODE_OUT);

// 设置信号的方向

GPIOPadConfigSet(CTL_PORT, (SCK | PSB | CS ),

GPIO_STRENGTH_8MA,

GPIO_PIN_TYPE_STD_WPU); //设置IO的驱动能力

SysCtlPeripheralEnable(LED_PERIPH);

GPIOPinTypeGPIOOutput(LED_PORT, LED);

GPIOPadConfigSet(LED_PORT, LED, GPIO_STRENGTH_8MA,

GPIO_PIN_TYPE_STD_WPU);

}

// 串行方式发送一个字节

void SendByte(unsigned char Dbyte)

{

unsigned char i ;

for(i=0 ;i< 8 ;i++)

{

SCK_L ;

SID_OUT;

if (Dbyte & 0x80)

{

SID_H;

}

else

{

SID_L;

}

Dbyte=Dbyte<<1;

相关主题
相关文档
最新文档