基于51单片机的多功能计算器设计课程设计(编辑修改稿)内容摘要:
k 1个; 10k滑动变阻器 1个; 10Ω 1个; ( 10) 开关 1个 ( 11) 5V有源蜂鸣器 1个 ( 12) 三极管 S8550一个 ( 13) 排针若干,杜邦线若干 22 附录 2 程序清单 分 9 个文件: , ,, , (a) 程序清单: ifndef __delay_h__ define __delay_h__ void delay_us(uint t)。 void delay_ms(uint t)。 endif (b) 程序清单: include void delay_us(unsigned int t) { while(t)。 } void delay_ms(unsigned int t) { unsigned int i, j。 for (i = 0。 i t。 i++) { for (j = 0。 j 65。 j++) { delay_us(1)。 } } } (c) 程序清单: ifndef __LCD1602_H define __LCD1602_H void LCD_write_(unsigned char )。 void LCD_write_Data(unsigned char Data)。 void LCD_clear(void)。 void LCD_init(void)。 void LCD_write_char(unsigned char x,unsigned char y,unsigned char Data)。 void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s)。 23 endif (d) 程序清单: include sbit RS = P2^4。 //定义端口 数据命令选择 H/L sbit RW = P2^5。 //读写 H/L sbit EN = P2^6。 //使能 extern unsigned char sk。 define RS_CLR RS=0 define RS_SET RS=1 define RW_CLR RW=0 define RW_SET RW=1 define EN_CLR EN=0 define EN_SET EN=1 /******************************************************************/ /* 写入命令函数 */ /******************************************************************/ void LCD_write_(unsigned char ) { RS_CLR。 RW_CLR。 EN_SET。 P0 =。 delay_us(5)。 EN_CLR。 } /******************************************************************/ /* 写入数据函数 */ /******************************************************************/ void LCD_write_Data(unsigned char Data) { RS_SET。 RW_CLR。 EN_SET。 P0 = Data。 delay_us(5)。 EN_CLR。 } /******************************************************************/ /* 清屏函数 */ /******************************************************************/ void LCD_clear(void) { LCD_write_(0x01)。 delay_ms(5)。 24 if(sk == 1) { LCD_write_char(0,1,0xde)。 LCD_write_(0x80)。 } else { LCD_write_char(0,1,0x20)。 LCD_write_(0x80)。 } } /******************************************************************/ /* 写入字符串函数 */ /******************************************************************/ void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) { unsigned char i,j。 if (y == 0) { LCD_write_(0x80 + x)。 } else { LCD_write_(0xC0 + x)。 } for(i=4。 i0。 i) { if(s[14] == 39。 039。 || s[14] == 39。 .39。 ) { for(j=14。 j1。 j) { s[j] = s[j1]。 } } else break。 } while (*s) { LCD_write_Data(*s)。 s++。 } } /******************************************************************/ /* 写入字节函数 */ 25 /******************************************************************/ void LCD_write_char(unsigned char x,unsigned char y,unsigned char Data) { if (y == 0) { LCD_write_(0x80 + x)。 } else { LCD_write_(0xC0 + x)。 } LCD_write_Data(Data)。 } /******************************************************************/ /* 初始化函数 */ /******************************************************************/ void LCD_init(void) { LCD_write_(0x38)。 /*显示模式设置 */ delay_ms(5)。 LCD_write_(0x38)。 delay_ms(5)。 LCD_write_(0x38)。 delay_ms(5)。 LCD_write_(0x38)。 LCD_write_(0x08)。 /*显示关闭 */ LCD_write_(0x01)。 /*显示清屏 */ LCD_write_(0x06)。 /*显示光标移动设置 */ delay_ms(5)。 LCD_write_(0x0C)。 /*显示开及光标设置 */ } (e)按键 程序清单: ifndef __KEYBOARD_H define __KEYBOARD_H unsigned char KeyProcess(void)。 //读按键函数 unsigned char keyscan(void)。 //键盘扫描函数 endif (f)按键 程序清单: include extern unsigned char sk。 sbit key0=P2^0。 sbit key1=P2^1。 sbit key2=P2^2。 sbit key3=P2^3。 26 sbit speak=P2^7。 unsigned char KeyProcess(void) { unsigned char key。 unsigned char keyvalue = 16。 key=keyscan()。 //调用键盘扫描 switch(key) { case 0xee:keyvalue = 0。 break。 //0 按下相应的键显示相对应的码值 case 0xde:keyvalue = 1。 break。 //1 按下相应的键显示相对应的码值 case 0xbe:keyvalue = 2。 break。 //2 case 0x7e:keyvalue = 3。 break。 //3 case 0xed:keyvalue = 5。 break。 //4 case 0xdd:keyvalue = 6。 break。基于51单片机的多功能计算器设计课程设计(编辑修改稿)
相关推荐
动作出现干烧等缺点。 CWVH0510水流量传感器在智能数码热泵系统中的应用 湛江中信电磁阀有限公司口径为 3cm 的 CWVH0510 型水流量传感器,它价格较低,体积小、重量较轻便于携带,而实际生活应用中可以根据自己的需要,定制口径和接线端连接方式和线路长短。 CWVH0510 型水流量传感器如图 210 所示: 12 图 210 CWVH0510型水流量传感器
拉电阻,某个引脚被外部信号拉低时会输出电流( IIL)。 P3 口同时具有 AT89C51 的多种特殊功能,具体如下表 1所示 : 端口引脚 第二功能 RXD (串行输入口 ) TXD(串行输出口) 0INT (外部中断 0) 1INT (外部中断 1) T0(定时 器 0) T1(定时器 1) WR (外部数据存储器写选通) RD(外部数据存储器都选通) 表 1 P3口的第二功能 •RST
据的高 4位代表音符对应的序列号,低 4 位代表节拍数 //例如 0x82,表示第八个音符 ,延时两个节拍 uchar code Music_One[]={ 0x02,0x82,0x16,0x32,0x54,0x02,0x52,0xA6,0x32,0x54,0x02,0x52,0x64,0x74,0xB6,0x64,0x52,0x5C,0x32,0x22,0x16,0x12,0x14,0x32
器 0 外部输入 T1(记时器 1 外部输入) /WR(外部数据存储器写选通) /RD(外部数据存储器读选通) RST:复位输入。 当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 /PSEN:外部程序存储器的选通信号。 在由外部程序存储器取指期间 ,每个机器周期两次 /PSEN 有效。 但在访问外部数据存储器时,这两次有效的 /PSEN 信号将不出现。 /EA / VPP:当
LC2252 呈现高输入阻抗和低噪声,能很好地适用于高阻抗源,例如电压传感器的小信号状况。 由于这些器件功耗低,所以它们在手持监视和 遥感原始传感器应用中工作良好。 此外,满电源电压幅度输出特性以及单独或分 离电源工作使得这些器件在直 图六 接与模拟数字转换器( ADC)接口时成为主要的选择对象。 所有这些特性,再结合它们的温度性能,使得 TLC2252 系列能理想的适用于声纳、远程传感器
端必须保持低电平(接地)。 因为没有扩展外部程序存储器所以将 EA 置为高电平。 图 32 控制部分电路图 由于 P3 口是特殊功能口,在该系统中基本是采用其第二功能。 其第二功能和实际运用如表 31 所示: 表 31 AT89S51P3 口第二功能的应用 基于单片机点阵电子显示屏设计 15 端口 第二功能 实际作用 RXD(串行输入口) 与上位机通信的数据输入口 TXD(串行输出口 )