历史上的今天
今天是:2025年03月13日(星期四)
2020年03月13日 | 基于单片机的银行利率显示屏的设计
2020-03-13 来源:eefocus
#include #include “intrins.h” //头文件 #define INT8U unsigned char //宏定义 #define INT16U unsigned int #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit wei1 = P2^0; //数码管的位选端口 sbit wei2 = P2^1; sbit wei3 = P2^2; sbit wei4 = P2^3; sbit K1=P2^7; sbit ledg=P3^0; sbit ledr=P3^1; bit flag0,flag1,flag2;//定义标志位 uchar temp,key; unsigned int Num1=0,Num2=0;//定义变量 uchar code table_dm[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳极数码管断码表 uchar code table_dd[11]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x7f};//共阳极数码管断码表 uint Display_Buffer[4]={1,0,0,0}; //定义数组 uint a,b,n; //定义变量 void delayms(uint xms) //延时子程序 { int i,j; for(i=xms;i>0;i–) for(j=110;j>0;j–); } void delay1(uint z)//延时为 1ms { uchar x,x1; for(;z>0;z–) { for(x=0;x<114;x++) { for(x1=0;x1<1;x1++); } } } void delay()//5us延时 { nop(); nop(); nop(); } void system_Ini() //系统设置初始化 { TMOD = 0x00; //选择模式0 13位计数 最大计数8192 TH0 = (8192 - 1000)/32; TL0 = (8192 - 1000)%32 ; IE = 0x8A; //中断 TR0 = 1; //开启T0定时器 } void keyscan(void) { temp = 0; P1=0xF0; //高四位输入 列为高电平 行为低电平 delay1(1); //延时 temp=P1; //读P1口 temp=temp&0xF0; //屏蔽低四位 temp=~((temp>>4)|0xF0); if(temp1) // p1.4 被拉低 key=0; //第1个按键键值 else if(temp2) // p1.5 被拉低 key=1; //第2个按键键值 else if(temp4) // p1.6 被拉低 key=2; //第3个按键键值 else if(temp8) // p1.7 被拉低 key=3; //第4个按键键值 else key = 16; P1=0x0F; //低四位输入 行为高电平 列为低电平 delay1(1); //延时 temp=P1; //读P1口 temp=temp&0x0F; temp=~(temp|0xF0); if(temp==1) //第一行 p1.1 被拉低(直接temp==2 是因为我们P1.0空的,是3*4的矩阵键盘) key=key+0; else if(temp==2) //第一行 p1.1 被拉低(直接temp==2 是因为我们P1.0空的,是3*4的矩阵键盘) key=key+4; else if(temp==4) //第二行 p1.2 被拉低 key=key+8; else if(temp==8) //第三行 p1.3 被拉低 key=key+12; else key = 16; // // dis_buf = key; //键值入显示缓存 // dis_buf = dis_buf & 0x0f; if(key16) { flag0=0; } if(key!=16) { if(key0&&flag00) { flag0=1; if(a0); else if(a<4) { Display_Buffer[0]=Display_Buffer[1]; Display_Buffer[1]=Display_Buffer[2]; Display_Buffer[2]=Display_Buffer[3]; Display_Buffer[3]=0; a++; if(flag2==1) b++; } } else if(key==1&&flag0==0) { flag0=1; if(a<4) { Display_Buffer[0]=Display_Buffer[1]; Display_Buffer[1]=Display_Buffer[2]; Display_Buffer[2]=Display_Buffer[3]; Display_Buffer[3]=1; a++; if(flag2==1) b++; } } else if(key==2&&flag0==0) { flag0=1; if(a<4) { Display_Buffer[0]=Display_Buffer[1]; Display_Buffer[1]=Display_Buffer[2]; Display_Buffer[2]=Display_Buffer[3]; Display_Buffer[3]=2; a++; if(flag2==1) b++; } } else if(key==3&&flag0==0) { flag0=1; if(a<4) { Display_Buffer[0]=Display_Buffer[1]; Display_Buffer[1]=Display_Buffer[2]; Display_Buffer[2]=Display_Buffer[3]; Display_Buffer[3]=3; a++; if(flag2==1) b++; } } else if(key==4&&flag0==0) { flag0=1; if(a<4) { Display_Buffer[0]=Display_Buffer[1]; Display_Buffer[1]=Display_Buffer[2]; Display_Buffer[2]=Display_Buffer[3]; Display_Buffer[3]=4; a++; if(flag2==1) b++; } } else if(key==5&&flag0==0) { flag0=1; if(a<4) { Display_Buffer[0]=Display_Buffer[1]; Display_Buffer[1]=Display_Buffer[2]; Display_Buffer[2]=Display_Buffer[3]; Display_Buffer[3]=5; a++; if(flag2==1) b++; } } else if(key==6&&flag0==0) { flag0=1; if(a<4) { Display_Buffer[0]=Display_Buffer[1]; Display_Buffer[1]=Display_Buffer[2]; Display_Buffer[2]=Display_Buffer[3]; Display_Buffer[3]=6; a++; if(flag2==1) b++; } } else if(key==7&&flag0==0) { flag0=1; if(a<4) { Display_Buffer[0]=Display_Buffer[1]; Display_Buffer[1]=Display_Buffer[2]; Display_Buffer[2]=Display_Buffer[3]; Display_Buffer[3]=7; a++; if(flag2==1) b++; } } else if(key==8&&flag0==0) { flag0=1; if(a<4) { Display_Buffer[0]=Display_Buffer[1]; Display_Buffer[1]=Display_Buffer[2]; Display_Buffer[2]=Display_Buffer[3]; Display_Buffer[3]=8; a++; if(flag2==1) b++; } } else if(key==9&&flag0==0) { flag0=1; if(a<4) { Display_Buffer[0]=Display_Buffer[1]; Display_Buffer[1]=Display_Buffer[2]; Display_Buffer[2]=Display_Buffer[3]; Display_Buffer[3]=9; a++; if(flag2==1) b++; } } else if(key==10&&flag0==0) { flag0=1; if(a<4&&flag2==0) { Display_Buffer[3-a]=0; if(a==0) a=1; b=1; flag2=1; } } else if(key==11&&flag0==0) { flag0=1; a=0; b=0; Display_Buffer[0]=Display_Buffer[1]=Display_Buffer[2]=Display_Buffer[3]=0; flag2=0; } } } void main(void) //主函数 { uchar i; system_Ini(); //系统设置初始化子程序 a=4; b=4; ledg=0; ledr=1; while(1) //大循环 { keyscan(); if(K10) { while(K10); flag1=~flag1; a=0; b=0; Display_Buffer[0]=Display_Buffer[1]=Display_Buffer[2]=Display_Buffer[3]=0; flag2=0; if(flag1==1) { ledg=1; ledr=0; } else { ledg=0; ledr=1; } } } } void T0zd(void) interrupt 1 //3定时器1的中断号 1定时器0的中断号 0外部中断1 2外部中断2 4串口中断 { TH0 = (8192 - 1000)/32; //1ms装载初值 保险,卡顿 TL0 = (8192 - 1000)%32; if(flag1==1) { Num1=0; wei1=wei2=wei3=wei4=0; } else Num2++; Num1++; if(Num2>10) //扫描数码管程序 { Num2=0; n++; wei1=wei2=wei3=wei4=0; P0=0xff; if(n>3) n=0; if(n==0) { if(a!=4) P0=0xff; else { if(b==4) P0=table_dd[Display_Buffer[n]]; else P0=table_dm[Display_Buffer[n]]; } wei1=0; wei2=1; wei3=1; wei4=1; } else if(n==1) { if(a<3) P0=0xff; else { if(b==3) P0=table_dd[Display_Buffer[n]]; else P0=table_dm[Display_Buffer[n]]; } wei1=1; wei2=0; wei3=1; wei4=1; } else if(n==2) { if(a<2) P0=0xff; else { if(b==2) P0=table_dd[Display_Buffer[n]]; else P0=table_dm[Display_Buffer[n]]; } wei1=1; wei2=1; wei3=0; wei4=1; } else if(n==3) { if(b==1) P0=table_dd[Display_Buffer[n]]; else P0=table_dm[Display_Buffer[n]]; wei1=1; wei2=1; wei3=1; wei4=0; } } }
上一篇:单片机之LED点阵
史海拾趣
|
在没有单片机的情况下,只有仿真调试器,能否用Keil uVision3通过仿真调试器进行仿真呢? 在没有单片机的情况下,只有仿真调试器,能否用Keil uVision3通过仿真调试器进行仿真呢?如果不能的话,在没有单片机的情况下怎样才能编程仿真呢?欢迎大家给予小弟点指点,谢谢了!… 查看全部问答> |
|
在WinCE 上, 如果ARM CPU 已经内置了CPU 控制器, 在平台上实现USB 功能,需要哪些步骤? 在WinCE 上, 如果ARM CPU 已经内置了CPU 控制器, 在平台上实现USB 功能,需要哪些步骤? 如果CPU 原厂的BSP 已经支持了USB 功能, 我们还需要哪些步骤?… 查看全部问答> |
|
wince 5.0 使用 imaging COM组件 画png图片 内存泄露 BOOL ImageFromIDResource(UINT nID, LPCTSTR sTR, IImage** pIImage) { HRSRC hRsrc = ::FindResource (hInstRes,MAKEINTRESOURCE(nID),sTR); // type if (!hRsrc) &n ...… 查看全部问答> |
|
程序如下,急需高手指点!为什么程序下载到1602上无任何显示? //LCD #define LOW_RS() GPIOD->BRR =GPIO_Pin_6#define LOW_RW() GPIOD->BRR =GPIO_Pin_5#define L ...… 查看全部问答> |
|
JCJ560 智能综合环境监测系统 一、产品简介: JCJ560智能综合环境监测系统是九纯健科技给合数据通讯技术、微型电脑控制技术、手机短信技术、互联网技术、传感器测量技术、自动化监测软件开发技术等多学科先进技术 ...… 查看全部问答> |




