1.求基于AT89C51单片机的简易计算器设计
单片机计算器基本功能介绍:简单的加减乘除的运算。
时间显示功能,而且能实现计算器模块和时间模块之间的任意切换。按键音却换功能。
原理;多功能单片机计算器是一个实现加减乘除的和时间功能的计算器,主要的硬件组成由,一个AT89s52单片机芯片,一个LED液晶(1602液晶),一个4*4键盘,和4个特殊功能按键。一个时钟芯片(DS1302),一个蜂鸣器。
单个硬件模块个的介绍AT89S52:主要控制芯片,它是由8kflash,256BRAM,6个中断源,详情参考AT89S52的技术文档.1602液晶1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”,而且可以实现一些复杂的字符操作:1:清显示,光标复位到地址00H位置,2:光标和显示模式设置 光标移动方向,高电平右移,低电平左移,屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 3:显示开关控制,控制整体显示的开与关,高电平表示开显示,低电平表示关显示,控制光标的开与关,高电平表示有光标,低电平表示无光标,控制光标是否闪烁,高电平闪烁,低电平不闪烁4:光标或显示移位,高电平时移动显示的文字,低电平时移动光标5:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符(高低电平在相应的指令上实现),详情可参考1602的技术文档。
1602采用标准的16脚接口: 第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。 第15~16脚:空脚。
1602液晶和单片机的接法4*4键盘,和4个特殊功能按键K(切换键) No(复位键)(时间设置键) C(清除键) +1 2 3 —4 5 6 *7 8 9 %(除)—/+ 0 。 =前4个为特殊功能键,后十六个采用键盘扫描接法,扫描原理:首先给p3口赋11111110(0xfe),然后再读取p3口的值,如果为11101110(0xee)说明是第一排第一个被按下,如果是11011110(0xde)说明是第一排第二个被按下,如果是10111110(0xbe)说明是第一排第三个被按下,如果是0111110(0x7e)说明是第一排第四个被按下,判断二三四排的按键,都采用同样的方法,只要分别给P3口赋不同的值即可,在读取p3口的值,在判断。
用这样的方法即可实现4*4键盘的扫描,只要有键按下,就可以知道是那个键按下,通过这种方法可大大节省单片机的io口的资源。详情可参考网上的键盘扫描原理时钟芯片(DS1302)DS1302 是DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31 字节静态RAM ,通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES 复位2 I/O 数据线3 SCLK串行时钟时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式实时时钟具有能计算2100 年之前的秒分时日日期星期月年的能力还有闰年调整的能力(详情可参考DS1302的技术文档管脚描述X1 X2 32.768KHz 晶振管脚GND 地RST 复位脚I/O 数据输入/输出引脚SCLK 串行时钟Vcc1,Vcc2 电源供电管脚计算器工作大概流程。
2.基于51单片机的简易计数器设计
原发布者:puti0808
基于单片机的简易计算器设计摘要3关键字:80C51LCD16024*4矩阵键盘计算器3第一章绪论41.1系统开发背景41.2系统开发意义41.3设计目的41.4设计任务4第二章单片机发展现状52.1目前单片机的发展状况52.1.1单片机的应用场合52.2计算器系统现状62.3简易计算器系统介绍6第三章系统硬件设计及说明73.1系统组成及总体框图83.2AT89S52单片机介绍83.3其它器件介绍及说明113.3.1LCD1602液晶显示113.3.24*4矩阵扫描按键14第四章PROTEUS模拟仿真15第五章系统硬件设计及说明17第六章软件设计186.1汇编语言和C语言的特点及选择186.2源程序代码18摘要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计主要以80C51单片机为控制芯片,用C语言进行编程实现,通过4*4矩阵键盘控制,输出用液晶屏LCD1602显示,该计算器可以实现一般的加减乘除四则混合运算。关键字:80C51LCD16024*4矩阵键盘计算器第1章绪论1.1
3.怎样设计一个基于51单片机的简易计算器
单片机计算器 基本功能介绍:简单的加减乘除的运算。
时间显示功能,而且能实现计算器模块和时间模块之间的任意切换。按键音却换功能。
原理;多功能单片机计算器是一个实现加减乘除的和时间功能的计算器,主要的硬件组成由,一个at89s52单片机芯片,一个led液晶(1602液晶),一个4*4键盘,和4个特殊功能按键。一个时钟芯片(ds1302),一个蜂鸣器。
单个硬件模块个的介绍 at89s52:主要控制芯片,它是由8kflash,256bram,6个中断源,详情参考at89s52的技术文档.1602液晶1602液晶模块内部的字符发生存储器(cgrom)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比如大写的英文字母“a”的代码是01000001b(41h),显示时模块把地址41h中的点阵字符图形显示出来,我们就能看到字母“a”,而且可以实现一些复杂的字符操作:1:清显示,光标复位到地址00h位置,2:光标和显示模式设置 光标移动方向,高电平右移,低电平左移,屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 3:显示开关控制,控制整体显示的开与关,高电平表示开显示,低电平表示关显示,控制光标的开与关,高电平表示有光标,低电平表示无光标,控制光标是否闪烁,高电平闪烁,低电平不闪烁4:光标或显示移位,高电平时移动显示的文字,低电平时移动光标5:功能设置命令 dl:高电平时为4位总线,低电平时为8位总线 n:低电平时为单行显示,高电平时双行显示 f: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符(高低电平在相应的指令上实现),详情可参考1602的技术文档。
1602采用标准的16脚接口: 第1脚:vss为地电源第2脚:vdd接5v正电源第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度第4脚:rs为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:rw为读写信号线,高电平时进行读操作,低电平时进行写操作。
当rs和rw共同为低电平时可以写入指令或者显示地址,当rs为低电平rw为高电平时可以读忙信号,当rs为高电平rw为低电平时可以写入数据。第6脚:e端为使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:d0~d7为8位双向数据线。 第15~16脚:空脚。
1602液晶和单片机的接法4*4键盘,和4个特殊功能按键 k(切换键) no(复位键) (时间设置键) c(清除键) +1 2 3 —4 5 6 *7 8 9 %(除) —/+ 0 。 = 前4个为特殊功能键,后十六个采用键盘扫描接法,扫描原理:首先给p3口赋11111110(0xfe),然后再读取p3口的值,如果为11101110(0xee)说明是第一排第一个被按下,如果是11011110(0xde)说明是第一排第二个被按下,如果是10111110(0xbe)说明是第一排第三个被按下,如果是0111110(0x7e)说明是第一排第四个被按下,判断二三四排的按键,都采用同样的方法,只要分别给p3口赋不同的值即可,在读取p3口的值,在判断。
用这样的方法即可实现4*4键盘的扫描,只要有键按下,就可以知道是那个键按下,通过这种方法可大大节省单片机的io口的资源。详情可参考网上的键盘扫描原理 时钟芯片(ds1302) ds1302 是dallas 公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31 字节静态ram ,通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过am/pm 指示决定采用24 或12 小时格式ds1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 res 复位2 i/o 数据线3 sclk串行时钟时钟/ram 的读/写数据以一个字节或多达31 个字节的字符组方式 实时时钟具有能计算2100 年之前的秒分时日日期星期月年的能力还有闰年调整的能力(详情可参考ds1302的技术文档 管脚描述 x1 x2 32.768khz 晶振管脚 gnd 地 rst 复位脚 i/o 数据输入/输出引脚 sclk 串行时钟 vcc1,vcc2 电源供电管脚 计算器工作大概流程。
4.51单片机键盘接口电路的计算器的实现的毕业设计及开题报告
51单片机计算器的设计(开题报告实物论文)
目 录
1.课程设计的目的………………………………………………3
2.课程设计题目描述和要求……………………………………3
3.单片机发展简史………………………………………………4
4.MCS-51单片机系统简介………………………………………6
5.MCS-51单片机内部定时器/计数器简介……………………7
6.理论设计………………………………………………………8
7.主要电路分析…………………………………………………8
8.硬件设计………………………………………………………10
9.软件设计………………………………………………………11
10.程序代码……………………………………………………12
11.设计总结……………………………………………………18
12.参考文献……………………………………………………20
随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了。
计算器在人们的日常中是比较的常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的四位数计算器。该设计系统是以AT89S51为单片机, P3口作为输入端,外接4X4的键盘,通过键盘扫描来对输入数的控制,在P1口,P2口接了驱动电路。用来保证LED的工作正常。计算器将完成的功能有加,减,乘,除等功能。
功能:
完成0~9999整数的一次加/减/乘/除运算,
减法运算结果可以实现计算结果的负数显示,
除法运算结果为0~999并保留两位小数,
按键音,
设有清零键,
首位零不显示,
其它的显示"E"
按键排布为:
清零/确认/除/乘
减/加/9/8
7/6/5/4
3/2/1/0
5.基于AT89C51制作简易计算器
以下是我编的简易计算器程序,基本成功 //4*4键盘检测程序,按下键后相应的代码显示在液晶屏上 //显示5位后,第6次显示操作符号 //再显示下一个数 // 键值与功能对应表 //键值 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //功能 0 1 2 3 4 5 6 7 8 9 + - * ÷ = 清零 #include
6.用单片机设计简易计算器
给你些子程序,自己看着凑吧。
呵呵。有了这些,写出来应该不难了。
;@@@@@@@@@双字节整数运算@@@@@@@@@@@@@@@@@@;***********双字节无符号加法**************;入口:R6(H),R7,R4(H),R5,出口:和R6(H),R7(L)UADD: MOV A,R7 ADD A,R5 MOV R7,A MOV A,R6 ADDC A,R4 MOV R6,A RET;***********双字节无符号减法**************;入口:被减数R6(H),R7(L),减数R4(H),R5(L),出口:差R6(H),R7(L) CLR C MOV A,R7 SUBB A,R5 MOV R7,A MOV A,R6 SUBB A,R4 MOV R6,A RET;***********双字节无符号乘法**************;入口:R6(H),R7(L),R4(H),R5(L),出口:积R6(H),R7(L)UMUL: MOV A,R7 MOV B,R5 MUL AB MOV R0,B XCH A,R7 MOV B,R4 MUL AB ADD A,R0 XCH A,R6 MOV B,R5 MUL AB ADD A,R6 MOV R6,A RET;***********双字节无符号除法*****************;入口:R6(H),R7(L),R4(H),R5(L),出口:商R6(H),R7(L),余R4(H),R5(L);影响:R2,R3,;堆栈需求:1UDIV: CLR C CLR A MOV R2,A MOV R3,A MOV B,#10HMOVBIT: MOV A,R7;R6、R7中数据左移一位到R2、R3中,C到R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A CLR C ;R2R3-R4R5 MOV A,R3 SUBB A,R5 PUSH Acc MOV A,R2 SUBB A,R4 JBC Cy,MOVBIT0;不够减,清C继续左移 MOV R2,A;够减,存回余数并置位C POP Acc MOV R3,A SETB C SJMP MOVBIT1MOVBIT0: POP AccMOVBIT1: DJNZ B,MOVBIT MOV A,R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R2 MOV R4,A MOV A,R3 MOV R5,A RET (7) 标号: DIVD 功能:双字节二进制无符号数除法入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
影响资源:PSW、A、B、R1~R7 堆栈需求: 2字节DIVD: CLR C ;比较被除数和除数MOV A,R3 SUBB A,R7MOV A,R2SUBB A,R6JC DVD1SETB OV ;溢出RETDVD1: MOV B,#10H ;计算双字节商DVD2: CLR C ;部分商和余数同时左移一位MOV A,R5RLC AMOV R5,AMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AXCH A,R2RLC AXCH A,R2MOV F0,C ;保存溢出位CLR CSUBB A,R7 ;计算(R2R3-R6R7)MOV R1,AMOV A,R2SUBB A,R6ANL C,/F0 ;结果判断JC DVD3MOV R2,A ;够减,存放新的余数MOV A,R1MOV R3,AINC R5 ;商的低位置一DVD3: DJNZ B,DVD2 ;计算完十六位商(R4R5)MOV A,R4 ;将商移到R2R3中MOV R2,AMOV A,R5MOV R3,ACLR OV ;设立成功标志RET。
7.用单片机设计简易计算器
给你些子程序,自己看着凑吧。
呵呵。有了这些,写出来应该不难了。
;@@@@@@@@@双字节整数运算@@@@@@@@@@@@@@@@@@;***********双字节无符号加法**************;入口:R6(H),R7,R4(H),R5,出口:和R6(H),R7(L)UADD: MOV A,R7 ADD A,R5 MOV R7,A MOV A,R6 ADDC A,R4 MOV R6,A RET;***********双字节无符号减法**************;入口:被减数R6(H),R7(L),减数R4(H),R5(L),出口:差R6(H),R7(L) CLR C MOV A,R7 SUBB A,R5 MOV R7,A MOV A,R6 SUBB A,R4 MOV R6,A RET;***********双字节无符号乘法**************;入口:R6(H),R7(L),R4(H),R5(L),出口:积R6(H),R7(L)UMUL: MOV A,R7 MOV B,R5 MUL AB MOV R0,B XCH A,R7 MOV B,R4 MUL AB ADD A,R0 XCH A,R6 MOV B,R5 MUL AB ADD A,R6 MOV R6,A RET;***********双字节无符号除法*****************;入口:R6(H),R7(L),R4(H),R5(L),出口:商R6(H),R7(L),余R4(H),R5(L);影响:R2,R3,;堆栈需求:1UDIV: CLR C CLR A MOV R2,A MOV R3,A MOV B,#10HMOVBIT: MOV A,R7;R6、R7中数据左移一位到R2、R3中,C到R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A CLR C ;R2R3-R4R5 MOV A,R3 SUBB A,R5 PUSH Acc MOV A,R2 SUBB A,R4 JBC Cy,MOVBIT0;不够减,清C继续左移 MOV R2,A;够减,存回余数并置位C POP Acc MOV R3,A SETB C SJMP MOVBIT1MOVBIT0: POP AccMOVBIT1: DJNZ B,MOVBIT MOV A,R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R2 MOV R4,A MOV A,R3 MOV R5,A RET (7) 标号: DIVD 功能:双字节二进制无符号数除法入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
影响资源:PSW、A、B、R1~R7 堆栈需求: 2字节DIVD: CLR C ;比较被除数和除数MOV A,R3 SUBB A,R7MOV A,R2SUBB A,R6JC DVD1SETB OV ;溢出RETDVD1: MOV B,#10H ;计算双字节商DVD2: CLR C ;部分商和余数同时左移一位MOV A,R5RLC AMOV R5,AMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AXCH A,R2RLC AXCH A,R2MOV F0,C ;保存溢出位CLR CSUBB A,R7 ;计算(R2R3-R6R7)MOV R1,AMOV A,R2SUBB A,R6ANL C,/F0 ;结果判断JC DVD3MOV R2,A ;够减,存放新的余数MOV A,R1MOV R3,AINC R5 ;商的低位置一DVD3: DJNZ B,DVD2 ;计算完十六位商(R4R5)MOV A,R4 ;将商移到R2R3中MOV R2,AMOV A,R5MOV R3,ACLR OV ;设立成功标志RET。
8.用51单片机实现一个简单计算器的功能
给你一个参考程序,这个是可行的哦,你看看这个程序#include
9.基于51单片机的简易计数器设计,求c语言程序
#include
#define uchar unsigned char
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9
unsigned char sec=0,scanled;
unsigned char disdat[2];
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
void dischg()
{
disdat[0]=sec%10;
disdat[1]=sec/10;
}
void t0isr() interrupt 1 //秒计时
{
TH0=0x3c;
TL0=0xb0;
time++;
if(time==20)
{
time=0;
sec++;
if(sec>60)sec=0;
}
dischg();
}
void t1isr() interrupt 3 //显示
{
TH1=0xec;
TL1=0x78;
switch(scanled)
{
case 0:
P2=0x01;
P0=~ledtab[disdat[7]];
break;
case 1:
P2=0x02;
P0=~ledtab[disdat[6]];
break;
default:break;
}
scanled++;
scanled%=2;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
sec=0;
scanled=0;
time=0;
dischg();
while(1)
{
if(key1==0)
{
while(key1==0);
TR0=0;
}
if(key2==0)
{
while(key2==0);
TR0=1;
}
if(key3==0)
{
while(key3==0);
sec=0;
dischg();
}
}
}
转载请注明出处众文网 » 基于51单片机简易计算器毕业论文