剑圣要卡紫3么?求大神玩剑圣指教!感激涕零!!!

我女朋友突然在我空间留了3条留言我知道中文但是不知道她说这话是什么意思?求大神指教!_百度知道毕设求助啊!求大神帮忙,小弟感激涕零!_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:120,015贴子:
毕设求助啊!求大神帮忙,小弟感激涕零!收藏
小弟要实现的功能是利用压力传感器进行数据采集,然后通过ADC0832进行8路数据轮流AD转换,主控芯片是89c52,模拟量转换成数字量后显示在LCD1602上,通过数据分析比较,启动报警装置,开关用来手动关闭报警装置。此图为小弟用proteus仿真的实验的后端部分,还差前端的8路数据轮流AD转换功能,希望有大神能够帮助小弟,感激涕零啊!!!附上小弟的程序,真心求大神帮帮忙啊!!!#include&reg51.h&
//包含单片机寄存器的头文件#include&intrins.h& //包含_nop_()函数定义的头文件#include &bishe1_baojin.c&sbit CS=P1^2;
//将CS位定义为P1.0引脚sbit CLK=P1^1;
//将CLK位定义为P1.1引脚sbit DIO=P1^0;
//将DIO位定义为P1.2引脚//////////////////////////////////////////////////////////////////unsigned char codedigit[10]={""};
//定义字符数组显示数字unsigned char code string[ ]={"ADC0832 TEST"};//定义字符数组显示提示信息/*******************************************************************************下是对液晶模块的操作程序*******************************************************************************/sbit RS=P3^0;
//寄存器选择位,将RS位定义为P3.0引脚sbit RW=P3^1;
//读写选择位,将RW位定义为P3.1引脚sbit E=P3^2;
//使能信号位,将E位定义为P3.2引脚sbit BF=P0^7;
//忙碌标志位,,将BF位定义为P0.7引脚/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){
unsigned char i,j;
for(i=0;i&10;i++)
for(j=0;j&33;j++)
}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/ void delaynms(unsigned char n) {
for(i=0;i&n;i++)
delay1ms(); }/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙***************************************************/bit BusyTest(void)
//根据规定,RS为低电平,RW为高电平时,可以读状态
//E=1,才允许读写
//空操作四个机器周期,给硬件反应时间
result=BF;
//将忙碌标志电平赋给result
//将E恢复低电平
}/*****************************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate***************************************************/void WriteInstruction (unsigned char dictate){
while(BusyTest()==1);
//如果忙就等待
//根据规定,RS和R/W同时为低电平时,可以写入指令
//E置低电平(根据表8-6,写指令时,E为高脉冲,
// 就是让E从0到1发生正跳变,所以应先置"0"
//空操作两个机器周期,给硬件反应时间
//将数据送入P0口,即写入指令或地址
//空操作四个机器周期,给硬件反应时间
//E置高电平
//空操作四个机器周期,给硬件反应时间
//当E由高电平跳变成低电平时,液晶模块开始执行命令 }/*****************************************************函数功能:指定字符显示的实际地址入口参数:x***************************************************/ voidWriteAddress(unsigned char x) {
WriteInstruction(x|0x80); //显示位置的确定方法规定为"80H+地址码x" }/*****************************************************函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)***************************************************/ void WriteData(unsigned char y) { while(BusyTest()==1);
//RS为高电平,RW为低电平时,可以写入数据
//E置低电平(根据表8-6,写指令时,E为高脉冲,
// 就是让E从0到1发生正跳变,所以应先置"0"
//将数据送入P0口,即将数据写入液晶模块
//空操作四个机器周期,给硬件反应时间
//E置高电平
//空操作四个机器周期,给硬件反应时间
//当E由高电平跳变成低电平时,液晶模块开始执行命令 }/*****************************************************函数功能:对LCD的显示模式进行初始化设置***************************************************/void LcdInitiate(void){
delaynms(15);
//延时15ms,首次写指令时应给LCD一段较长的反应时间
WriteInstruction(0x38);
//显示模式设置:16×2显示,5×7点阵,8位数据接口
delaynms(5);
//延时5ms ,给硬件一点反应时间
WriteInstruction(0x38);
delaynms(5);
//延时5ms ,给硬件一点反应时间
WriteInstruction(0x38);
//连续三次,确保初始化成功
delaynms(5);
//延时5ms ,给硬件一点反应时间
WriteInstruction(0x0c);
//显示模式设置:显示开,无光标,光标不闪烁
delaynms(5);
//延时5ms ,给硬件一点反应时间
WriteInstruction(0x06);
//显示模式设置:光标右移,字符不移
delaynms(5);
//延时5ms ,给硬件一点反应时间
WriteInstruction(0x01);
//清屏幕指令,将以前的显示内容清除
delaynms(5);
//延时5ms ,给硬件一点反应时间 } /*****************************************************函数功能:显示名称及单位数据***************************************************/
display_D(void){
WriteAddress(0x00); //写显示地址,将在第1行第1列开始显示
WriteData('D');
//将字符常量写入LCD
WriteAddress(0x01);//写显示地址,将在第1行第2列开始显示
WriteData('=');
//将字符常量写入LCD
WriteAddress(0x06); //写显示地址,将在第1行第7列开始显示
WriteData('V');
//将字符常量写入LCD
WriteAddress(0x07);//写显示地址,将在第1行第8列开始显示
WriteData('=');
//将字符常量写入LCD
} /*****************************************************函数功能:显示转换后的数字量***************************************************/
display_DV(unsigned char dv){
unsigned char i,j,k;
i=dv/100; //取数字量百位
j=dv%100/10;//取数字量十位
//取数字量个位
WriteAddress(0x02);//写显示地址,将在第1行第3列开始显示
WriteData(digit[i]);
//将字符常量写入LCD
WriteAddress(0x03);//写显示地址,将在第1行第4列开始显示
WriteData(digit[j]);
//将字符常量写入LCD
WriteAddress(0x04); //写显示地址,将在第1行第5列开始显示
WriteData(digit[k]);
//将字符常量写入LCD
}/**************************************************************************以下是电压显示的说明**************************************************************************//*****************************************************函数功能:显示电压的小数点***************************************************/
display_dot(void){
WriteAddress(0x09);
//写显示地址,将在第1行第10列开始显示
WriteData('.');
//将小数点的字符常量写入LCD
} /*****************************************************函数功能:显示电压的单位(V)***************************************************/
display_V(void){
WriteAddress(0x0c); //写显示地址,将在第1行第13列开始显示
WriteData('V');
//将字符常量写入LCD
}/*****************************************************函数功能:显示电压的整数部分入口参数:x***************************************************/ void display1(unsigned char x){
WriteAddress(0x08);
//写显示地址,将在第2行第7列开始显示
WriteData(digit[x]);
//将百位数字的字符常量写入LCD }/*****************************************************函数功能:显示电压的小数数部分入口参数:x***************************************************/
void display2(unsigned char x){
unsigned char i,j;
//取十位(小数点后第一位)
//取个位(小数点后第二位)
WriteAddress(0x0a);
//写显示地址,将在第1行第11列开始显示
WriteData(digit[i]);
//将小数部分的第一位数字字符常量写入LCD
WriteData(digit[j]);
//将小数部分的第一位数字字符常量写入LCD}/*****************************************************函数功能:将模拟信号转换成数字信号***************************************************/ unsigned char
unsigned char i,
//一个转换周期开始
//为第一个脉冲作准备
//CS置0,片选有效
//DIO置1,规定的起始信号
//第一个脉冲
//第一个脉冲的下降沿,此前DIO必须是高电平
//DIO置1, 工作方式选择 1为单通道模式 0为差分输入模式 我们这里使用单通道模式所以 DIO=1
//第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0
//第二个脉冲下降沿
//DI置0,选择通道0 DIO为1时选择通道1
//第三个脉冲
//第三个脉冲下降沿
//第三个脉冲下沉之后,输入端DIO失去作用,应置1
//第四个脉冲 for(i=0;i&8;i++)
//高位在前
//第四个脉冲
//将下面储存的低位数据向左移
dat|=(unsigned char)DIO;
//将输出数据DIO通过或运算储存在dat最低位
//片选无效
//将读取的数据返回
}/*****************************************************函数功能:主函数***************************************************/ main(void){
unsigned int AD_
//储存A/D转换后的值
unsigned char Int,D
//分别储存转换后的整数部分与小数部分 LcdInitiate();
//将液晶初始化 delaynms(5);
//延时5ms给硬件一点反应时间
WriteAddress(0x42);
//写地址,从第1行第4列开始显示
//从字符数组的第1个元素开始显示
while(string[i]!='\0')
//只要没有显示到字符串的结束标志'\0',就继续
WriteData(string[i]); //将第i个字符数组元素写入LCD
//指向下一个数组元素
display_D(); //显示符号及单位 display_dot();
//显示电压的小数点 display_V();
//显示电压的单位
AD_val= A_D();
//进行A/D转换
display_DV(AD_val); //显示转换后的数字量
Int=(AD_val)/51;
//计算整数部分 数值51是这么来的 最大转换量为255 最大电压为5V, 所以1V电压变化的数值为255/5=51
Dec=(AD_val%51)*100/51;//计算小数部分
display1(Int);
//显示整数部分
display2(Dec);
//显示小数部分
if(AD_val&4)
if(k2!=0) TR0=1;
delay(20);
delaynms(250);
//延时250ms
}}//#include&reg52.h& //52单片机头文件#include &intrins.h& //包含有左右循环移位子函数的库#define uint unsigned int
//宏定义#define uchar unsigned char
//宏定义sbit beep=P2^1;
//蜂鸣器管脚位声明sbit led1=P2^2;sbit led2=P2^3;/*sbit k1=P1^0;
//定义SW19独立按键*/sbit k2=P1^3;sbit reley=P2^0; //定义继电器控制端P20uchar t0;void init();void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.{
//delay(500);大约延时500ms.
for(x=z;x&0;x--)
for(y=110;y&0;y--);
}void mainll()
while(1)//等待中断产生
delay(20);
}} void init(){
TMOD=0x11;//设置定时器0,定时器1为工作方式1
TH0=()/256;
TL0=()%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=0;//启动定时器0} void timer0() interrupt 1
//定时器0中断{
TH0=()/256;
TL0=()%256;
if(t0%4==0)
led1=~led1;
实邦电子多年专注于上海单片机开发,为客户提供电子产品解决方案,已成功开发100多款产品.我们拥有多位经验的电子工程师,为您的产品提供优异的设计,稳定可靠的电路设计.
自己百度百度吧1
这个能百度到么?
我想问lcd下面那个排阻是为了加强电流让lcd更亮么?
支持下同为毕设苦闷的同学
请问是否有大神会用stm32f103c8芯片,我有一段8路数据采集AD转换的程序,但不会编之后的数据分析,LCD显示和报警程序,求指导Q
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或查看: 131|回复: 0
求大神指教这号怎么弄一下更加厉害
活跃人气军饷
庸庸碌碌, 积分 12, 距离下一级还需 38 积分
庸庸碌碌, 积分 12, 距离下一级还需 38 积分
登录天下3论坛,新鲜资讯看不停!
才可以下载或查看,没有帐号?
藏宝阁信息求大神们指教一下
天下3官方论坛欢迎你(づ ̄3 ̄)づ
杭州网易雷火科技有限公司版权所有 &

我要回帖

更多关于 求大神指教 的文章

 

随机推荐