欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
AMPIRE12864液晶在任意位置顯示任意字符或漢字的單片機源碼與仿真
[打印本頁]
作者:
dingmingzhou
時間:
2015-3-11 21:36
標題:
AMPIRE12864液晶在任意位置顯示任意字符或漢字的單片機源碼與仿真
最近配合proteus仿真,搞了一個小試驗程序,功能是,通過 改變主程序里的d,x,y三個變量組合可以在ampire12864液晶上的任意可顯示的地方顯示任意字符或漢字。通過這個小東西可以很好的理解這類液晶的顯示原理,可以很直觀的操作其行和列,頁和列 左右屏控制。感覺挺好玩,貢上來。請大神斧正。程序使用的是字符庫,如要顯示漢字,請自行修改參數。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(14.01 KB, 下載次數: 41)
下載附件
2018-5-29 04:43 上傳
0.png
(45.07 KB, 下載次數: 47)
下載附件
2018-5-29 04:44 上傳
單片機源程序如下:
/***********************************lcd.c****************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define DB P2
uchar d,x,y;
sbit Reset = P0^0; //復位
sbit RS = P0^3; //指令數據選擇
sbit E = P0^1; //指令數據控制
sbit CS1 = P0^5; //左屏幕選擇,低電平有效
sbit CS2 = P0^4; //右屏幕選擇
sbit RW = P0^2; //讀寫控制
uchar *ZF; //數據指針,ZF為首地址
const uchar code ZF_tab[] =
{
0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00, // -0-
0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00,
0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00, // -1-
0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00,
…………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
0x00,0x04,0x04,0xBC,0xF8,0x40,0x40,0x00, // -}-
0x00,0x08,0x08,0x0F,0x07,0x00,0x00,0x00,
};
void delay(uint time) //延時
{
while(time --);
}
void writedata(uchar dat) //寫數據
{
delay(5);
E = 1; RS = 1; RW = 0;
P2 = dat;
E = 0;
}
void writecmd(uchar cmd) //寫地址/命令
{
delay(5);
E = 1; RW = 0; RS = 0;
P2 = cmd;
E = 0;
}
void SetOnOff(uchar onoff) //1-開顯示 0-關
{
if(onoff == 1) writecmd(0x3f);
if(onoff == 0) writecmd(0x3e);
}
void setPM(uchar PM) //選擇屏幕( 0-左屏,1-右屏,2-全屏 )
{
switch(PM)
{
case 0 : CS1 = 0; CS2 = 1; break;
case 1 : CS1 = 1; CS2 = 0; break;
default : CS1 = 0; CS2 = 0;
}
}
void set_x( x) //x -> 0 : 7 頁
{
x = x&0x07|0xb8;
writecmd(x);
}
void set_y( y) //y -> 0 :63 列
{
y = y & 0x3f|0x40;
writecmd(y);
}
void chearPM(uchar PM) //清屏(0-清左屏,1-清右屏,2-清全屏 )
{
uchar i,j;
setPM(PM);
for(i = 0;i < 8;i++)
{
set_x(i); //從第0到第7頁
set_y(0); //從第0列開始
for(j = 0;j < 64; j++) //在PM=2的情況下左右半屏同時全寫0.
writedata(0x00);
}
}
void InitLcd() //LCD初始化
{
Reset = 0; delay(2);Reset = 1; delay(2);//軟件復位
//SetOnOff(0); //關屏幕
chearPM(2); //清屏
}
void showZF( x, y, uchar *ZF) //顯示一個字符
{
uchar i;
set_x(x); set_y(y); //設置頁地址,設置咧地址
for(i = 0;i < 8;i ++) writedata(*(ZF++)); // 寫字符的上半部分
set_x(x + 1);set_y(y);
for(i = 0;i < 8;i ++) writedata(*(ZF++)); // 寫字符的下半部分
}
/*******************************************************************************/
/********************************main.c***********************************************/
void effect (d, x, y)
{
uchar i,h,s;
if(y<57 )
{
setPM(0); //開左屏
s=(64-y)/8; //計算可以完整顯示幾個字符,
ZF =(ZF_tab+(d-1)*16); //計算從第幾個字符開始。
for(i =0;i <s; i++) //循環取字符。
{
showZF(x,y ,ZF);
y += 8; //y加8跳過一個字符的寬度,
ZF +=16; // ZF加16跳過一個字符的高度
}
}
if(y>63 )
{
setPM(1); //開右屏
h=y-64; //計算離開右屏第1列的列值h,h范圍0-63
s=(128-y)/8; // 計算右屏可以完整顯示幾個字符,
ZF =( ZF_tab+(d-1)*16);
for(i =0;i <s; i++)
{
showZF(x,h ,ZF); h += 8;ZF +=16;
}
}
}
void main()
{
InitLcd();
while(1)
{ uchar i;
d=28; // d:從字庫中第幾個字開始顯示 正常再字庫的字節數內取值1到若干個,1是第一個,2是第2個
x=6; //x;在第幾行顯示,由于屏幕分8頁,字符高度占兩頁。正常取0-6.x=6就已經是第7頁了,
//余下第8頁是為了第6、7頁能顯示完整字符。
y=32; // y:從哪一列開始顯示 正常取0-120.余下的8列,是為了顯示完整字符。大于120終止取字循環。
effect(d,x,y);
setPM(2);
for(i=0;i<3;i++) //閃爍幾下 也可不用該程序段
{
SetOnOff(1); delay(30000) ;
SetOnOff(0); delay(30000);
SetOnOff(1);
}
//while(1) ;
}
}
復制代碼
所有資料51hei提供下載:
在ampire12864液晶的任意可顯示的地方顯示任意字符或漢字C程序 proteus仿真.rar
(78.07 KB, 下載次數: 287)
2015-3-11 21:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2015-3-11 22:31
好資料,謝謝分享,等上班后把分給您加上
作者:
dingmingzhou
時間:
2015-3-14 12:09
本帖最后由 dingmingzhou 于 2015-7-15 06:02 編輯
哥稱之為愛情
作者:
釣魚臺
時間:
2015-3-15 21:54
燃眉之急好資料,謝謝分享
作者:
hlywhp
時間:
2015-5-7 20:38
我看看,正在學習中
作者:
蝴蝶花
時間:
2015-5-7 22:33
學習學習,謝謝分享!
作者:
kuangyin2006
時間:
2015-9-10 14:02
好資料,正在研究
作者:
as1390
時間:
2016-1-6 21:56
看看,正好手頭上有類似項目
作者:
xyh828
時間:
2016-1-11 18:51
很好的資料,謝謝分享!
作者:
Jumpit
時間:
2016-5-20 14:29
很好的資料,謝謝分享!
作者:
TONY0727
時間:
2016-5-27 13:27
多謝分享,參考一下
作者:
zhui
時間:
2017-4-15 23:14
正在找這個資料。。。。
作者:
黑黑—坤
時間:
2017-4-17 00:00
真是雪中送炭啊,找了很久的資料啊!謝謝分享
作者:
mingletian
時間:
2018-3-19 11:10
學習學習!
作者:
B3625456
時間:
2018-5-27 23:07
很給力
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1