• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)(Proteus仿真)

2024/11/08
3445
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

有需要資料的可了解一下.docx

共1個(gè)文件

該計(jì)算器系統(tǒng)51 系列的單片機(jī)進(jìn)行的數(shù)字計(jì)算器系統(tǒng)設(shè)計(jì),可以完成計(jì)算器的鍵盤輸入, 進(jìn)行加、減、乘、除的簡(jiǎn)單四則運(yùn)算,并在 LCD屏幕上相應(yīng)的顯示結(jié)果。選擇內(nèi)部存儲(chǔ)資源豐富的 51 單片機(jī),輸入采用 4×4矩陣鍵盤,顯示采用LCD1602屏幕模塊進(jìn)行顯示。軟件方面從分析計(jì)算器功能、流程圖設(shè)計(jì),再到程序的編寫進(jìn)行系統(tǒng)設(shè)計(jì)。

bit lcden=P2^7;//使能信號(hào)

uchar code table[]= "               ";

long  int data_a,data_b; 	//第一個(gè)數(shù)和第二個(gè)數(shù)
long  int data_c;			//計(jì)算結(jié)果

uchar dispaly[10];         //顯示緩沖

sbit MUSIC_REST =P2^2;//語音芯片復(fù)位腳					
sbit MUSIC_DATA =P2^1;//語音芯片脈沖識(shí)別
sbit bus =P2^0;//語音芯片工作狀態(tài)識(shí)別信號(hào)  
uchar bbh,xm1,xm2,xm0;

void delay_us(unsigned int us)//延時(shí)函數(shù)
{
    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--;
    }
} 
//************************************************************************/
// 描述: 延時(shí)t us函數(shù)
//************************************************************************/
void LCD_Delay_us(unsigned int t)
{
	while(t--);           //t=0,退出
}
//************************************************************************/
// 描述: 延時(shí)t ms函數(shù)
//************************************************************************/
void LCD_Delay_ms(unsigned int t)
{
	unsigned int i,j;
	for(i=0;i<t;i++)       		//執(zhí)行t次循環(huán)
	for(j=0;j<113;j++)     		//執(zhí)行113次循環(huán)
	;
}
//************************************************************************/
// 描述: 1602液晶寫指令
//************************************************************************/
void write_com(uchar com)    	//1602液晶寫指令
{
	rs=0;                       //寫指令
	lcden=0;                    //使能1602 
	P0=com;                     //寫入指令com
	LCD_Delay_ms(1);            //延時(shí)1ms
	lcden=1;                    //使能1602
	LCD_Delay_ms(2);            //延時(shí)2ms  
	lcden=0;	                //使能1602
}
//************************************************************************/
// 描述:1602液晶寫數(shù)據(jù) 
//************************************************************************/
void write_date(uchar date) //1602液晶寫數(shù)據(jù)
{
	rs=1;                        //寫數(shù)據(jù)
	lcden=0;                     //使能1602 
	P0=date;                     //寫入數(shù)據(jù)date
	LCD_Delay_ms(1);             //延時(shí)1ms
	lcden=1;                     //使能1602
	LCD_Delay_ms(2);             //延時(shí)2ms
	lcden=0;	                 //使能1602
}
//************************************************************************/
// 描述:指定x,y寫入字符函數(shù)
//************************************************************************/
 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);                  //寫入數(shù)據(jù)
 }
 //指定x,y寫入字符串函數(shù)
 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++;}      		//寫入數(shù)據(jù)
 }
//************************************************************************/
// 描述:初始化液晶,及畫面初始化 
//************************************************************************/
void init_lcd(void)            //初始化液晶,及畫面初始化
{

  • 有需要資料的可了解一下.docx
    下載

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時(shí)響應(yīng)!