IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【单片机期中测试】5.LCD1602实现简单计算器 -> 正文阅读

[嵌入式]【单片机期中测试】5.LCD1602实现简单计算器

main.c如下

#include<reg52.h>
#include"1602.h"
#include"delay.h"
#define uc unsigned char
uc a=0,b=0,c=0,d=0,h=0,l=0,m=0,flag=0,s;     //a,b:两项;c:+-*/; d:运算结果
void delay(uc c1)
{  uc a1,b1;
	for(;c1>0;c1--)
		for(a1=38;a1>0;a1--)
			for(b1=130;b1>0;b1--);
} 
void main()
{

 LCD_Init();           //初始化液晶
 DelayMs(20);          //延时有助于稳定
 LCD_Clear();          //清屏

  	while(1)
	{
		P1=0x0F;
		if(P1!=0x0F)
		   {
		    
			P1=0x0F; 
			switch(P1)	// 行判断
			{
				case 0x0E: h=0;break;				
				case 0x0D: h=1;break;				
				case 0x0B: h=2;break;				
				case 0x07: h=3;break;				
				 
			}
		   
		P1=0xF0;			 
			switch(P1)	 // 列判断
			{
				case 0xE0: l=0;break;				
				case 0xD0: l=1;break;				
				case 0xB0: l=2;break;				
				case 0x70: l=3;break;	
			}		  
		m=h*4+l;

		if(m>=0&&m<=9)
		{		
				if(flag==0)
				{
					LCD_Clear();          //清屏
					LCD_Write_Com(0x80) ;
					a=m;
					LCD_Write_Data(a+'0') ;
				
				}
				else	              
				{	LCD_Write_Com(0x83) ;
					b=m;
					LCD_Write_Data(b+'0') ;
			
				}        
		}
		if(m>9&&m<14)
		{
			flag=1;
			c=m;
				LCD_Write_Com(0x82) ;
				switch(m)
				{
				case 10:s=0x2B;break;
				case 11:s=0x2D;break;
				case 12:s=0x2A;break;
			    case 13:s=0x2F;break;
				}
				LCD_Write_Data(s) ;
			
			
		}
		if(m==15) 
		{
         a=0,b=0,c=0,d=0,flag=0;
		   LCD_Write_String(0,0,"                ");
			 LCD_Write_String(0,1,"        ");
		 }
		if(m==14)
		{ 	 
			switch(c)
			{
				case 10:d=a+b;break;
				case 11:if(a>b) d=a-b; else d=b-a;break;
				case 12:d=a*b;break;
				case 13:d=a/b;break;
			}
			LCD_Write_Com(0xc0) ;
		   	LCD_Write_Data('=');
			LCD_Write_Data(d/10+'0') ;
			LCD_Write_Data(d%10+'0') ;
				c=0,flag=0;		 	
		}
		delay(1);
		P1=0xf0;
		while(P1!=0xf0)
		{
			delay(1);
			P1=0xf0;		
		}
		delay(1);
		}
	  }	
}

如果需要 1602.c 和 delay.c 的话可问老师

接线:
LCD1602数据线接P0
其他按照LCD1602.c的引脚定义连接
4*4矩阵键盘接P1(注意正反)

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:31:43  更:2021-11-23 12:32:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:26:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码