|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
屏幕截圖 2021-04-23 210220.jpg (93.62 KB, 下載次數(shù): 56)
下載附件
2021-4-23 21:03 上傳
單片機帶注釋的源程序如下:
//功能:晶振11.0592M,實現(xiàn)1602液晶顯示“88888888”//作者: 康曉龍
//單位:四川機電技術(shù)學(xué)院
//版本號:1.0
#include<reg51.h>
#include<intrins.h> //包含_npp_函數(shù)定義頭文件
#define uchar unsigned char
#define uint unsigned int
uchar table[]="0123456789.";
sbit rs=P0^4; //定義 命令/數(shù)據(jù)輸入腳
sbit rw=P0^5; //定義 讀/寫腳
sbit e=P0^6; //定義使能腳
sbit bf=P1^7;
uchar ge,shi,bai;
uint i;
void delayms(uint xms) // 延時子程序
{
uint i;uchar j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/**************************************
函數(shù)功能:判斷忙碌狀態(tài)
返回值: result. result=0 忙,result=1 不忙。
***************************************/
uchar panduanmanglu(void)
{
bit result;
rs=0;
rw=1;
e=1;
_nop_();
result=bf;
e=0;
return result;
}
/************************************
函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊
參數(shù):canshu
*************************************/
void xiezhiling(uchar canshu)
{
while( panduanmanglu()==1);
rs=0;
rw=0;
e=0;
_nop_();
_nop_();
P1=canshu;
_nop_();
_nop_();
e=1;
_nop_();
_nop_();
e=0;
}
/************************************
函數(shù)功能:指定字符顯示的實際地址
參數(shù):x
*************************************/
void xiedizhi(uchar x)
{
xiezhiling(x+0x80);
}
/************************************
函數(shù)功能:將數(shù)據(jù)寫入液晶模塊
參數(shù):y
*************************************/
void xieshujv(uchar y)
{
while( panduanmanglu()==1);
rs=1;
rw=0;
e=0;
P1=y;
_nop_();
_nop_();
e=1;
_nop_();
_nop_();
e=0;
}
/************************************
函數(shù)功能:對LCD的顯示進(jìn)行初始化設(shè)置
*************************************/
void chushihua()
{
delayms(15);
xiezhiling(0x38); //0011 1000
delayms(5);
xiezhiling(0x0c); //0000 1DCB ,D=1開顯示,C=1顯示光標(biāo),B=1光標(biāo)閃爍
delayms(5);
xiezhiling(0x04);//0000 01NS ,N=1指針加1,光標(biāo)加1;N=0指針減1,光標(biāo)減1;
//S=1當(dāng)寫一個字符時,整屏顯示左移(N=1)或右移(N=0),
//以得到光標(biāo)不移動而屏幕移動的效果;S=0整屏顯示不移動
delayms(5);
}
/************************************
函數(shù)功能:處理 i的數(shù)據(jù)
*************************************/
void xainshi(uint i)
{
ge=i%10; //求數(shù)碼管的個位
shi=i/10%10; //求數(shù)碼管的十位
bai=i/100%10; //求數(shù)碼管的百位
}
void main()
{
chushihua();
while(1)
{ i=124;
xainshi(i);
xiedizhi(0x05);//顯示的地址在第一行的第6個顯示
xieshujv(table[ge]);
xiedizhi(0x06);//顯示的地址在第一行的第7個顯示
xieshujv(table[10]);
xiedizhi(0x07);//顯示的地址在第一行的第8個顯示
xieshujv(table[shi]);
xiedizhi(0x08);//顯示的地址在第一行的第9個顯示
xieshujv(table[bai]);
}
}
全部資料51hei下載地址:
2.0.zip
(268.01 KB, 下載次數(shù): 39)
2021-4-23 21:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|