}
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;