導航:首頁 > 操作系統 > 12864單片機課程設計

12864單片機課程設計

發布時間:2023-01-12 21:17:40

㈠ 128*64LCD液晶顯示(課程設計)

我博客上有液晶的程序,你可以去參考一下,估計對你有幫助。

對不起,通常都沒有完整的,完整的通常不能放,

http://hi..com/xxjmcu/

㈡ 各位好!本人用AT89S52單片機控制12864顯示幾個漢字,但是只有背景亮,不顯示字!現求助於大夥!謝謝!

編程沒問題的話就是你硬體的問題了 如果你是自己買的12864裝的話 可能把12864的一個對比度的引腳電壓給搞錯了 叫vout的腳 不是0v就是5v 你試試看

㈢ 求51單片機12864和ds1307時鍾程序

#include<reg51.h>
#include<string.h>
#include"ds1302.h"
#include"menu.h"
#include"lcd12864.h"
#defineucharunsignedchar
#defineuintunsignedint

sbitled=P3^7;
uchartemp,keyval;
ucharusern=0; //用戶序號
//structmlist*nuser;
uchardisdat[16];
voiddisplaykey()
{
keyval=0xff;
P1=0xfe;
temp=P1;
temp&=0xf0;
if(temp!=0xf0)//判斷是否有鍵盤按下,真為有
{
delay(50);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)//判斷是否有鍵盤按下,真為有
{
temp=P1;
switch(temp)
{
case0xee:keyval='0';break;
case0xde:keyval='1';break;
case0xbe:keyval='2';break;
case0x7e:keyval='3';break;
default:break;
}
}
}
while((P1&0xf0)!=0xf0);
//判斷第二行鍵盤
P1=0xfd;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(50);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)//判斷是否有鍵盤按下,真為有
{
temp=P1;
switch(temp)
{
case0xed:keyval='4';break;
case0xdd:keyval='5';break;
case0xbd:keyval='6';break;
case0x7d:keyval='7';break;
default:break;
}
}
}
while((P1&0xf0)!=0xf0);
//判斷第三行鍵盤
P1=0xfb;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(50);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)//判斷是否有鍵盤按下,真為有
{
temp=P1;
switch(temp)
{
case0xeb:keyval='8';break;
case0xdb:keyval='9';break;
case0xbb:keyval='a';break;
case0x7b:keyval='b';break;
default:break;
}
}
}
while((P1&0xf0)!=0xf0);
//判斷第四行鍵盤
P1=0xf7;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(50);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)//判斷是否有鍵盤按下,真為有
{
temp=P1;
switch(temp)
{
case0xe7:keyval='c';break;
case0xd7:keyval='d';break;
case0xb7:keyval='e';break;
case0x77:keyval='f';break;
default:break;
}
}
}
while((P1&0xf0)!=0xf0);
}
voiddistime(void)
{
uchar*cal="年月日";
disdat[0]='2';
disdat[1]='0';
disdat[2]='0'+TIME[6]/16;//年
disdat[3]='0'+(TIME[6]&0x0f);
disdat[4]=cal[0];
disdat[5]=cal[1];
disdat[6]='0'+TIME[4]/16;//月
disdat[7]='0'+(TIME[4]&0x0f);
disdat[8]=cal[2];
disdat[9]=cal[3];
disdat[10]='0'+TIME[3]/16;//日
disdat[11]='0'+(TIME[3]&0x0f);
disdat[12]=cal[4];
disdat[13]=cal[5];
disdat[14]=0;
displaystr(1,2,disdat);

disdat[0]='0'+TIME[2]/16;//時
disdat[1]='0'+(TIME[2]&0x0f);
disdat[2]=':';
disdat[3]='0'+TIME[1]/16;//分
disdat[4]='0'+(TIME[1]&0x0f);
disdat[5]=':';
disdat[6]='0'+TIME[0]/16;//秒
disdat[7]='0'+(TIME[0]&0x0f);
disdat[8]=0;
displaystr(4,4,disdat);
}
voidinit_timer(void)
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x40;
}

main()
{
ucharnum;
InitLCD();//初始LCD
Ds1302Init();
init_timer();
ClearScreen(0);
delay(200);
num=0;
while(1)
{
Ds1302ReadTime();
distime();
displaykey();
delay(200);
}
}

㈣ 誰能幫我利用單片機設計一個可以繪制規則圖形的系統,圖形及參數用12864液晶顯示。參數由按鈕開關輸入。急

路過~~~~~~

㈤ 51單片機12864並行程序

檢查液晶屏控制器的時序.操作命令碼.初始化過程,還有硬體,上下拉電阻,既然決定用並口,那麼PSB就直接VDD,這樣還能省一個IO口. 注意下面的程序中RS=0,RW=0,能同時為低嗎? void write_command(uchar cmd)
{
check_busy();
rs=0;
rw=0;
en=0;
P2=cmd;
delay_4us();
en=1;
delay_4us();
en=0;
}

㈥ 單片機課程設計!不要復制百度!高分懸賞!!

1.單片機控制的60s倒計時
這個太簡單了,不用什麼提示吧?硬體上只要單片機最小系統加上數碼管兩個,程序上只要設置好定時器就行.
2.
基於單片機的電子鍾設計
這個要復雜一點.大概要單片機+數碼管+實時時鍾晶元如DS系列(ds1302加要電池)+存儲晶元如24C02,當然驅動數碼管的如解碼器或鎖存器也要有.
實在說你第一個設計網上能找到現成的,第二個設計網上也能找到現成的,不過要你自己使用keil、proteus軟體綜合調試模擬,這兩個內容都有,自己動手網路一下吧,不要太依賴別人.畢竟這樣才能提高一下你自己.

