lcd1602顯示,正轉(zhuǎn)翻轉(zhuǎn)停止顯示高度;這個是花了100元買的.
基于51單片機(jī)做的國旗自動升降系統(tǒng)的proteus仿真原理圖:
如果沒有裝KEIL軟件
找到 .c .h結(jié)尾的文件即為程序。打開方式選擇記事本打開
或者到開發(fā)資料里安裝KEIL軟件
單片機(jī)源程序如下:
#include #define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255 #define uint unsigned int //無符號整型 宏定義 變量范圍0~65535 #include unsigned char code zheng[4]={0xfe,0xfd,0xfb,0xf7};//正轉(zhuǎn)表格 unsigned char code fan[4]={0xf7,0xfb,0xfd,0xfe};//反轉(zhuǎn)表格 uchar flag_start ; //啟動標(biāo)志位 1為起動步進(jìn)電機(jī) 否則關(guān)閉電機(jī) uchar flag_z_f; //正反標(biāo)志位 0為順時鐘 1為逆時史上轉(zhuǎn) uchar flag_shudu = 1; //4種速度 0,1,2,3, bit flag_1s; uint flag_value; uchar time; uchar gaodu; sbit red = P3^2; //升期 指示燈 sbit green = P3^3; //旗停下指示燈 sbit yellow = P3^4; //降旗 指示燈 sbit rs=P1^4; //寄存器選擇信號 H:數(shù)據(jù)寄存器 L:指令寄存器 sbit rw=P1^5; //寄存器選擇信號 H:數(shù)據(jù)寄存器 L:指令寄存器 sbit e =P1^6; //片選信號 下降沿觸發(fā) sbit wx0 = P2^5; sbit wx1 = P2^6; sbit wx2 = P2^7; uchar key_can_wx; /***********************語音模塊控制IO口的定義************************/ sbit VRST = P2^4; sbit VBUSY= P2^0; sbit VSDA = P2^1; sbit VCS = P2^2; sbit VSCL = P2^3; /******************1ms 延時函數(shù)*******************/ void delay_1ms(uint q) { uint i,j; for(i=0;i } void delay_us (unsigned int us) { while(us--) { _nop_(); } } /***********************三線發(fā)碼子程序************************/ void Send_threelines(unsigned char addr) { unsigned char i; if(VBUSY == 1) { VRST=0; delay_1ms(5); VRST=1; delay_1ms(20); /* 復(fù)位拉高20ms*/ VCS=0; delay_1ms(5); /* 片選拉低5ms */ for(i=0;i<8;i++) { VSCL=0; if(addr&0x01) { VSDA=1; } else VSDA=0; addr>>=1; delay_us(150); /* 150us */ VSCL=1; delay_us(150); /* 150us */ } VCS=1; delay_1ms(200); } } /******************************************************************** * 名稱 : delay_uint() * 功能 : 小延時。 * 輸入 : 無 * 輸出 : 無 ***********************************************************************/ void delay_uint(uint q) { while(q--); } /******************************************************************** * 名稱 : write_com(uchar com) * 功能 : 1602命令函數(shù) * 輸入 : 輸入的命令值 * 輸出 : 無 ***********************************************************************/ void write_com(uchar com) { e=0; rs=0; rw=0; P0=com; delay_uint(3); e=1; delay_uint(25); e=0; } /******************************************************************** * 名稱 : write_data(uchar dat) * 功能 : 1602寫數(shù)據(jù)函數(shù) * 輸入 : 需要寫入1602的數(shù)據(jù) * 輸出 : 無 ***********************************************************************/ void write_data(uchar dat) { e=0; rs=1; rw=0; P0=dat; delay_uint(3); e=1; delay_uint(25); e=0; } /******************************************************************** * 名稱 : write_string(uchar hang,uchar add,uchar *p) * 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"ab cd ef" ,調(diào)用該函數(shù)如下 write_string(1,5,"ab cd ef;") * 輸入 : 行,列,需要輸入1602的數(shù)據(jù) * 輸出 : 無 ***********************************************************************/ void write_string(uchar hang,uchar add,uchar *p) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); while(1) { if(*p == '
主站蜘蛛池模板:
黑山县|
阜城县|
永年县|
西吉县|
沧州市|
云阳县|
延川县|
靖安县|
卢湾区|
武宣县|
北辰区|
栖霞市|
双柏县|
凭祥市|
肇庆市|
囊谦县|
鄂伦春自治旗|
蕉岭县|
崇信县|
南通市|
利川市|
革吉县|
宜兰县|
新巴尔虎右旗|
德惠市|
湖南省|
三亚市|
潞西市|
积石山|
宣武区|
安平县|
嘉义县|
乡城县|
开阳县|
琼结县|
龙口市|
介休市|
繁峙县|
威信县|
四川省|
茂名市|
for(j=0;j<120;j++);