lcd12232課程設計
A. 51單片機串口通信和12232LCD顯示,實現將接收到的數據實時顯示在12232上的功能。
用得定時中斷吧?,是否在進入中斷的時候,你存儲的數區出錯了!
如果沒必要的話,程序就直接收到就顯示,不用再搞定時了!
B. 在protues中LCD12232F可以用哪個替代
這個得看你這LCD的控制器是什麼?找個與之相同控制器的LCD才能替代它!
不幸的是,你這LCD的控制器是ST7920,在PROTEUS中沒有此控制器的LCD,所以你沒辦法在PROTEUS中模擬它了!
C. 單片機控制12232液晶顯示的幾種C語言源程序
試試下面的代碼:
在atmega128中寫通訊協議的頭四位數字時好像不能分開一位一位的送,而是要把它當作一個16進制的整體移位寫入!程序中的comm為寫0表示寫12232c的指令,dat為1表示寫數據。cs,sclk,std分別為片選、時鍾、及數據io口,可用sbit指令定義。
/************lcd初始化程序**************/
voidinit_lcd(void)
{
wr_lcd(comm,0x30);/*30---基本指令集動作,8位控制介面*/
wr_lcd(comm,0x01);/*清屏,地址指針指向00H*/
delay(80);
wr_lcd(comm,0x06);/*游標的移動方向,游標右移*/
wr_lcd(comm,0x0c);/*開顯示,關游標*/
}
/******************LCD顯示任意量程序********************/
voideng_disp(ucharx,uchary,ucharcode*eng)
{
uchari,j;
wr_lcd(comm,0x30);
wr_lcd(comm,0x80);/*第一行的起始地址*/
for(j=0;j<y;j++)
{
for(i=0;i<x;i++)
wr_lcd(dat,eng[j*16+i]);
if((y==2)&&(j==1))
{wr_lcd(comm,0x90);
for(i=0;i<8;i++)
wr_lcd(dat,eng[j*16+i]);
}
}
}
/*********************LCD顯示中文(歡迎界面)程序******************/
voidchn_disp(ucharcode*chn)/*lcd顯示中文*/
{
uchari,j;
wr_lcd(comm,0x30);
wr_lcd(comm,0x80);/*第一行的起始地址*/
j=0;
for(i=0;i<16;i++)
wr_lcd(dat,chn[j*16+i]);
wr_lcd(comm,0x90);//第二行的起始地址
j=1;
for(i=0;i<16;i++)
wr_lcd(dat,chn[j*16+i]);
}
/***************************LCD清內存程序*******************/
voidclrram(void)//lcd清內存
{
wr_lcd(comm,0x30);
wr_lcd(comm,0x01);
delay(120);
}
/*************LCD寫數據或寫命令子程序****************/
voidwr_lcd(uchardat_comm,ucharcontent)/*lcd寫數據*/
{
uchara,i,j;
delay(40);
a=content;//a為指令代碼或者數據
cs=1;//置位cs開始傳輸數據
sclk=0;//拉低sclk准備給上升沿,發送數據
std=1;//置1
for(i=0;i<5;i++)/*先傳輸起始位元組,首先5個1,sclk的上升沿傳輸啟動*/
{
sclk=1;
sclk=0;
}
std=0;//RW=0;
sclk=1;
sclk=0;
if(dat_comm)
std=1;//如果是數據則RS為1
else
std=0;//如果是控制字則RS為0
sclk=1;//給上升沿,啟動傳輸
sclk=0;//拉低sclk
std=0;//第8位為0,起始位元組傳輸完畢
sclk=1;//給上升沿,啟動傳輸
sclk=0;
for(j=0;j<2;j++)//一個位元組分兩次發送,第一次發送高四位,後面補4個0,第二次發送低4位,後面同樣補4個0
{
for(i=0;i<4;i++)//先傳輸高4位
{
a=a<<1;//數據循環左移一位,低位補0
std=CY;//把進位進行傳輸
sclk=1;
sclk=0;
}
std=0;
for(i=0;i<4;i++)//後4位數據為4個0
{
sclk=1;
sclk=0;
}
}
}
/**********************LCD延時程序************************************/
voiddelay(uintus)//lcd延時時間
{
while(us--);
}
voiddelay1(uintms)
{
uinti,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
delay(1);
}
/*********************顯示數據位子程序*******************/
voidmath_disp(uintmath)
{uintk;
uchari;
ucharj;
k=math;
dispbuf[0]=k/10000;//得到萬位數
k=k%10000;
dispbuf[1]=k/1000;//得到千位數
k=k%1000;
dispbuf[2]=k/100;//得到百位數
k=k%100;
dispbuf[3]=k/10;//得到十位數
dispbuf[4]=k%10;//得到個位數
wr_lcd(comm,0x90);//給第二行的起始地址以讓數據在第二行顯示,
for(i=0;i<5;i++)
{
for(j=0;j<2;j++)//連續顯示兩個tab2中的位元組,LCD自動把這兩個位元組聯系起來顯示一個數據
{
wr_lcd(dat,tab2[xs2*dispbuf[i]+j]);//調用顯示子函數
}
}
}
D. 求一個AT89C51和DS18B20+lcd12232液晶顯示的溫度報警器啊,求電路圖或匯編程序。。。單片機課程設計急用
沒有國,哪有家;沒有家,哪有你我。讓我們共同祝願國興家和!
E. lcd12232有什麼作用
是一個顯示器。
F. proteus模擬8255加12232的lcd又該怎麼做呢
加8255模擬和直接連P口有些不同,加8255後其數據匯流排要連接到P0口,而不加的話,可以任意連接到4個P口的任意一個,加了8255就不一樣了,其A、B可以一個設置為輸入、一個設置為輸出,分別接到LCD的數據匯流排上,這樣就可以了。控制匯流排可以一樣。
未加8255時,讀寫都可以直接用一個口實現,所以比較方便,預處理如下
#define LCD12232_FLAG
#define LCD1612232ORT P1
#include<reg52.h>
#include<stddef.h>
#include"dtype.h"
sbit lcd12232_rs=P3^7;
sbit lcd1612232=P3^5;
sbit lcd12232_rw=P3^6;
加了8255後,讀寫口地址不一樣了,要分別寫,稍微麻煩一點。預處理如下
#define LCD12232_FLAG
#define LC12232ead XBYTE[0x8001]
#define LCD12232_Write XBYTE[0x8002]
#define LCD12232_Cmd XBYTE[0x8000]
#include<reg52.h>
#include<stddef.h>
#include"dtype.h"
sbit lcd12232_rs=P3^7;
sbit lcd1612232=P3^5;
sbit lcd12232_rw=P3^6;
G. 液晶12232有多少個引腳
共18個
引腳 引腳定義 引腳說明
1 VDD 邏輯電源正
2 VSS 邏輯電源地
3 Vo LCD驅動電源
4 /RST 復位端
5 E1 讀寫使能
6 E2 讀寫使能
7 R/W 讀寫選擇
8 Ao 數據/指令選擇
9 D0 數據輸入輸出引腳
10 D1 數據輸入輸出引腳
11 D2 數據輸入輸出引腳
12 D3 數據輸入輸出引腳
13 D4 數據輸入輸出引腳
14 D5 數據輸入輸出引腳
15 D6 數據輸入輸出引腳
16 D7 數據輸入輸出引腳
17 LED+ 背光電源正(DC +5V)
18 LED- 背光電源負(0V)
H. proteus中的LCD12232為什麼有兩個使能端,寫程序時這兩個使能端怎麼用
這個屏是用兩個IC驅動的,所以有兩個E端。你要兩個都控制的不然只有屏的1/4 正常顯示。E是沿觸發的。你可以下DATASHEET看下。
I. LCD12232顯示自定義圖像字元需要怎麼操作
屬於字元型LCD 每個廠商對型號的定義大都不同,不過裡面的確有一定含義,比如你的顯示器,24064,很有可能是你的顯示器為24寸,其他字元就難說了. 哦 是
J. LCD 12232使用問題,右半屏清屏不幹凈
因為它本來就是這樣的