单片机电子秤设计报告 - 图文(5)

2019-03-27 17:06

}

display_GB2312_string(3,76,\ int2str(j,str1); if (j<10) {

display_GB2312_string(3,84,\ }

else if (j<100) {

display_GB2312_string(3,84,\ } else {

display_GB2312_string(3,84,str1); } }

//显示总价,单位为元,四位整数,两位小数 void Display_Money() {

unsigned int i,j;

display_GB2312_string(7,44,\ \ if (money>999999) {

display_GB2312_string(7,44,\ return; }

i = money/100; //得到整数部分 j = money - i*100;//得到小数部分 int2str(i,str1); //显示整数部分 if (i>=1000) {

display_GB2312_string(7,44,str1); }

else if (i>=100) {

display_GB2312_string(7,52,str1); }

//超出显示量程

display_GB2312_string(3,92,str1); display_GB2312_string(3,100,str1);

else if (i>=10) {

display_GB2312_string(7,60,str1); } else {

display_GB2312_string(7,68,str1); }

//显示小数点

display_GB2312_string(7,76,\ //显示小数部分 int2str(j,str1); if (j<10) {

display_GB2312_string(7,84,\ display_GB2312_string(7,92,str1); } else {

display_GB2312_string(7,84,str1); } }

//数据初始化 void Data_Init() {

price = 0; DotPos = 0; beep = 1; alert = 1; }

//管脚配置 void Port_Init() { }

//定时器0初始化 void Timer0_Init() {

ET0 = 1; //允许定时器0中断 TMOD = 1; //定时器工作方式选择

}

TL0 = 0x06;

TH0 = 0xf8; //定时器赋予初值 TR0 = 1; //启动定时器

//定时器0中断

void Timer0_ISR (void) interrupt 1 using 0 {

//每0.5秒钟刷新重量 Counter ++; if (Counter >= 200) {

FlagTest = 1; }

//按键响应程序,参数是键值 //返回键值:

// 7 8 9 10(清0) // 4 5 6 11(删除) // 1 2 3 12(未定义) // 14(未定义) 0 15(.) 13(确定价格)

void KeyPress(uchar keycode) {

switch (keycode) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9:

//目前在设置整数位,要注意price是整型,存储单位为分 if (DotPos == 0) Counter = 0; }

TL0 = 0x06;

TH0 = 0xf8; //定时器赋予初值

{

//最多只能设置到千位 }

//目前在设置小数位

else if (DotPos==1) //小数点后第一位 {

price=price+keycode*10; }

else if (DotPos==2) {

price=price+keycode; }

Display_Price();

DotPos++; if (price<100000) { }

price=price*10+keycode*100;

break; To_Zero();

Display_Price(); FlagSetPrice = 0; DotPos = 0; break;

case 10: //清零键

case 11: //删除键,按一次删除最右一个数字 if (DotPos==2)

{

price=price/10; }

else if (DotPos==1) {

price=price/100; }

else if (DotPos==0) {

price=price/1000; }

Display_Price();

price=price*100; price=price*100; DotPos--; price=price*10; DotPos--;

break;

case 13: //确认键 } }

//===============main program===================// void main(void) {

Rom_CS=1; initial_lcd(); EA = 0; Data_Init(); Port_Init(); Timer0_Init(); //初始化完成,开中断 EA = 1; //背光 LedA = 1;

clear_screen(); //clear all dots

display_GB2312_string(1,1,\电子秤初始化....\ To_Zero();

display_GB2312_string(1,1,\电子秤初始化成功\ display_GB2312_string(3,1,\重量: kg\ display_GB2312_string(5,1,\单价: 元\ display_GB2312_string(7,1,\金额: 元\ Display_Price();

while(1) {

//每0.5秒称重一次

if (FlagTest==1) {

FlagSetPrice = 1;

break;

if (DotPos == 0) { }

DotPos = 1; //小数点后第一位

case 15: //小数点按下

break;


单片机电子秤设计报告 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:初级财务会计习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: