久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
一個旋轉編碼器 LCD1602的單片機驅動程序
[打印本頁]
作者:
zhjzh72
時間:
2018-11-13 12:18
標題:
一個旋轉編碼器 LCD1602的單片機驅動程序
網上搜集到的一個關于編碼器與單片機的資料
單片機源程序如下:
#include<reg51.h>
#include <MATH.H>
/**********************************
宏定義字符串
**********************************/
#define uchar unsigned char
#define LCD_DAT P0 //LCD數據/指令輸入端(D7,D6,D5,D4,D3,D2,D1,D0)
sbit LCD_RW = P2^5;//LCD讀寫控制端
sbit LCD_RS = P2^6;//LCD指令/數據控制端
sbit LCD_E = P2^7; //LCD使能控制端
sbit AA = P1^0;//接編碼器A端
sbit BB = P1^1;//接編碼器B端
/**********************************
任意ms延時函數
**********************************/
void delayms(uchar count)
{
uchar i,j;
for(i = 0; i < count; i++)
for(j = 0; j < 120; j++);
}
/**********************************
5ms延時函數
**********************************/
void delay(void) //延時5ms
{
uchar a, b;
for(b = 19; b > 0; b--)
for(a = 130; a > 0; a--);
}
/**********************************
LCD寫函數
**********************************/
void LCD_W(uchar m, uchar com_dat) //m=0:寫指令,m=1:寫數據
{
LCD_RS = m;
LCD_RW = 0;//寫操作
LCD_E = 0; //使能禁止
LCD_DAT = com_dat; //在指令/數據端置數
delay(); //5ms延時
LCD_E = 1; //使能允許
delay(); //5ms延時
LCD_E = 0; //使能禁止
}
/**********************************
LCD初始化函數
**********************************/
void LCD_INIT()
{
delay();
delay();
delay(); //5ms延時
LCD_W(0, 0x38); //不檢測忙信號
delay();
LCD_W(0, 0x38); //不檢測忙信號
delay();
LCD_W(0, 0x38); //不檢測忙信號
LCD_W(0, 0x38); //顯示模式
LCD_W(0, 0x08); //顯示關閉
LCD_W(0, 0x06); //光標移動
LCD_W(0, 0x0c); //顯示開和光標設置
}
/**********************************
LCD清屏函數
**********************************/
void CLS()
{
LCD_W(0, 0x01); //清屏
}
/**********************************
LCD定位函數
**********************************/
void LOCATE(uchar H, uchar L)
{
if(H == 1) //如果是第一行
LCD_W(0, 0x80 + L - 1); //定位在第一行第L列
else
LCD_W(0, 0x80 + 0x40 + L - 1); //否則定位在第二行第L列
}
/**********************************
LCD顯示數值函數
**********************************/
void LCD(unsigned long num)
{
char n, m;
unsigned long ww;
if(num > 9) //兩位數以上進行處理顯示
{
n = log10(num); //取數值的位數
for(m = n; m >= 0; m--) //從高位開始輸出
{
ww = (num / pow(10, m)); //從高位向低位依次取數
ww = ww % 10; //取各次的最低位數
LCD_W(1, 48 + ww); //輸出
}
}
else LCD_W(1, 48 + num); //一位數直接顯示
LCD_W(1, ' '); //顯示空格
LCD_W(1, ' '); //顯示空格
LCD_W(1, ' '); //顯示空格
}
/**********************************
主函數
**********************************/
void main()
{
uchar kkk, keys, tmp = 1;
LCD_INIT();//LCD初始化
CLS();//清屏
while(1)
{
if(AA == 0)//開始檢測是否旋轉了開關
{
delayms(10);//消除抖動
if(AA == 0) //確實是旋轉了,進行正反轉判斷
{
if(BB == 0)//正轉,進行正轉處理
{
tmp = tmp * 2;//為了使LED正向遞增
if(tmp == 0)tmp = 128;//達到最大值,不再加
kkk = '+';//正轉顯示 +
}
if(BB == 1)//反轉,進行反轉處理
{
tmp = tmp / 2;//為了使LED反向遞減
if(tmp == 0)tmp = 1;//達到最小值,不再減
kkk = '-';//反轉顯示 -
}
}
LOCATE(1,1);//定位第 1 行 1 列
LCD(tmp);//顯示數值
LOCATE(1,5);//定位第 1 行 5 列
LCD_W(1, kkk);//顯示字符
keys = 0;//延時等待計數器
while(AA == 0)//等待開關A端復位(斷開),防止出現亂加減的現象
{
delayms(20);//延時等待
keys++;//計數器加 1
if(keys == 50)break;//達到 1 秒沒有復位,開關卡住了,退出繼續掃描開關
}
}
P3 = ~tmp; //輸出到P0
}
}
復制代碼
所有資料51hei提供下載:
一個旋轉編碼器 LCD1602的驅動程序.doc
(29.5 KB, 下載次數: 77)
2018-11-13 12:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
MCU_Hacker
時間:
2018-11-18 13:37
一起學習!!
作者:
獨角天賜
時間:
2018-11-29 21:00
這個程序有什么效果?1602上可以收到什么?
作者:
w1179benp
時間:
2019-1-17 20:23
最后一句: P3 = ~tmp; //輸出到P0 P3 or P0 ?
作者:
whatsrong
時間:
2019-1-17 20:45
看看 了解下
作者:
xdco
時間:
2019-1-17 22:03
程序不錯,就是掃描有點慢
作者:
bianzhu
時間:
2019-3-2 17:15
學習學習
作者:
luc0001
時間:
2019-3-2 20:33
看看還不錯
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
91在线资源
|
日韩一区二区三区在线观看视频
|
蜜臀网
|
夜夜久久
|
久久精品性视频
|
国产精品久久久久无码av
|
男女精品网站
|
野狼在线社区2017入口
|
波多野吉衣在线播放
|
91精品一区二区三区久久久久
|
日韩av在线一区二区
|
久久久久国产精品一区二区
|
一区二区三区四区不卡视频
|
草久网
|
欧美日韩综合一区
|
神马久久春色视频
|
不卡一区
|
亚洲午夜视频
|
日本精品一区二区三区在线观看
|
中文字幕av色
|
www.99re5.com
|
亚洲风情在线观看
|
久久久久国产一区二区三区
|
成人精品国产
|
日韩一级不卡
|
成人欧美一区二区三区1314
|
综合精品久久久
|
亚洲网站在线观看
|
免费亚洲一区二区
|
久久精品国产久精国产
|
欧美精品欧美精品系列
|
综合色在线
|
网站一区二区三区
|
久久国产精品视频
|
国产午夜三级一区二区三
|
国产精品污www一区二区三区
|
国产亚洲精品久久19p
|
午夜一级做a爰片久久毛片 精品综合
|
久草综合在线
|
99中文字幕
|
欧美日韩视频在线第一区
|