基于51单片机计算器设计内容摘要:
e(busy==1)。 //判断是否为空闲, 1 为忙, 0为空闲 } void write_(uchar ) // 写指令函数 { P0=。 // 指令付给 P0口 rs=0。 //0 0 写指令 无输出 rw=0。 lcden=0。 //关闭 lcd 使能 check()。 //检验按键 lcden=1。 //开启 lcd 使能 哈尔滨华德学院课程设计用纸 11 } void write_date(uchar date) // 写数据函数 { P0=date。 rs=1。 //1 0 写数据 无输出 rw=0。 lcden=0。 //关使能 check()。 lcden=1。 //使能 } void init() //初始化 { num=1。 lcden=1。 //使能信号为高电平 write_(0x38)。 //功能设置命令 :8位, 2行 DDRAM 的地址 write_(0x0c)。 //显示开,光标关,不闪烁 write_(0x06)。 //增量方式不移位 write_(0x80)。 //检测忙信号 //设置访问地址 write_(0x01)。 //显示开,光标关,不闪烁 num_1=0。 i=0。 j=0。 a=0。 //第一个参与运算的数 b=0。 //第二个参与运算的数 c=0。 //结果值 flag=0。 //flag 表示是否有符号键按下, fuhao=0。 // fuhao 表征按下的是哪个符号 } void keyscan() // 键盘扫描程序 { P3=0xfe。 //1111 1110 if(P3!=0xfe)//p3 口最低位非 0 执行 { if(P3!=0xfe) { temp=P3amp。 0xf0。 //保留高 4位的按键值 switch(temp) { 哈尔滨华德学院课程设计用纸 12 case 0xe0:num=0。 //符号列 break。 case 0xd0:num=1。 //369 列 break。 case 0xb0:num=2。 //258 列 break。 case 0x70:num=3。 //147 列 break。 } } while(P3!=0xfe)。 //下面为判断按键 if(num==0||num==1||num==2)//如果按下的是 39。 739。 ,39。 839。 或 39。 9 { if(j!=0) { write_(0x01)。 //清屏命令 j=0。 } if(flag==0)//没有按过符号键 { a=a*10+table[num]。 //到 table 中取将要显示并参与运算 a的值 a的初值为 39。 039。 ,结果为输入 a值 } else//如果按过符号键 { b=b*10+table[num]。 //b 的初值为 39。 039。 ,结果为输入 b 值 } } else//如果按下的是 39。 /39。 { flag=1。 //有按键按下标志 fuhao=4。 //4 表示除号已按 } i=table1[num]。 //送显示 write_date(0x30+i)。 //将数 字转 化为 字符 ,对应 前面的table1 中的 i0x30 } P3=0xfd。 哈尔滨华德学院课程设计用纸 13 if(P3!=0xfd)//1111 1101 上次 1111 1110 低位向高位移一位 以后类似实现行扫描 { delay(5)。 //去抖 if(P3!=0xfd) { temp=P3amp。 0xf0。 switch(temp)//判断按键位置 下面是四种情况 { case 0xe0:num=4。 break。 case 0xd0:num=5。 break。 case 0xb0:num=6。 break。 case 0x70:num=7。 break。 } } while(P3!=0xfd)。 if(num==4||num==5||num==6amp。 amp。 num!=7)// 如果按下的是39。 439。 ,39。 539。 或 39。 639。 { if(j!=0) { write_(0x01)。 //清屏命令 j=0。 } if(flag==0)//没有按过符号键 { a=a*10+table[num]。 //输入 a值 } else//如果按过符号键 { b=b*10+table[num]。 //输入 b 值 } } else//如果按下的是 39。 /39。 哈尔滨华德学院课程设计用纸 14 { flag=1。 fuhao=3。 //3 表示乘号已按 } i=table1[num]。 //显示 找对应的码 write_date(0x30+i)。 } P3=0xfb。 //1111 1011 逐行扫描 if(P3!=0xfb) { delay(5)。 if(P3!=0xfb) { temp=P3amp。 0xf0。 switch(temp)//判断位置 { case 0xe0:num=8。 break。 case 0xd0:num=9。 break。 case 0xb0:num=10。 break。 case 0x70:num=11。 break。 } } while(P3!=0xfb)。 if(num==8||num==9||num==10)//如果按下的是 39。 139。 ,39。 239。 或 39。 339。 { if(j!=0) { write_(0x01)。 //清屏 j=0。 } if(flag=。基于51单片机计算器设计
相关推荐
寄生 (电容 )电源为止。 此外,还可外接 5 V 电源,给 DSl8820 供电。 DSl8820 的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。 图 7 为读取数据流程图。 读取 DS18B20 数据的部分 程序代码为: 4 数据测试 将温度传感器与冰水混合物接触,经过充分搅拌达到热平衡后调节系统,使显示读数为0. 00(标定 0℃ );利用气压计读出当时当地的大气压强
ed=true android:drawable=@drawable/desktop_music_voice2 / item android:drawable=@drawable/desktop_music_voice / /selector 5 播放动画的设计 有两个动画文件 和 文件, 当动画结束时 启动另外一个 activity动画特效是两个 imageView同时采用 淡入 ,旋转和
破学法。 针对旧教材内容陈旧、单一、脱离学生实际问题,我积极进行校本课程的开发与设计,设计了 ”叶贴画 ”,”吹塑纸版画的制作 “等课程,着重培养学生的综合实践能力和创新思维能力。 美术课教学中,我采用系统性、阶段性相结合的原则,做到每堂课都能让学生有收获。 总之,不管在课堂教学,还是在课外教学中,我都以培养学生能力,提高学生的素质为目标,增强学生的创新精神
引脚( 4 个) RST/VPD:复位信号输入引脚 /备用电源输入引脚。 ALE/PROG: 地址锁存允许信号输出引脚 /编程脉冲输入引脚。 EA/VPP:内、外存储器选择引脚 /片内 EPROM(或 Flatiron)编程电压输入引脚。 PSEN: 片外程序存储器读选通信号输出引脚。 16 第三章 ADC0809 ADC0809 引脚功能 ADC0809 的引脚如图所示
路中采用的共阴极的 LED 数码管,所以在设计电路时加了一个达林顿电路 ULN2020对信号进行放大,产生足够大的电流驱动数码管显示。 由于 4511 只能进行 BCD 十进制译码,只能译到 0 至 9,所以在这里我们利用 4511 译 码输出我们所需要的温度。 报警电路简介 图 3 温度在七段数码管上显示连接图 本文中所设计的报警电路较为简单,由一个自我震荡型的蜂鸣器(只要在蜂鸣器两端加上超过
P0口具有内部上拉电阻。 在 EPROM 编程时, P0 口接收指令字节,同时输出指令字节在程序校验时。 程序校验时需要外接上拉电阻。 P1 口: P1 口是一带有内部上拉电阻的 8位双向 I/O 口。 P1 口的输出缓冲能接受或输出 4 个 TTL 逻辑门电路。 当对 P1 口写 1 时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。 当作为输入端使用时, P1