资源简介
c8051f的AD转换,串口通信,液晶显示等
代码片段和文件信息
/* Data: 04/02
Author: 季伟强
使用C8051F340,内部晶振12M频
现串口可以接收发送光功率和偏差校准功能
*/
#include “c8051f340.h“
#define uchar unsigned char
#define uint unsigned int
/*端口定义*/
#define LCD_data P3
sbit LCD_RS=P2^4;
sbit LCD_RW=P2^5;
sbit LCD_EN=P2^6;
sbit LCD_PSB=P2^7;
sbit wavelength=P0^3;
sfr16 ADC0 = 0xbd; // ADC0 result
//液晶显示的字符
uchar code dis1[]={“P:“};
uchar code dis2[]={“λ:“};
uchar code dis3[]={“dBm“};
uchar code dis4[]={“nm“};
uchar code dis_1550[]={“1550“}; //波长
uchar code dis_1310[]={“1310“};
uchar code dis_1490[]={“1490“};
uchar p_code[7]; //串口接收缓冲区
uchar off_code_rx[4];
//串口命令
uchar p_optical[7]={0xaa0xbb0x110x110x000x110x11}; //连续发射光功率_波长命令
//光功率_波长 和偏差的标志位
uchar p_optical_flag=0;
uchar off_code_flag=0;
uchar wavelength_flag=0; //按钮标志位
uchar flag=0; //串口接收计数标志位
uchar c[7];//单片机发送的信号
uchar sure[7]={0x550xaa0xbb0xcc0xdd0xee0xff};//单片机发送的信号
uchar *cc; //浮点数如何拆分4字节
//dbm范围-40.00 ----- +10.00 放大一千倍 保留两位小数(舍弃千分位的小数)
uchar wan;
uchar qian;
uchar bai;
uchar shi;
uchar ge;
//延时
void delay_1ms(uint x)
{
uint ij;
for(j=0;j for(i=0;i<110;i++);
}
void delay_1us(uint x)
{
uint j;
for(j=0;j }
/*
写指令数据到LCD
PS=LRW=LE=高脉冲,D70-D7=指令码
*/
void write_cmd(uchar cmd)
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
P3=cmd;
delay_1ms(2);
LCD_EN=1;
delay_1ms(2);
LCD_EN=0;
}
/*
写显示数据到LCD
RS=HRW=LE=高脉冲,D0-D7=数据
*/
void write_dat(uchar dat)
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P3=dat;
delay_1ms(2);
LCD_EN=1;
delay_1ms(2);
LCD_EN=0;
}
/* 设定显示位置*/
void lcd_pos(uchar xuchar y)
{
uchar pos;
if(x==0)
{
x=0x80;
}
else if(x==1)
{
x=0x90;
}
else if(x==2)
{
x=0x88;
}
else if(x==3)
{
x=0x98;
}
pos=x+y;
write_cmd(pos); //显示位置
}
/* LCD初始值设定*/
void lcd_init()
{
LCD_PSB=1; //并口方式
write_cmd(0x30); //基本指令操作
delay_1ms(2);
write_cmd(0x0c); //显示开,关光标
delay_1ms(2);
write_cmd(0x01); //清楚LCD的显示内容
delay_1ms(2);
}
//单片机端口初始化
void mcu_init()
{
OSCICN = 0x83; // 晶振为12MHZ
PCA0MD &= ~0x40; // WDTE = 0 关闭看门狗,上电默认打开
P0MDOUT |= 0x10; // Enable UTX as push-pull output
XBR0|=0x01; //在外设连接寄存器0上把UART0连接到引脚P0.4和P0.5
P2MDOUT=0xFF; //P2.2和P2.3设为推挽输出方式,用于点亮LED
P3MDOUT=0xFF; //P2.2和P2.3设为推挽输出方式,用于点亮LED
XBR1= 0x40; //打开交叉开关,使能弱上拉,要使GPIO生效,必须打开交叉开关
P2MDIN &= ~0x01; //把P20设为模拟输入
}
//AD初始化
void ADC0_Init (void)
{
ADC0CN = 0x00; // ADC0关闭,普通工作方式,AD0busy写1 启动方式
//REF0CN = 0x03; // 使用国外部基准电压
AMX0P = 0x00; // ADC0 positive input = P2.0
AMX0N = 0x1F; // ADC0 negative input = GND
REF0CN = 0x08; // Enable on-chip VREF and buffer
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16633 2010-08-02 14:51 Optical Metter\c8051F340.h
文件 19129 2013-04-19 15:12 Optical Metter\Optical_Metter
文件 8832 2013-04-19 14:32 Optical Metter\Optical_Metter.c
文件 7717 2013-04-19 15:12 Optical Metter\Optical_Metter.hex
文件 76 2013-04-19 15:12 Optical Metter\Optical_Metter.lnp
文件 18382 2013-04-19 14:32 Optical Metter\Optical_Metter.LST
文件 23643 2013-04-19 15:12 Optical Metter\Optical_Metter.M51
文件 20631 2013-04-19 14:32 Optical Metter\Optical_Metter.OBJ
文件 1598 2013-04-19 15:12 Optical Metter\Optical_Metter.Opt
文件 3657 2013-04-19 15:12 Optical Metter\Optical_Metter.plg
文件 2252 2013-04-19 15:12 Optical Metter\Optical_Metter.Uv2
文件 44 2013-04-19 14:32 Optical Metter\Optical_Metter.__i
文件 1525 2013-04-03 13:18 Optical Metter\Optical_Metter_Opt.Bak
文件 2228 2013-04-03 13:18 Optical Metter\Optical_Metter_Uv2.Bak
文件 6376 2005-03-22 15:22 Optical Metter\STARTUP.A51
文件 14074 2013-04-01 14:23 Optical Metter\STARTUP.LST
文件 749 2013-04-01 14:23 Optical Metter\STARTUP.OBJ
目录 0 2013-04-19 21:11 Optical Metter
----------- --------- ---------- ----- ----
147546 18
- 上一篇:8259A中断控制器实验.zip
- 下一篇:Faster-Rcnn-TF预训练模型
评论
共有 条评论