91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 23KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-26
  • 語言: 其他
  • 標簽: LCD1602??89C52??

資源簡介

89C52單片機通過LCD1602顯示任意長度字符串,如果需要顯示的字符串長度超過16個字符,則字符串會從LCD右邊往左邊移動,直到顯示完全。

資源截圖

代碼片段和文件信息

/*-----------------------------------------------
??名稱:LCD1602
??內容:通過標準程序移屏滾動顯示字符
??引腳定義如下:
1-VSS?2-VDD
3-V0
4-RS
5-R/W
6-E
7-14
DB0-DB7
15-BLA
16-BLK
------------------------------------------------*/
#include?//包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#include
#include

sbit?rs?=?P2?^?0;
sbit?rw?=?P2?^?1;
sbit?en?=?P2?^?2;
#define?LCD_DAT?P1????/*?數據口?*/
#define?LINE_MAX_NUM?16?/*?每行最多顯示16字符?*/

#define?uchar?unsigned?char
//uchar?code?table[]={}

void?delus(uchar?t)
{
while(--t);
}
void?delms(uchar?t)
{
while(t--)
{
delus(245);
delus(245);
}
}
void?lcd_write_com(uchar?com)
{
delms(5);
rs?=?0;
rw?=?0;
en?=?1;
LCD_DAT?=?com;
_nop_();
en?=?0;
}
void?lcd_write_dat(uchar?dat)
{
delms(5);
rs?=?1;
rw?=?0;
en?=?1;
LCD_DAT?=?dat;
_nop_();
en?=?0;
}
void?lcd_clear()
{
lcd_write_com(0x01);
delms(5);
}
void?lcd_write_char(uchar?x?uchar?y?uchar?dat)
{
if(y?==?0)
lcd_write_com(0x80?+?x);
else
lcd_write_com(0xc0?+?x);
lcd_write_dat(dat);
}

void?lcd_write_string(uchar?x?uchar?y?uchar?*s)
{
int?pos?=?0/*?當前讀取的字符在字符串中的位置?*/?start?=?x/*?字符串在液晶屏中開始顯示的位置?*/?back?=?0/*?字符串移出屏幕的長度?*/?len?=?0/*?字符串長度?*/?i?=?0;

uchar?*tmps?=?s?*tmpchar?=?s;
len?=?strlen(s);
if(y?==?0)
lcd_write_com(0x80?+?x);
else
lcd_write_com(0xc0?+?x);

while(pos? {
if(pos? {

lcd_write_dat(*s);
s++;

}//超出可顯示的范圍之后,整個字符串向右移動,則第一個字符從從邊移出屏幕
else
{

if(start?>?0)//如果字符串顯示的初始位置不是液晶屏的第一個字符的位置,這種情況下第一個字符就不需要移出屏幕,而是向左移動一位
{
start--;//液晶屏起始位置左移一位

//設置起始位置
if(y?==?0)
{
lcd_write_com(0x80?+?start);
}
else
{
lcd_write_com(0xc0?+?start);
}
//直接寫進去
s?=?tmps;
i?=?0;//決定顯示多少個字符,太多了造成液晶屏溢出,顯示有問題一般往顯示屏寫入16+10個字符的話會有問題。
while(i? {
lcd_write_dat(*s);
s++;//字符串指針移到下一位
i++;
}

}
else
{
back++;//大循環每循環一次就加1字符串位置右移一位
if(y?==?0)
{
lcd_write_com(0x80);
}
else
{
lcd_write_com(0xc0);
}
s?=?tmps;
s?=?s?+?back;//決定字符串從哪開始顯示
i?=?0;
while(i? {
lcd_write_dat(*s);
i++;
s++;//字符串指針移到下一位
}
}
delms(500);

}
pos++;

}



}
void?lcd_init()
{
lcd_write_com(0x38);
delms(5);
lcd_write_com(0x38);
delms(5);
lcd_write_com(0x08);
lcd_write_com(0x01);
lcd_write_com(0x06);


delms(5);
lcd_write_com(0x0c);
}
void?main()
{

uchar?i;
P0?=?0;
P1?=?0;
lcd_init();
lcd_clear();

while(1)
{
lcd_clear();
lcd_write_string(6?0?“123456789abcdefghijklmnopq9s123456789“);
// lcd_write_string(0?0?“123456789abcdefghi“);
//lcd_write_string(6?0?“12345“);

for(i?=?9;?i?>?0;?i--)
{
lcd_write_string(i?15?“123456?“);
delms(500);
}
//lcd_

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-03-17?11:32??LCD1602\
?????文件???????71165??2018-03-16?22:23??LCD1602\lcd1602.uvgui.Administrator
?????文件????????5541??2018-03-13?23:09??LCD1602\lcd1602.uvopt
?????文件???????14141??2018-03-13?23:09??LCD1602\lcd1602.uvproj
?????目錄???????????0??2018-03-17?11:32??LCD1602\Listings\
?????文件???????13154??2018-03-17?11:32??LCD1602\Listings\lcd1602.m51
?????文件????????8025??2018-03-17?11:32??LCD1602\Listings\main.lst
?????文件???????14164??2018-03-17?11:32??LCD1602\Listings\STARTUP.lst
?????文件????????3741??2018-03-17?11:32??LCD1602\main.c
?????目錄???????????0??2018-03-17?11:32??LCD1602\objects\
?????文件????????2012??2018-03-17?11:32??LCD1602\objects\lcd1602.hex
?????文件????????6376??2009-05-07?14:37??LCD1602\STARTUP.A51

評論

共有 條評論