原标题:模拟计算器数字输入及显示

吴鉴鹰单片机开发板地址

店铺:【吴鉴鹰的小铺】

地址:【https://item.taobao.com/item.htm?_u=ukgdp5a7629&id=524088004171】

1.实验任务

(1).开机时,显示“0”

(2).第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音。

2.电路原理图

图4.23.1

3.系统板上硬件连线

(1).把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;

(2).把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;

(3).把“单片机系统”区域中的P0.0-P0.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;

(4).把“单片机系统:区域中的P2.0-P2.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;

4.相关程序设计内容

(1).行列式键盘输入及按键功能设定;

(2).动态数码显示;

(3).数码显示方式处理;

5.汇编源程序

(略)

6.C语言源程序

#include

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char dispbuf[8]={0,16,16,16,16,16,16,16};

unsigned char dispbitcount;

unsigned char temp;

unsigned char i,j;

unsigned char key;

unsigned char keypos;

bit alarmflag;

void change(unsigned char *p,unsigned char count)

{

while(count>0)

{

*(p+count)=*(p+count-1);

count--;

}

}

void main(void)

{

TMOD=0x01;

TH0=(65536-4000) / 256;

TL0=(65536-4000) % 256;

TR0=1;

ET0=1;

EA=1;

while(1)

{

P3=0xff;

P3_4=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

for(i=50;i>0;i--)

for(j=200;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=7;

break;

case 0x0d:

key=8;

break;

case 0x0b:

key=9;

break;

case 0x07:

key=10;

break;

}

if ((key>=0) && (key<10))

{

keypos++;

if(keypos<8)

{

change(dispbuf,keypos);

dispbuf[0]=key;

}

else

{

keypos=8;

alarmflag=1;

}

}

temp=P3;

P1_0=~P1_0;

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

alarmflag=0;

}

}

P3=0xff;

P3_5=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

for(i=50;i>0;i--)

for(j=200;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=4;

break;

case 0x0d:

key=5;

break;

case 0x0b:

key=6;

break;

case 0x07:

key=11;

break;

}

if ((key>=0) && (key<10))

{

keypos++;

if(keypos<8)

{

change(dispbuf,keypos);

dispbuf[0]=key;

}

else

{

keypos=8;

alarmflag=1;

}

}

temp=P3;

P1_0=~P1_0;

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

alarmflag=0;

}

}

P3=0xff;

P3_6=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

for(i=50;i>0;i--)

for(j=200;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=1;

break;

case 0x0d:

key=2;

break;

case 0x0b:

key=3;

break;

case 0x07:

key=12;

break;

}

if ((key>=0) && (key<10))

{

keypos++;

if(keypos<8)

{

change(dispbuf,keypos);

dispbuf[0]=key;

}

else

{

keypos=8;

alarmflag=1;

}

}

temp=P3;

P1_0=~P1_0;

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

alarmflag=0;

}

}

P3=0xff;

P3_7=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

for(i=50;i>0;i--)

for(j=200;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=0;

break;

case 0x0d:

key=13;

break;

case 0x0b:

key=14;

break;

case 0x07:

key=15;

break;

}

if ((key>=0) && (key<10))

{

keypos++;

if(keypos<8)

{

change(dispbuf,keypos);

dispbuf[0]=key;

}

else

{

keypos=8;

alarmflag=1;

}

}

temp=P3;

P1_0=~P1_0;

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

alarmflag=0;

}

}

}

}

void t0(void) interrupt 1 using 0

{

TH0=(65536-4000) / 256;

TL0=(65536-4000) % 256;

P0=dispcode[dispbuf[dispbitcount]];

P2=dispbitcode[dispbitcount];

dispbitcount++;

if (dispbitcount==8)

{

dispbitcount=0;

}

if (alarmflag==1)

{

P1_1=~P1_1;

}

}

喜欢本文的亲们,欢迎点赞

技术源于积累,成功来自执着

——单片机精讲吴鉴鹰返回搜狐,查看更多

责任编辑:

