于基msp430f149电子秤设计 附电路图本科毕业设计Word格式文档下载.docx

上传人:b****5 文档编号:20635728 上传时间:2023-01-24 格式:DOCX 页数:14 大小:43.97KB
下载 相关 举报
于基msp430f149电子秤设计 附电路图本科毕业设计Word格式文档下载.docx_第1页
第1页 / 共14页
于基msp430f149电子秤设计 附电路图本科毕业设计Word格式文档下载.docx_第2页
第2页 / 共14页
于基msp430f149电子秤设计 附电路图本科毕业设计Word格式文档下载.docx_第3页
第3页 / 共14页
于基msp430f149电子秤设计 附电路图本科毕业设计Word格式文档下载.docx_第4页
第4页 / 共14页
于基msp430f149电子秤设计 附电路图本科毕业设计Word格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

于基msp430f149电子秤设计 附电路图本科毕业设计Word格式文档下载.docx

《于基msp430f149电子秤设计 附电路图本科毕业设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《于基msp430f149电子秤设计 附电路图本科毕业设计Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

于基msp430f149电子秤设计 附电路图本科毕业设计Word格式文档下载.docx

=~BIT2//P3.2

/*******************************************

写入内容待显示内容

********************************************/

constucharhang1[]={"

小小苏电子称系统"

};

