|
顯示在LCD12864思路。把ADC采集到的值傳遞給LCD12864顯示那部分程序,如果你直接把ADC采集到的值直接傳遞給LCD12864顯示那塊,會(huì)出現(xiàn)亂碼,所以需要你把ADC采集的三位數(shù),分別把這三位數(shù)的每一位數(shù)取出來(lái)在加上ASCLL中的0(48),傳遞給LCD12864顯示那塊,而且你要顯示在哪一行那個(gè)位置,還有我用的STC15F2K60S2每次的端口初始化,才可以 還請(qǐng)大神多多指教。謝謝
12864簡(jiǎn)單顯示+ADC采集單片機(jī)源程序如下:
- #include <aj.h>
- #include "ad.h"
- //unsigned char code dis1[]={"0x31,0x32,0x33,0x34,0x35"}; //顯示四行
- unsigned char code dis2[]={"哈哈一熱"}; //每一行只能倆中,這倆種用中文空格隔開(kāi)
- unsigned char code dis3[]={"我我的偉大的"};
- unsigned char code dis4[]={"1231315"};
- void xianshi(int j);
- sbit lcd_rs=P2^0;
- sbit lcd_rw=P2^1;
- sbit lcd_en=P2^2;
- sbit lcd_psb=P2^3;
- void port_mode() // 端口模式
- {
- P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00;P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;
- P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0x00;P6M1=0x00; P6M0=0x00;P7M1=0x00; P7M0=0x00;
- }
- void delayxms(unsigned int x)
- {
- unsigned int i,j;
- for(i=0;i<x;i++)
- for(j=0;j<120;j++);
- }
- bit lcd_busy() //LCD判斷忙
- {
- bit result;
- lcd_rs=0;
- lcd_rw=1;
- lcd_en=1;
- _nop_();//4us
- _nop_();
- _nop_();
- result=(bit)(P0&0x80);
- lcd_en=0;
- return(result);
- }
- void lcd_wcmd(unsigned char cmd) //LCD讀狀態(tài)
- {
- while(lcd_busy()); //忙狀態(tài)檢測(cè)
- lcd_rs=0;
- lcd_rw=0;
- lcd_en=0;
- _nop_(); //1us
- _nop_();
- P0=cmd;
- _nop_();//4us
- _nop_();
- _nop_();
- lcd_en=1;
- _nop_();//4us
- _nop_();
- _nop_();
- lcd_en=0;
- }
- void lcd_wdat(unsigned char dat) //LCD寫(xiě)數(shù)據(jù)
- {
- while(lcd_busy());
- lcd_rs=1;
- lcd_rw=0;
- lcd_en=0;
- P0=dat;
- _nop_();//4us
- _nop_();
- _nop_();
- lcd_en=1;
- _nop_();//4us
- _nop_();
- _nop_();
- lcd_en=0;
- }
- void lcd_init() //LCD初始化
- {
- lcd_psb=1; //并行
- lcd_wcmd(0x34);
- delay(5);
- lcd_wcmd(0x30);
- delay(5);
- lcd_wcmd(0x0c);
- delay(5);
- lcd_wcmd(0x01);
- delay(5);
- }
- void lcd_pos(unsigned char x,unsigned char y) //確定LCD顯示位置
- {
- unsigned char pos;
- if(x==0) {x=0x80;}
- if(x==1) {x=0x90;}
- if(x==2) {x=0x88;}
- if(x==3) {x=0x98;}
- pos=x+y;
- lcd_wcmd(pos);
- }
- void xianshi()
- {
- unsigned char i,w1,w2,w3,j;
- j=GetADCResult(0); //采集到ADC賦值給變量
- delay(10);
- i=0;
- w1=j/100+48; //三位數(shù)取余 取第一位數(shù)
- w2=j%100/10+48; //取第二位數(shù)
- w3=j%100%10+48; //取第三位數(shù)
- lcd_pos(0,0); //表示第一行,第零位
- lcd_wdat(w1); //把ADC采集到值取出第一位,傳遞給12864顯示
- delayxms(1);
- lcd_pos(0,1); //表示第一行,第一零位
- lcd_wdat(w2);
- delayxms(1);
- lcd_pos(0,2); //表示第一行,第二零位
- lcd_wdat(w3);
- delayxms(1);
- delay(20);
- lcd_pos(1,0);
- i=0;
- while(dis2[i]!='\0') //判斷數(shù)組dis2[i]是否等于0
- {
- lcd_wdat(dis2[i]); //讓數(shù)組dis2[i]里的每一位數(shù)一次顯示
- i++;
- }
- delay(5);//15在此加延時(shí)解決顯示不清楚
- lcd_pos(2,0); //LCD顯示第二行第0位
- i=0;
- while(dis3[i]!='\0')
- {
- lcd_wdat(dis3[i]);
- i++;
- }
- delay(5);
- lcd_pos(3,0); //LCD顯示第三行第0位
- i=0;
- while(dis4[i]!='\0')
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
12864簡(jiǎn)單顯示 ADC采集.zip
(42.5 KB, 下載次數(shù): 177)
2018-4-27 10:38 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|