#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define xiaoshu float
uchar code table[]="Pi:00.00Po:00.00";
uchar code tab1e1[]="P0/Pi:00%";
uchar AD;
uint I,O;
sbit c=P3^0;
sbit b=P3^1;
sbit a=P3^2;
sbit lcdrs=P3^3; //数据/命令选择端
sbit lcden=P3^4; //使能端
sbit EOC=P3^5; // A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)
sbit START=P3^6; // A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0808复位,下降沿启动A/D转换)。
sbit OE=P3^7; //数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) //写指令
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date) //写数据
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init() //lcd初始化
{
uchar num;
write_com(0x38); //设置16*2显示
write_com(0x0c); //开显示
write_com(0x06); //光标右移
write_com(0x01); //清屏
write_com(0x80); //命令先将数据指针定位到第一行第一个字处
for(num=0;num<15;num++)
{
write_data(table[num]);
}
write_com(0x80+0x40); //写第二行 将数据指针定位在第二行
for(num=0;num<12;num++)
{
write_data(table[num]);
}//write_data(table1[num]),运行的时候未定义1出错,但前面已定义
}
void write_sfm(uchar add,uint date) //在lcd第一行显示字符串
{
uchar qian,bai,ge,shi;
qian=date/1000;
date=date%1000;
bai=date/100;
date=date%100;
shi=date/10;
ge=date%10; //取个十百千位上的数字
write_com(0x80+add);
write_data(0x30+qian); //分别显示千位、百位.... (0x30+qian)是将qian位的十进制数转变成ASC码 两者有0x30的偏移
write_data(0x30+bai);
write_data('.');
write_data(0x30+shi);
write_data(0x30+ge);
}
void write_sfml(uchar add,uchar date) //在lcd第二行显示字符串
{
uchar shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+0x40+add); //定位到第二行
write_data(0x30+shi);
write_data(0x30+ge);
}
void adc() //ADC初始化
{
START=0;
OE=0;
START=1; //上升沿
START=0; //上升沿变下降沿 完成复位
while(EOC==0) //EOC为0 处于转换期间
{
OE=1; //允许数据信号输出
}
AD=P2; //数据转换
OE=0; //数据信号输出关闭
}
void caijishuju1()
{
xiaoshu i;
uint j;
a=1;
b=1;
c=0;
adc();
i=AD*0.0196;
i=i/24;
i=i/0.22;
i=i*12*2;
j=i*100;
I=j;
write_sfm(3,j);
}
void caijishuju2()
{
xiaoshu o;
uint i;
a=0;
b=0;
c=1;
adc();
o=AD*0.0196;
o=o+1.50;
o=(o*o)/8;
i=o*100;
O=i;
write_sfm(11,i);
}
void xiaolvjiaoshuan()
{
xiaoshu n;
uchar N;
n=O/I;
N=n*100;
write_sfm(6,N); //程序里是write_sfm1(6,N)
}
void main()
{
init();
while(1)
{
caijishuju1();
delay(50);
caijishuju2();
delay(50);
xiaolvjiaoshuan();
delay(50);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
低频功率放大器设计并制作一个低频功率放大器要求末级功放管采用分立的大功率MOS场晶体管。二要求1.基本要求(1)当输人正弦信号电压有效值为5mV时在80电阻负载(一端接地)上,输出功率≥5W输出波形无明显失真。(2)通频带为20Hz~20kHz。(3)输人电阻为6000。(4)输出噪声电压有效值Va≤5mV。(5)尽可能提高功率放大器的整机效率。(6)具有测量并显示低频功率放大器输出功率(正弦信号输人时)、直流电源的供给功率和整机效率的功能测量精度优于5%。
资源详情
资源评论
资源推荐
收起资源包目录
培训作业 更新.zip (21个子文件)
培训作业 更新
作业 工程
新工程.pdsprj.DESKTOP-EN72EPM.dell.workspace 3KB
新工程.pdsprj.DESKTOP-F6H03N7.齐乐.workspace 3KB
Last Loaded 新工程.pdsbak 27KB
Backup Of 新工程.pdsbak 27KB
新工程.pdsprj 27KB
作业 代码
XIANSHI.lnp 47B
XIANSHI_uvopt.bak 54KB
XIANSHI.LST 7KB
STARTUP.OBJ 758B
XIANSHI.uvproj 13KB
XIANSHI.plg 192B
XIANSHI 10KB
XIANSHI.C 3KB
XIANSHI_uvproj.bak 0B
XIANSHI.uvopt 6KB
XIANSHI.hex 5KB
STARTUP.A51 6KB
STARTUP.LST 14KB
XIANSHI.OBJ 11KB
XIANSHI.uvgui.dell 70KB
XIANSHI.M51 15KB
共 21 条
- 1
Dyingalive
- 粉丝: 97
- 资源: 4804
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 水电费水电费发发发胜多负少的方法
- recommend system
- WebAPI-1.关于操作元素内容的知识点
- python编辑运行器
- MAE-Masked Autoencoders Are Scalable Vision Learners
- STM32F41xx代码资源
- quark(夸克)正版下载
- 基于ARM Cortex-M3 内核的 STM32F103C8T6 系统板为载体,实现了的智能点阵屏的设计【课程设计/毕业设计】(源码+论文)
- Hierarchical Consensus Hashing for Cross-Modal Retrieval
- 基于 C++ OpenCV视觉库实现的计算机视觉分析,得到手掌上五根手指的长度与宽度、手掌虎口的角度、手掌的宽度以及手腕的宽度 完成对手掌各个参数的精确测量课程设计(源码+报告)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2