赞
踩
该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加、减、乘、除的简单四则运算,并在 LCD屏幕上相应的显示结果。选择内部存储资源丰富的 51 单片机,输入采用 4×4矩阵键盘,显示采用LCD1602屏幕模块进行显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。
- bit lcden=P2^7;//使能信号
-
- uchar code table[]= " ";
-
- long int data_a,data_b; //第一个数和第二个数
- long int data_c; //计算结果
-
- uchar dispaly[10]; //显示缓冲
-
- sbit MUSIC_REST =P2^2;//语音芯片复位脚
- sbit MUSIC_DATA =P2^1;//语音芯片脉冲识别
- sbit bus =P2^0;//语音芯片工作状态识别信号
- uchar bbh,xm1,xm2,xm0;
-
- void delay_us(unsigned int us)//延时函数
- {
- while(us--)
- {
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- }
- void Music(unsigned char music_count)
- {
- MUSIC_REST=1;
- delay_us(200);
- MUSIC_REST=0;
- delay_us(200);
-
- while(music_count>0)
- {
- MUSIC_DATA=1;
- delay_us(100);
- MUSIC_DATA=0;
- delay_us(100);
- music_count--;
- }
- }
- //************************************************************************/
- // 描述: 延时t us函数
- //************************************************************************/
- void LCD_Delay_us(unsigned int t)
- {
- while(t--); //t=0,退出
- }
- //************************************************************************/
- // 描述: 延时t ms函数
- //************************************************************************/
- void LCD_Delay_ms(unsigned int t)
- {
- unsigned int i,j;
- for(i=0;i<t;i++) //执行t次循环
- for(j=0;j<113;j++) //执行113次循环
- ;
- }
- //************************************************************************/
- // 描述: 1602液晶写指令
- //************************************************************************/
- void write_com(uchar com) //1602液晶写指令
- {
- rs=0; //写指令
- lcden=0; //使能1602
- P0=com; //写入指令com
- LCD_Delay_ms(1); //延时1ms
- lcden=1; //使能1602
- LCD_Delay_ms(2); //延时2ms
- lcden=0; //使能1602
- }
- //************************************************************************/
- // 描述:1602液晶写数据
- //************************************************************************/
- void write_date(uchar date) //1602液晶写数据
- {
- rs=1; //写数据
- lcden=0; //使能1602
- P0=date; //写入数据date
- LCD_Delay_ms(1); //延时1ms
- lcden=1; //使能1602
- LCD_Delay_ms(2); //延时2ms
- lcden=0; //使能1602
- }
- //************************************************************************/
- // 描述:指定x,y写入字符函数
- //************************************************************************/
- void W_lcd(unsigned char x,unsigned char y,unsigned char Data)
- {
- if (y == 0){write_com(0x80 + x);} //第一行
- else{write_com(0xc0 + x);} //第二行
- write_date( Data); //写入数据
- }
- //指定x,y写入字符串函数
- void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
- {
- if (y == 0){write_com(0x80 + x);} //第一行
- else{write_com(0xC0 + x);} //第二行
- while (*s) //
- {write_date( *s); s++;} //写入数据
- }
- //************************************************************************/
- // 描述:初始化液晶,及画面初始化
- //************************************************************************/
- void init_lcd(void) //初始化液晶,及画面初始化
- {

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。