基于51单片机

基于51单片机

ID:25452917

大小:142.50 KB

页数:4页

时间:2018-11-20

基于51单片机_第1页
基于51单片机_第2页
基于51单片机_第3页
基于51单片机_第4页
资源描述:

《基于51单片机》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include   //头文件 #define uint unsigned int // 定义无符号整形 #define uchar unsigned char// 无符号字符 sbit lcden=P2^3; //定义引脚 sbit rs=P2^4;//  数据或命令选择端 sbit rw=P2^0; //  读或写 sbit busy=P0^7;//  忙或闲  标志 char i,j,temp,num,num_1;//定义5个字符标志位 long a,b,c;     //a,第一个数 b,第二个数 c,得数 float a_c,b_c

2、;uchar flag,fuhao;//flag表示是否有符号键按下,fuhao表征按下的是哪个符号 uchar code table[]={ 7,8,9,0, 4,5,6,0, 1,2,3,0, 0,0,0,0}; uchar code table1[]={ 7,8,9,0x2f-0x30, //按键标值 0x2f-0x30是将字符转化为数字,与后面的0x30+i抵消,得i值 4,5,6,0x2a-0x30, 1,2,3,0x2d-0x30, 0x01-0x30,0,0x3d-0x30,0x2b-0x30};//0x01是清屏命令 void delay(uch

3、ar z) // 延迟函数 { uchar y; for(z;z>0;z--) //延时z*y    for(y=0;y<110;y++); } void check() // 判断忙或空闲  就是是否有按键按下 { do{     P0=0xFF;     rs=0;     //指令     rw=1;     //读rs rw 值为01时,忙标志和地址计数器读出     lcden=0;     //E=0,禁止读写     delay(1); //等待,液晶显示器处理数据     lcden=1;     //E=1,允许读写     }while(bu

4、sy==1); //判断是否为空闲,1为忙,0为空闲 } void write_com(uchar com) // 写指令函数 { P0=com;    //com指令付给P0口 rs=0;//0  0  写指令 无输出 rw=0; lcden=0;//关闭lcd使能 check();//检验按键 lcden=1;//开启lcd使能} void write_date(uchar date) // 写数据函数 {     P0=date; rs=1;//1  0   写数据 无输出 rw=0; lcden=0;//关使能 check(); lcden=1;//使能

5、 } void init() //初始化 {     num=-1; lcden=1; //使能信号为高电平 write_com(0x38); //功能设置命令:8位,2行 DDRAM的地址 write_com(0x0c); //显示开,光标关,不闪烁 write_com(0x06); //增量方式不移位  write_com(0x80); //检测忙信号//设置访问地址 write_com(0x01); //显示开,光标关,不闪烁 num_1=0; i=0; j=0; a=0;     //第一个参与运算的数 b=0;     //第二个参与运算的数 c=0;

6、     //结果值 flag=0; //flag表示是否有符号键按下,  fuhao=0; // fuhao表征按下的是哪个符号 } void keyscan() // 键盘扫描程序 { P3=0xfe; //1111 1110 if(P3!=0xfe)//p3口最低位非0 执行 {    if(P3!=0xfe)    { temp=P3&0xf0;//保留高4位的按键值     switch(temp)     {case 0xe0:num=0;//符号列        break;      case 0xd0:num=1;//369列        b

7、reak;       case 0xb0:num=2;//258列        break;      case 0x70:num=3;//147列        break;     }    }    while(P3!=0xfe);//下面为判断按键     if(num==0

8、

9、num==1

10、

11、num==2)//如果按下的是'7','8'或'9    {         if(j!=0)         {            write_com(0x01); //清屏命令           j=0;          }        if(f

12、lag==0)//没有按

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。