历史上的今天
今天是:2024年12月21日(星期六)
2020年12月21日 | 51单片机基础计算器
2020-12-21 来源:51hei


电路原理图如下:
单片机源程序如下:
/*
接盘按键说明:
--------------------------------------------------
| 1 | 2 | 3 | + |
- - - - - - - - - - - - -
| 4 | 5 | 6 | - |
- - - - - - - - - - - - -
| 7 | 8 | 9 | * |
- - - - - - - - - - - - -
| C | 0 | = | / |
--------------------------------------------------*/
//操作简介
// 按第一个数,再按'+-*/',再按'='显示出结果,然后按C清屏
// 加最大9999+9999=19998
// 减最大9999-0 =9999
// 乘最大9999*9999=99980001
// 除 1/9=0.1111 保留小数点后4位
#include #define uint unsigned int #define uchar unsigned char //--------LCD1602------------------- //P00-07==== D0-7 sbit rs=P2^5; //指令or数据 sbit wela=P2^6; //读or写 sbit lcden=P2^7; //使能信号 //--------LCD1602------------------- //--------KEY----------------------- //P1口 //--------KEY----------------------- uchar code table[]= " "; long int data_a,data_b; //第一个数和第二个数 long int data_c; //计算结果 uchar dispaly[10]; //显示缓冲 //************************************************************************/ // 描述: 延时t us函数 //************************************************************************/ void LCD_Delay_us(unsigned int t) { while(t--); //t=0,退出 } //************************************************************************/ // 描述: 延时t ms函数 //************************************************************************/ void LCD_Delay_ms(unsigned int t) { unsigned int i,j; for(i=0;i ; } //************************************************************************/ // 描述: 1602液晶写指令 //************************************************************************/ void write_com(uchar com) //1602液晶写指令 { rs=0; //写指令 lcden=0; //使能1602 P0=com; //写入指令com LCD_Delay_ms(1); //延时1ms lcden=1; //使能1602 LCD_Delay_ms(2); //延时2ms lcden=0; //使能1602 } //************************************************************************/ // 描述:1602液晶写数据 //************************************************************************/ void write_date(uchar date) //1602液晶写数据 { rs=1; //写数据 lcden=0; //使能1602 P0=date; //写入数据date LCD_Delay_ms(1); //延时1ms lcden=1; //使能1602 LCD_Delay_ms(2); //延时2ms lcden=0; //使能1602 } //************************************************************************/ // 描述:指定x,y写入字符函数 //************************************************************************/ void W_lcd(unsigned char x,unsigned char y,unsigned char Data) { if (y == 0){write_com(0x80 + x);} //第一行 else{write_com(0xc0 + x);} //第二行 write_date( Data); //写入数据 } //指定x,y写入字符串函数 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { if (y == 0){write_com(0x80 + x);} //第一行 else{write_com(0xC0 + x);} //第二行 while (*s) // {write_date( *s); s++;} //写入数据 } //************************************************************************/ // 描述:初始化液晶,及画面初始化 //************************************************************************/ void init_lcd(void) //初始化液晶,及画面初始化 { wela=0; //写液晶 lcden=0; //使能1602 write_com(0x38); //8 位总线,双行显示,5X7 的点阵字符 LCD_Delay_us(100); //延时100us write_com(0x0c); //开显示,无光标,光标不闪烁 write_com(0x06); //光标右移动 write_com(0x01); //清屏 write_com(0x80); //DDRAM 地址归0 } //************************************************************************/ // 描述: 反转法键盘扫描 //************************************************************************/ short keycheckdown() /* 反转法键盘扫描 */ { short temp1,temp2,temp,a=0xff; P1=0xf0; /* 输入行值(或列值) */ LCD_Delay_ms(20); /* 延时 */ temp1=P1; /* 读列值(或行值) */ P1=0xff; LCD_Delay_ms(20); /* 延时 */ P1=0x0f; /* 输入列值(或行值) */ LCD_Delay_ms(20); /* 延时 */ temp2=P1; /* 读行值(或列值) */ P1=0xff; temp=(temp1&0xf0)|(temp2&0xf); /* 将两次读入数据组合 */ switch(temp) /* 通过读入数据组合判断按键位置 */ { case 0x77 :a=0x0d;break;// 按键/ case 0x7b :a=0x0e; break;// 按键= case 0x7d :a=0; break;// 按键0 case 0x7e :a=0x0f; break;// 按键CE case 0xb7 :a=0x0c;break;// 按键* case 0xbb :a=0x9;break; // 按键9 case 0xbd :a=0x8;break; // 按键8 case 0xbe :a=0x7;break; // 按键7 case 0xd7 :a=0x0b;break;// 按键-
上一篇:基于51单片机的光电开关计数
下一篇:单片机TDS水质检测源程序
史海拾趣
|
中国的汽车产业在今年很有可能触及或跨越年产销一千万辆这个门槛,事实上在实现这个目标以前,中国就已经成为仅次于美国的全球第二大汽车市场。在当前的汽车中,汽车电子系统所占的比重越来越大,很多特色化的功能都是依赖汽车电子技术来实现的,如 ...… 查看全部问答> |
|
我是新手,以前都是跟着导师做单片机的。感觉单片机有点“不过瘾”的感觉,想往高深的学。想学linux下嵌入式编程,但是身边又没有的这方面的资源。于是想买一块开发板子。请问:淘宝上的那种便宜的开发板比如像2410、2440板子能买不?? 问题1:开 ...… 查看全部问答> |
|
本人在校学生,最近做的项目都用到了一些驱动的开发,感觉底层这方面的编程比普通的软件开发难度大一点。如果是软件公司招聘的话,他们会招聘新手吗?个人感觉做这方面的真正开发,都是有多年经验的老手。… 查看全部问答> |
|
三、伺服系统调试 接通伺服驱动器的电源, 先进入测试调整模式,测试调整模式可以执行伺服驱动器的测试操作,报警复位和参数编辑等等.其数字操作器的按键说明如表1: 键 出现的情况 MOD 在不同模式 ...… 查看全部问答> |
|
2812调试时关于看门狗的一些问题 大家好, 我目前正在调试一块自己做的2812的板子,遇到关于看门狗的一些问题: 一点连续运行按钮程序就跳到3FFC00处(此处应该是复位向量),而点单步运行的时候程序可以走的.点连续运行的时候用示波器观察reset引脚,发 ...… 查看全部问答> |
|
单片机的接收端是连接的GPS信号, 发送端连接的是GPRS的接收。 单片机就是把收到的经纬度找出来传给GPRS,用UDP发送。 只要不连GPS, 发送的数据就完全正确。 连了GPS之后,数据就乱了,GPS是一直在发送,速度很快 #include #include #incl ...… 查看全部问答> |




