基于Proteus的C51远程计算器

基于Proteus的C51远程计算器

一、具体要求:
1、 主机的矩阵键盘输入数和运算符号,从机显示运算结果
2、 主从单片机串行通信系统,并在 LCD 上显示运算内容及结果

二、实验要点:
1、按键扫描
2、串口通信
3、字符串数据处理
4、LCD实时显示

三、设计方案:

1、主机通过扫描矩阵按键,返回对应数据,并经程序处理后将字符通过串口发送给从机,主机并不执行其他功能。

2、从机接收串口发送的数据,当接收到字符"="时,进行等式运算,并实时进行LCD显示。当接收到字符"c"时,LCD清屏,缓存的全部数据清0。

四、程序源码:
由于我是以小项目分块写的,所以各个程序不在同一个页面,如果强行复制在一起,可能会出问题,就只给出了main函数的程序,各个子函数就需要另外安排了,这就当给大家提供一个思路。
我开始还想着直接主机处理完全部数据,从机直接LCD显示就是了,为此还浪费了我不少时间,没想到换个思路一下子就好了。
当然如果大家需要,我的整个项目文件包括源程序和仿真我都放在文章末尾如果大家需要可以直接下载,可以直接使用的哦。
1、主机main:

// 主机:按键扫描,并实时发送给从机
void main()
{   
    UsartInit();//串口初始化
    delay(200); 
    while(1)
    {          
        num=KeyPro();//按键扫描
        if(num!=0xff) //按键按下
        {  
            putchar(num);//串口实时发送
        }
    }
}

2、从机main:

// 接收串口数据,实时显示,并适时做等式运算
void main()
{      
    UsartInit();  //串口初始化
    LCD_init();   //LCD初始化
    putstring("Hello,this is calaulator\r\n");//串口打印数据,但LCD不显示
    putstring("He is made from Hebin and Wangshaoji\r\n");
    showstring(0,0,Hello_0);//LCD1602第1行
    showstring(0,1,Hello_1);//LCD1602第2行
    delayms(500);
    while(1)
    {   
  // 字符数据处理程序是写在中断函数里面的,所以这里直接调用显示就可以了
        showstring(0,0,dis_table0);//LCD实时显示
        showstring(0,1,dis_table1);
    }
}

五、Proteus仿真:
在这里插入图片描述
六、项目资料(文件不大,我就放百度网盘了,方便大家下载):
链接:https://pan.baidu.com/s/1OAhFDi9IraFuk_7ZbbuOGA
提取码:nzfd

另外还有个问题:
大家都看见了,我在仿真时,调用了Proteus的矩阵键盘,但是又自己画了一个,是有原因的,就是调用的矩阵键盘不能使用,我也没有找到原因,但估计时程序里面的按键扫描函数需要升级,如果大家解决了,希望留言。

感谢大家的阅读,欢迎提问和共同学习。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章