利用51单片机按键设置ztw电调
时间:11-19
来源:互联网
点击:
/*
============================================================================Name : ZTW_51.cAuthor : clare_liuVersion :Copyright : Your copyright noticeDescription : Hello World in C, Ansi-style============================================================================*///// Update to MPU6050 by shinetop// MCU: STC89C52// 2012.3.1// 功能: 显示加速度计和陀螺仪的10位原始数据//// GY-52 MPU3050 IIC测试程序// 使用单片机STC89C51// 晶振:11.0592M// 显示:LCD1602// 编译环境 Keil uVision2// 参考宏晶网站24c04通信程序// 时间:2011年9月1日// QQ:531389319//#include#include //Keil library#include //Keil library#include typedef unsigned char uchar;typedef unsigned short ushort;typedef unsigned int uint;//// 定义51单片机端口//#define DataPort P0 //LCD1602数据端口sbit SCL = P1 ^ 0; //IIC时钟引脚定义sbit SDA = P1 ^ 1; //IIC数据引脚定义sbit LCM_RS = P2 ^ 0; //LCD1602命令端口sbit LCM_RW = P2 ^ 1; //LCD1602命令端口sbit LCM_EN = P2 ^ 2; //LCD1602命令端口sbit JDQ = P3 ^ 7; //继电器//矩阵式键盘按键值的数码管显示实验sbit P14 = P1 ^ 4; //将P14位定义为P1.4引脚sbit P15 = P1 ^ 5; //将P15位定义为P1.5引脚sbit P16 = P1 ^ 6; //将P16位定义为P1.6引脚sbit P17 = P1 ^ 7; //将P17位定义为P1.7引脚sbit P30 = P3 ^ 0; unsigned char code Tab[ ]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数字0~9的段码unsigned char keyval; //定义变量储存按键值//// 定义MPU6050内部地址//#define SMPLRT_div 0x19 //陀螺仪采样率,典型值:0x07(125Hz)#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)#define ACCEL_CONFIG 0x1C //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)#define ACCEL_XOUT_H 0x3B#define ACCEL_XOUT_L 0x3C#define ACCEL_YOUT_H 0x3D#define ACCEL_YOUT_L 0x3E#define ACCEL_ZOUT_H 0x3F#define ACCEL_ZOUT_L 0x40#define TEMP_OUT_H 0x41#define TEMP_OUT_L 0x42#define GYRO_XOUT_H 0x43#define GYRO_XOUT_L 0x44#define GYRO_YOUT_H 0x45#define GYRO_YOUT_L 0x46#define GYRO_ZOUT_H 0x47#define GYRO_ZOUT_L 0x48#define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用)#define WHO_AM_I 0x75 //IIC地址寄存器(默认数值0x68,只读)#define SlaveAddress 0xD0 //IIC写入时的地址字节数据,+1为读取////定义类型及变量///////////////////////////////////////////////////////////* **关于频率和占空比的确定,对于12M晶振,假定PWM输出频率为1KHZ,这样定时中断次数 **设定为C=10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样**可以设定占空比可从1-100变化。即0.01ms*100=1ms *//** TH0和TL0是计数器0的高8位和低8位计数器,计算办法:TL0=(65536-C)%256; ** TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器** 工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时 ** 间为1us*65536=65.536ms */#define V_TH0 0Xff#define V_TL0 0X38#define V_TMOD 0X11uchar dis[4]; //显示数字(-511至512)的字符数组int dis_data; //变量int Temperature, Temp_h, Temp_l; //温度及高低位数据unsigned char ZKB1, ZKB2;uchar head=2;uchar slot_a=1;uchar ch_a=3;uchar ch_a_h=1; //可调 1~2uchar slot_b=1;uchar ch_b=3;uchar ch_b_h=1; //可调 1~2uchar slot_c=1;uchar ch_c=3;uchar ch_c_h=1; //可调 1~2uchar slot_d=1;uchar ch_d=3;uchar ch_d_h=1; //可调 1~2////函数声明//void delay(unsigned int k); //延时//LCD相关函数void InitLcd(); //初始化lcd1602void lcd_printf(uchar *s, int temp_data);void WriteDataLCM(uchar dataW); //LCD数据void WriteCommandLCM(uchar CMD, uchar Attribc); //LCD指令void DisplayOneChar(uchar X, uchar Y, uchar DData); //显示一个字符void DisplayListChar(uchar X, uchar Y, uchar *DD
51单片机按键设置ztw电 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)