加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于51單片機的簡易計算器設(shè)計(Proteus仿真)

11/08 08:37
1950
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

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

bit lcden=P2^7;//使能信號

uchar code table[]= "               ";

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

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

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

void delay_us(unsigned int us)//延時函數(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--;
    }
} 
//************************************************************************/
// 描述: 延時t us函數(shù)
//************************************************************************/
void LCD_Delay_us(unsigned int t)
{
	while(t--);           //t=0,退出
}
//************************************************************************/
// 描述: 延時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);            //延時1ms
	lcden=1;                    //使能1602
	LCD_Delay_ms(2);            //延時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);             //延時1ms
	lcden=1;                     //使能1602
	LCD_Delay_ms(2);             //延時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)推薦

電子產(chǎn)業(yè)圖譜