历史上的今天
今天是:2025年01月30日(星期四)
2018年01月30日 | 称重计程序
2018-01-30 来源:eefocus
#include "MSP430x22x4.h"
#define uchar unsigned char
#define uint unsigned int
#define comm 0
#define dat 1
#define sclk_1 P4OUT|=0x01 //sclk=1; 001----p4.0
#define sclk_0 P4OUT&=0x06 //sclk=0; 110----p4.1
#define std_1 P4OUT|=0x02 //std =1; 010
#define std_0 P4OUT&=0x05 //std =0; 101
/***********数组及变量定义***************************/
uchar xian[]={
"****************"
" M= g "
"此物体重量为: "
"****************"
};
uchar caidan1[]={"0123456789 "};
float ad_value,data;
uchar ai=0;
/*************************延时函数********************************/
void delay(uchar aj)
{
while(aj--);
}
void DELAY(uchar aj)
{
for(uchar ak=0;ak<500;)
while(aj--);
}
/*
********************************************************************************
*模块名称:wr_LCD定义
*完成日期:08-07-29
*修改内容:none
********************************************************************************
*///********写命令/数据***************************************************
void wr_lcd (unsigned char dat_comm,unsigned char content)
{
unsigned char a,b,i,j;
delay (50);
a=content;
//cs_1; //P4OUT|=0x04 //cs =1; 0100
sclk_0; //P4OUT&=0x06 //sclk=0; 0110
std_0; //P4OUT&=0x05 //std =0; 0101
std_1; //P4OUT|=0x02 //std =1; 0010
for(i=0;i<5;i++) //
{ sclk_1;sclk_0;}
std_0;
sclk_1;
sclk_0;
if(dat_comm)std_1;
else
std_0;
sclk_1;
sclk_0;
std_0;
sclk_1;
sclk_0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{b=a;
if((b&=0x80)==0)
{std_0;a=a<<1;}
else
{std_1;a=a<<1;}
sclk_1;sclk_0;
}
std_0;
for(i=0;i<4;i++)
{ sclk_1;sclk_0;}
}
}
/*********************************************************************************
*模块名称:初始化定义
*完成日期:08-7-29
*修改内容:none
********************************************************************************
*/
void init_lcd (void)
{
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
delay (100);
wr_lcd (comm,0x06); /*光标的移动方向*/
wr_lcd (comm,0x0c); /*开显示,关游标*/
}
/*
********************************************************************************
*模块名称:清DDRAM定义
*完成日期:08-7-29
*修改内容:none
********************************************************************************
*/
void clrram (void)
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
delay (180);
}
/*
********************************************************************************
*模块名称:显示汉字或字符定义
*完成日期:08-7-29
*修改内容:none
********************************************************************************
*/
void chn_disp(unsigned char *chn)
{
unsigned char i;
wr_lcd (comm,0x30);
wr_lcd (comm,0x80);
for (i=0;i<64;i++)
wr_lcd (dat,chn[i]);
}
//****************lcd_mesg定点显示***********************************
void lcd_mesg(uint gao,uchar p,uchar q)
{
uint adder1,adder2,adder3,adder4;
adder1=gao/1000,gao=gao-adder1*1000;
adder2=gao/100,gao=gao-adder2*100;
adder3=gao/10,adder4=gao%10;
wr_lcd(comm,p);
wr_lcd(dat,caidan1[adder1]);delay(20);
wr_lcd(dat,caidan1[adder2]);delay(20);
wr_lcd(comm,q);
wr_lcd(dat,caidan1[adder3]);delay(20);
wr_lcd(dat,caidan1[adder4]);delay(20);
}
/**************初始化函数*************************************/
void init_port(void)
{
P3DIR=0XBF; //P3.6---A6, 1011 1111
P3SEL=0XBF;
P3OUT=0X00;
P4DIR=0XFF;
P4SEL=0X00;
P4OUT=0;
ADC10CTL0=0;
ADC10CTL0 |=REFON+SREF_0; //正参考AVCC,AVSS地为负参考
ADC10CTL0 |=ADC10ON+ADC10SHT_3+ADC10IE; //打开ADC10内核,设定采样保持时间为64个ADC10CLK,使能ADC10中断
ADC10CTL1=0;
ADC10CTL1|=INCH_6+CONSEQ_0+SHS_0; //选择第6通道,转换模式为单通道单次模式 采样信号源为ADC10SC
ADC10CTL1|=ADC10SSEL_0+ADC10DIV_3; //转换内核时钟源为ADC10OSC 分频系数4分频
delay(20); //等待参考稳定
ADC10CTL0 |=ENC+ADC10SC; //启动AD转换
_EINT();
return;
}
/*******************主函数*****************************************/
void main(void)
{
WDTCTL=WDTPW+WDTHOLD; //关看门狗
BCSCTL1 =CALBC1_1MHz; //设定DCO为1MHZ
DCOCTL =CALBC1_1MHZ;
init_port();
init_lcd();
chn_disp(xian);
while(1)
{
ADC10CTL0 &= ~ENC; //关闭AD转换
ADC10CTL0 |= ENC + ADC10SC; //启动AD转换
lcd_mesg(data,0x8b,0x8c);
delay(20);
}
}
#pragma vector = ADC10_VECTOR //ADC10 中断服务
__interrupt void adc_isr(void)
{
ADC10CTL0 &= ~ENC; //关闭AD转换
ad_value=ADC10MEM; //保存AD 结果 ADC10MEM=1023*(Vin/VR+)
data=((ad_value-390)*10-150);
ADC10CTL0 |= ENC + ADC10SC; //启动AD转换
}
史海拾趣
|
作者:applevista 前两天,父亲在庙会上买了两个黑猫神牌电子驱蚊灭鼠器,5块一个。 前两年,见过这样东西,样子不一样,也提醒父亲这是骗人的,还是被骗了。 要是一块一个倒也不错,它其实就是一个简单的彩灯。 这个与卫星增台器、节电器一样 ...… 查看全部问答> |
|
请教各位高手 我在画原理图时(orcad) 有下列两个疑问: 1、请问处理器(在page1上)上的一个引脚如A1需要连接两个外围芯片x,y 可是芯片X我是用层次法(层次图上层在page1上)画的,与芯片y的连接是用平坦式画法 ...… 查看全部问答> |
|
在使用Altera的FPGA时候,由于系统需求,需要在管脚的内部加上上拉电阻。Quartus II软件中在Assignment Editor中可以设置。具体过程如下:1. 在菜单Assignments中选择Assignment Editor. 2. 在弹出的界面里选择I/O Features.找到Node. 3. 选择Node ...… 查看全部问答> |
|
网上找来的,可能有好多错误。 相关链接:https://bbs.eeworld.com.cn/upfiles/img/20076/2007626163328342.pdf… 查看全部问答> |
|
ARM处理器寻址方式 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式,ARM 处理器有9种基本寻址方式。 寄存器寻址 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直 接取出寄存器值操作。 ...… 查看全部问答> |
|
最近想用氨气和硫化氢传感器,国内便宜的就炜盛的MQ系列的,100出头,再上去就要500~600了 他们文档只提供了这个曲线图 有几个问题想请教下用过的前辈 1:这个系列能不能用来做定量测量,还是只能用来定性 2:输出的模拟电压怎么转换成浓度 3 ...… 查看全部问答> |




