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