constucharhang2[]={"

净重:

g"

constucharhang3[]={"

总价:

元"

constucharhang4[]={"

单价/Kg"

constucharhang5[]={"

萝卜"

constucharhang6[]={"

豆角"

constucharhang7[]={"

土豆"

constucharhang8[]={"

白菜"

constucharhang9[]={"

苹果"

constucharhang10[]={"

香蕉"

constucharhang11[]={"

橘子"

constucharhang12[]={"

桃子"

constucharhang13[]={"

猪肉"

constucharhang14[]={"

羊肉"

constucharhang15[]={"

牛肉"

constucharhang16[]={"

鸡肉"

constucharhang17[]={"

山药"

constucharhang18[]={"

生姜"

constucharhang19[]={"

木耳"

函数名称:

Init_Keypad

功能:

初始化扫描键盘的IO端口

参数:

返回值:

voidInit_Keypad(void)

{

P1DIR=0xf0;

//P1.0~P1.3设置为输入状态,P1.4~P1.7设置为输出状态

P1OUT|=0xf0;

//P1.4~P1.7输出低电平

key_Flag=0;

key_Pressed=0;

key_val=5;

}

Check_Key

扫描键盘的IO端口,获得键值

voidCheck_Key(void)

{

ucharrow,col,tmp1,tmp2;

tmp1=0x80;

for(row=0;

row<

4;

row++)//行扫描

{

P1OUT=0xf0;

//P1.4~P1.7输出全0

P1OUT-=tmp1;

//P1.4~p1.7输出四位中有一个为0

tmp1>

>

=1;

if((P1IN&

0x0f)<

0x0f)//是否P1IN的P1.0~P1.3中有一位为0

{tmp2=0x01;

//tmp2用于检测出那一位为0

for(col=0;

col<

col++)//列检测

{if((P1IN&

tmp2)==0x00)//是否是该列,等于0为是

{key_val=key_Map[row*4+col];

//获取键值

return;

//退出循环

}

tmp2<

<

=1;

//tmp2右移1位

}

//return(key_val);

delay

延时约15ms,完成消抖功能

voiddelay()

uinttmp;

for(tmp=12000;

tmp>

0;

tmp--);

Key_Event

检测按键,并获取键值

voidKey_Event(void)

uchartmp;

P1OUT&

=0x00;

//设置P1高四位全为0,等待按键输入

tmp=P1IN;

//获取p1IN

if((key_Pressed==0x00)&

&

((tmp&

0x0f))//如果有键按下

{

key_Pressed=1;

//如果有按键按下,设置key_Pressed标识

delay();

//消除抖动

Check_Key();

//调用check_Key(),获取键值

elseif((key_Pressed==1)&

0x0f)==0x0f))//如果按键已经释放

//清除key_Pressed标识

key_Flag=1;

//设置key_Flag标识

else

_NOP();

}

Delay_1ms

延时约1ms的时间

voidDelay_1ms(void)

uchari;

for(i=150;

i>

i--)_NOP();

Delay_Nms

延时N个1ms的时间

n--延时长度

voidDelay_Nms(uintn)

uinti;

for(i=n;

i--)Delay_1ms();

Write_Cmd

向液晶中写控制命令

cmd--控制命令

voidWrite_Cmd(ucharcmd)

ucharlcdtemp=0;

LCD_RS_L;

LCD_RW_H;

LCD_DataIn;

do//判忙

{LCD_EN_H;

_NOP();

lcdtemp=LCD2MCU_Data;

LCD_EN_L;

while(lcdtemp&

0x80);

LCD_DataOut;

LCD_RW_L;

MCU2LCD_Data=cmd;

LCD_EN_H;

LCD_EN_L;

Write_Data

向液晶中写显示数据

dat--显示数据

voidWrite_Data(uchardat)

lcdtemp=LCD2MCU_Data;

LCD_RS_H;

MCU2LCD_Data=dat;

Ini_Lcd

初始化液晶模块

voidIni_Lcd(void)

LCD_CMDOut;

//液晶控制端口设置为输出

Delay_Nms(500);

Write_Cmd(0x30);

//基本指令集

Delay_1ms();

Write_Cmd(0x02);

//地址归位

Write_Cmd(0x0c);

//整体显示打开,游标关闭

Write_Cmd(0x01);

//清除显示

Write_Cmd(0x06);

//游标右移

Write_Cmd(0x80);

//设定显示的起始地址

Disp_HZ

控制液晶显示汉字

addr--显示位置的首地址

pt--指向显示数据的指针

num--显示字符个数

voidDisp_HZ(ucharaddr,constuchar*pt,ucharnum)

Write_Cmd(addr);

for(i=0;

i<

num;

i++)

Write_Data(*(pt++));

Disp_WEI

voidDisp_WEI(ucharaddr,intc,charnum)

Write_Data(c);

/***************************主函数*************************/

voidmain(void)

{/*下面六行程序关闭所有的IO口*/

P1DIR=0XFF;

P1OUT=0XFF;

P2DIR=0XFF;

P2OUT=0XFF;

P3DIR=0XFF;

P3OUT=0XFF;

P4DIR=0XFF;

P4OUT=0XFF;

P5DIR=0XFF;

P5OUT=0XFF;

P6DIR=0XFF;

P6OUT=0XFF;

WDTCTL=WDTPW+WDTHOLD;

//关狗

P6DIR|=BIT2;

P6OUT|=BIT2;

//关闭电平转换

Ini_Lcd();

//初始化液晶

ADC12CTL0=SHT0_2+ADC12ON;

//设置采样时间+ADC12内核开

ADC12CTL1=SHP;

//使用采样定时器

ADC12IE=0X01;

//开启中断

ADC12CTL0|=ENC;

//转换使能

P6SEL|=0X01;

Disp_HZ(0x80,hang1,16);

Disp_HZ(0x90,hang2,16);

Disp_HZ(0x88,hang3,16);

Disp_HZ(0x98,hang4,16);

Init_Keypad();

_EINT();

while

(1)

ADC12CTL0|=ADC12SC;

//启动转换

//while((ADC12IFG&

0x01)==0);

Key_Event();

if(key_Flag==1)

{key_Flag=0;

switch(key_val)

{case0:

P2OUT=0XFE;

Disp_HZ(0x9a,hang5,4);

Write_Cmd(0x9c);

Write_Data(0+0x30);

Write_Data(2+0x30);

Write_Data(0x2e);

Write_Data(3+0x30);

e=2.3;

break;

case1:

P2OUT=0XFD;

Disp_HZ(0x9a,hang6,4);

Write_Data(6+0x30);

Write_Data(9+0x30);

e=6.9;

break;

case2:

P2OUT=0XFB;

Disp_HZ(0x9a,hang7,4);

e=2.0;

case3:

P2OUT=0XF7;

Disp_HZ(0x9a,hang8,4);

Write_Data(1+0x30);

Write_Data(5+0x30);

e=1.5;

case4:

P2OUT=0XEF;

Disp_HZ(0x9a,hang9,4);

Write_Data(4+0x30);

e=14.0;

case5:

P2OUT=0XDF;

Disp_HZ(0x9a,hang10,4);

e=9.0;

case6:

P2OUT=0XBF;

Disp_HZ(0x9a,hang11,4);

e=6.0;

case7:

P2OUT=0X7F;

Disp_HZ(0x9a,hang12,4);

e=20.0;

case8:

P2OUT=~0XFE;

Disp_HZ(0x9a,hang13,4);

e=30.0;

case9:

P2OUT=~0XFD;

Disp_HZ(0x9a,hang14,4);

Write_Data(8+0x30);

e=80.0;

case10:

P2OUT=~0XFB;

Disp_HZ(0x9a,hang15,4);

Write_Data(7+0x30);

e=70.0;

case11:

P2OUT=~0XF7;

Disp_HZ(0x9a,hang16,4);

e=15.0;

case12:

P2OUT=~0XEF;

Disp_HZ(0x9a,hang17,4);

e=3.5;

case13:

P2OUT=~0XDF;

Disp_HZ(0x9a,hang18,4);

e=4.5;

case14:

P2OUT=~0XBF;

Disp_HZ(0x9a,hang19,4);

e=40.0;

case15:

P2OUT=~0X7F;

//Disp_HZ(0x9a,hang21,4);

Write_Cmd(0x9a);

Write_Data(0x20);

Write_Data(0x20);

Write_Data(0+0x30);

e=0;

default:

break;

#pragmavector=ADC_VECTOR

__interruptvoidADC12_ISR(void)

{inta,b,c,d,temp;

longintg,y;

temp=ADC12MEM0;

temp=temp/100;

g=121*temp;

y=g*e;

if(g>

400)

a=g/1000;

b=g%1000/100;

c=g%1000%100/10;

d=g%1000%100%10;

a=b=c=d=0;

y=0;

Write_Cmd(0x93);

Write_Data(a+0x30);

Write_Data(b+0x30);

Write_Data(c+0x30);

Write_Data(d+0x30);

Delay_Nms(200);

Write_Cmd(0x8b);

Write_Data(y/100000+0x30);

Write_Data(y%100000/10000+0x30);

Write_Data(y%100000%10000/1000+0x30);

Write_Data(0x2e);

Write_Data(y%100000%10000%1000/100+0x30);

Write_Data(y%1000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1