小規模プロジェクト:51 SCMドライブLCD1602 LCDディスプレイシステムPROTEUSシミュレーションおよびソースコードLCD命令の説明

51個のシングルチップマイクロコンピューターがLCD1602液晶ディスプレイシステムPROTEUSシミュレーションとソースコード設計を駆動

さらに
面倒なことなく、物理マップLCD1602 + 51シングルチップマイクロコンピューターの最小システムアプリケーションのシミュレーションと製造
ここに画像の説明を挿入
ここに画像の説明を挿入
に進み、正式に製造リンクに進みます。

ステップ1:シミュレーション

良い回路図を描くシミュレーションでは、シングルチップマイクロコンピューターの最小システムはシングルチップマイクロコンピューターを1つ置くだけで十分ですが、実際の回路には電源モジュールとリセットモジュールを追加する必要があります。以下に示すよう
ここに画像の説明を挿入
に、添付ファイルで回路図ファイルを見つけてください。

回路図が描かれた後、コードを記述し、hexファイルを生成します。参照コードは次のとおりです。

/ * 機能 /
/ 外部割り込みINTOを使用してLEDステータスを変更し、そのステータスを1602で表示します /
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
ucharコードテーブル[] = "HELLO 1602";
uchar code table0 [] = "1602 TEST";
uchar code table1 [] = "RESULT:"; //スペースはLCDに書き込まれます。つまり、スペースはコンテンツ
uchar code table2 でもあります[] =“ OK! ”;
Uchar code table3 [] =“ liang”;
uchar code table4 [] =“ mie”;
uchar num;
sbit led = P1 ^ 7;
sbit lcden = P2 ^ 0; // LCDイネーブル端子
sbit lcdrs = P2 ^ 2; // LCDデータコマンド選択端子は、データの書き込みまたはコマンドの書き込みを選択し
ますvoid delay(uint z)//遅延関数
{
uint i、j;
for(i = z; i> 0; i--)
for(j = 110 ; j> 0; j–);
}
void write_com(uchar com)// Write
{
lcdrs = 0; // LCD select input command
P0 = com; // Enter command to P0 port 39-32 port
delay(5); // Delay
lcden = 1; / / LCDをオンにして
遅延を有効にする(5); //高パルス
lcden = 0; // LCDをオフにして有効にする
}
void write_data(uchar date)
{
lcdrs = 1; //入力データに設定
P0 = date; //意志データはP0ポート
遅延に割り当てられます(5); //遅延
lcden = 1; //高
遅延を設定(5); //高パルス
lcden = 0; //高パルスを完了するために低に設定
}
void init()// LED Initialize
{
lcden = 0;
write_com(0x38); // 16x2を設定して5x7ドットマトリックスを表示、8ビットデータインターフェース
write_com(0x0c); //カーソルなしで表示を開始するように設定(コマンド4)
write_com(0x06); //書き込み文字の後のアドレスポインターに1を追加します(命令3)
write_com(0x01); //ゼロへのクリアデータポインターを表示します(命令1)
}

void display(unsigned char * p)//ポインターアドレスでデータを書き込む
{
while(* p!= '\ 0')
{
write_data(* p); //データを書き込む
p ++;
delay(1);
}
}

void main()
{
TCON = 0x01; // INTOに割り込みを設定します
IE = 0x81;
led = 0;
init();
write_com(0x80); //データポインタの最初の行の最初のワードを設定し、
表示します(テーブル) ; //関数の
遅延を呼び出してデータを書き込む(800);
write_com(0x80); //データポインターの最初の行の最初のワードを書き込む
display(table0); //関数の書き込みを呼び出してデータを書き込む
write_com( 0x80 + 0x40); //ポインターの位置を定義し、データポインターの2行目の最初のワード
を(num = 0; num <7; num ++)
{
write_data(table1 [num]);
delay(5);
}
write_com( 0x80 + 0x4c); // 1602のアドレスに応じた単一の書き込みデータ
write_data(table2 [0]);
write_com(0x80 + 0x4d); // 1602のアドレスに応じた単一の書き込みデータ
write_data(table2 [1]);
write_com( 0x80 + 0x4e); // 1602のアドレスに従って個別にデータを書き込む
write_data(table2 [2]);
while(1);
}
void key_can()interrupt 0
{
delay(20); //
(P3 ^ 3の場合キージッタを除去する0)
{
if(P3 ^ 3
0)
{
ice =!Ice;

}
if(led1)
{
write_com(0x80 + 0x4b);
display(table3);
}
else if(led
0)
{
write_com(0x80 + 0x4b); // 1602
ディスプレイのアドレスに従って単一の書き込みデータ(table4);
write_com(0x80 + 0x4f);
write_data(table1 [8]); // 1602のアドレスに従って単一の書き込みデータ
write_com(0x80 + 0x4e);
write_data(table1 [8]);
}
}
}

回路図とコードが利用可能になり、シミュレーションの準備が完了し、正式にシミュレーションが開始されます。

コードをマイクロコントローラーにロードすると、シミュレーション結果は次のようになります。

ここに画像の説明を挿入
ここに画像の説明を挿入
コンポーネントリスト

ここに画像の説明を挿入

元のレイアウトと効果図は次のとおりです。
ここに画像の説明を挿入
最後に、すべてが要件に従って溶接され、電気燃焼プログラムをテストできます。

十分に詳細に記述してください。理解できないことがある場合、またはドキュメントを設計する必要がある場合は、メッセージまたは私宛の手紙を残してください!

97件の元の記事を公開 200件の賞賛 80,000回以上の閲覧

おすすめ

転載: blog.csdn.net/weixin_44212493/article/details/104812234