c语言显示数字p1=0x5b,模拟计算器数字输入及显示相关推荐

  1. 模拟计算器数字输入及显示

    1. 实验任务 (1.       开机时,显示"0" (2.       第一次按下时,显示"D1":第二次按下时,显示"D1D2":第三 ...

  2. python绘制直方图显示数字_Python实现绘制双柱状图并显示数值功能示例

    本文实例讲述了Python实现绘制双柱状图并显示数值功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 import matplotlib.py ...

  3. linux点阵数字图案,LED8X8点阵显示数字0-9数字

    下面是电路图: /* 名称:8X8LED点阵显示数字 说明:1.8X8LED点阵屏循环显示数字0~9,刷新过程为动态变换完成. 2.行扫描为XX,接P1口,列扫描为YY,接P3口 */ #includ ...

  4. 一分钟学会自定义右上角显示数字的ImageView

    平时在一些app上会看到一些图标的右上角会显示数字,如微信的头像右上角显示信息数量,淘宝的购物车图标右上角显示商品数量.本人最近也在努力学习自定义控件,下面是本人实现的一个简陋的带数字的ImageVi ...

  5. 关于0.96 OLED显示屏显示数字

    在使用0.96 OLED显示屏的时候,我发现显示数字是一个大问题,特别是关于显示浮点型数据,自己折腾了一番,目前虽然浮点型显示上还有不小的问题,但可以满足最低级别的需求. 首先声明,本文中使用的程序是 ...

  6. c语言共阴极数码管数字6,共阴数码管 显示数字 C语言程序

    共阴数码管显示数字C语言程序#include void Delay(unsigned char a) { unsigned char i; while( --a != 0) { for(i = 0; ...

  7. 单片机 c语言 数字 0 9,单片机点阵式LED显示技术数字“0-9”

    1.实验任务利用8X8点阵显示数字0到9的数字. 2.电路原理图 图4.25.1 3.硬件系统连线(1).把"单片机系统"区域中的P1端口用8芯排芯连接到"点阵模块&qu ...

  8. 设计的界面如下图所示:窗体的标题栏显示“模拟计算器—江海大”,1个文本框用于显示输入字符和计算结果;20个按钮控件作为字符输入按键或者功能按键。

    (2)计算功能:实现加.减.乘.除等双目运算,开平方.百分数等单目运算: ​(3)辅助功能:按钮"C"清空文本框:按钮"←"退格,删除文本框中最右边的一个字符. ...

  9. c语言中乱显示数字,同时显示不同的数字

    在上一讲的代码中几个数码管只能同时显示相同的数字和字母,这一讲我们实现同时3个数码管点亮但每个数码管显示的数字都不一样,所以我们做一个用来显示一个变量一秒后自加1的显示效果. 例如,此时时间过去了16 ...

最新文章

  1. 【廖雪峰python入门笔记】list_按照索引访问
  2. linux kernel devel和kernel source的区别
  3. dede单独显示查到了多少条记录的方法
  4. php的array跟go的array,实现类似php的array_column方法
  5. Scala入门到精通——第二十一节 类型参数(三)-协变与逆变
  6. ssl1624-小萨的烦恼【图论,最短路,Floyd】
  7. 综述 | 万字长文带你入门近几年深度学习的重要研究成果
  8. android m在哪下载地址,android m预览版SDK下载地址 android m预览版SDK下载网址
  9. linux下载镜像的命令wget,Linux wget命令整站下载做网站镜像
  10. AOAPC I: Beginning Algorithm Contests 题解
  11. Day 5内存管理,定义变量
  12. 浅谈前后端路由与前后端渲染
  13. pitch、yaw、roll三个角
  14. java百度云盘,看完直呼内行
  15. Debian 10 安装fonts-noto-cjk
  16. WorldFirst万里汇推出港币和离岸人民币账户!
  17. 三个数差的平方公式推导过程_学懂因式分解 你只差这8个完全平方公式推导结论 立马见效...
  18. you-get视频解析下载
  19. 结对开发——求二维环形数组所有子矩阵最大和的问题
  20. jQuery思维导图

热门文章

  1. 【面试题】HashMap 面试 21 问
  2. spark学习-37-Spark的SortShuffleManager
  3. SpringBoot 整合Shiro实现动态权限加载更新+Session共享+单点登录
  4. 记一次项目代码重构:使用Spring容器干掉条件判断
  5. 关于spring的配置文件总结
  6. struts2的国际化(即实现网站整体中英文切换)实例
  7. JavaScript小效果的实现(笔记)
  8. phpexcel删除行_使用PHPExcel删除行
  9. 隐形Euler方法的java程序_常微分方程的解法 (二): 欧拉(Euler)方法
  10. English trip -- MC(情景课)3 C Do you have a sister?