㈦ 關於51單片機12864程序的問題

用這個吧。我以前用的
#include <reg52.h>
#include<intrins.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
//8bit數據接入IO口
#define Part P0 //P0接8位數據線
//控制數據端
sbit LCD_RS=P3^2; //定義12864液晶RS端,寄存器選擇信號 H:數據寄存器 L:指令寄存器
sbit LCD_RW=P1^1; //定義12864液晶RW端,讀/寫信號 H:讀 L:寫
sbit LCD_EN=P1^2; //定義12864液晶LCDEN端, 片選信號 下降沿觸發,鎖存數據
//sbit LCD_PSB=P3^2; //定義12864液晶PSB端, H:並行 L:串列
sbit LCD_RST=P3^6; //定義12864液晶RST端, H:不復位 L:復位
sbit AD_ST=P1^6;//定義AD
sbit AD_OE=P3^7;
sbit AD_A=P1^3;
sbit AD_B=P1^4;
sbit AD_C=P1^5;
sbit AD_EOC=P1^7;
sfr T2MOD=0XC9;
uchar code dis1[]={"轉速"};
uchar code dis2[]={"加速度x方向"};
uchar code dis3[]={"加速度y方向"};
uchar code dis4[]={"加速度z方向"};
uchar code Text[]={"歡迎大家觀看"};
uint i;
uchar code dat[];
int jishu;
int su1;
int su2;
int maichong1;
int maichong2;

//毫秒延時函數
void delayms(uint x) //nms的延時
{
uint i;
while(x--)
{
for(i=0;i<125;i++)
{;}
}
}
void delay(uint xms)
{
uint i,j;
for(j=0;i<xms;j++)
for(i=0;i<110;i++);
}

//LCD忙檢測函數
bit lcd_busy()
{
bit result;
LCD_RS=0;
LCD_RW=1;
LCD_EN= 1;
result=(bit)(Part & 0x80);
LCD_EN=0;
return result;
}

//液晶寫命令函數
void lcd_write_cmd(uchar com)
{
while(lcd_busy());
LCD_RS=0; //選擇指令寄存器
LCD_RW=0; //寫
LCD_EN=0;
Part=com; //指令值賦給P0口
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}

//液晶寫一個字元數據函數
void lcd_write_dat(uchar date)
{
while(lcd_busy());
LCD_RS=1; //選擇數據寄存器
LCD_RW=0; //寫
LCD_EN=0;
P0=date; //數據值賦給P0口
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}

//液晶寫一個字元串函數
void lcd_write_string(uchar *str)
{
while(*str!='\0') //未結束
{
lcd_write_dat(*str++);
delay(5);
}
}

//液晶顯示位置函數
void lcd_pos(uchar x,uchar y) //從第X行的第Y位置開始顯示
{
uchar pos;
if(x==1) //第一行
{x=0x80;}
else if(x==2) //第二行
{x=0x90;}
else if(x==3) //第三行
{x=0x88;}
else if(x==4) //第四行
{x=0x98;}
pos=x+y-1; //首地址為0X80
lcd_write_cmd(pos);
}

//液晶初始化函數
void lcd_init()
{
// LCD_PSB=1; //並行方式
LCD_RST=1; //不復位
lcd_write_cmd(0x30);
delay(5);
lcd_write_cmd(0x0c); //開顯示,不顯示游標
delay(5);
lcd_write_cmd(0x06); //寫一個字元後地址指針自動加1
delay(5);
lcd_write_cmd(0x01); //清屏
delay(5);
}

㈧ 求由液晶顯示模塊:QC12864B、單片機:AT89C52、時鍾晶元:DS1302、溫度感測器:DS18B20 組成的萬年歷設計

我倒是做過這個題目 不過在學校的電腦里 我那個是用12864顯示的 現在估計不能幫你發來 學校里電腦沒網 我現在在網吧

㈨ 51單片機編寫12864

你自己寫錯了函數名 前後不一致 是display不是dispaly。。。最後的main裡面

㈩ 模擬52單片機基於12864實現數字頻率計,大神求教

實時顯示波形?

閱讀全文

與12864單片機課程設計相關的資料

熱點內容
加密晶元的計算方法 瀏覽:187
手機存儲為什麼找不到微信文件夾 瀏覽:695
msf埠遷移命令 瀏覽:880
工商app積分怎麼查詢 瀏覽:143
鐵路app怎麼買火車票 瀏覽:309
移魅族除的app怎麼添加 瀏覽:240
兔籠子大號加密 瀏覽:171
單片機程序燒錄操作成功 瀏覽:878
指標高拋低吸點位源碼 瀏覽:205
25匹壓縮機銅管 瀏覽:570
單片機單燈左移05 瀏覽:150
買伺服器練手什麼配置 瀏覽:783
伺服器被毀該怎麼辦 瀏覽:939
python私有庫 瀏覽:514
Python有中文嗎 瀏覽:736
麥塊的伺服器為什麼都進不去 瀏覽:474
新買的伺服器如何打開 瀏覽:35
安卓軟體游戲怎麼開發 瀏覽:319
用撲克擺愛心解壓神器怎麼擺 瀏覽:70
松下製冷壓縮機 瀏覽:275