久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1104|回復: 0
打印 上一主題 下一主題
收起左側

Proteus仿真 LCD1602顯示問題

[復制鏈接]
回帖獎勵 100 黑幣 回復本帖可獲得 20 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
用52單片機做作息時間控制器
用protues仿真發現時間顯示界面可以正常修改,但是切換到鬧鐘設置界面
時鐘顯示I5-I5,且不能修改,請問這是為什么呢

#include "lcd1602.h"


/*******************************************************************************
* 函 數 名       : lcd1602_write_cmd
* 函數功能                 : LCD1602寫命令
* 輸    入       : cmd:指令
* 輸    出             : 無
*******************************************************************************/
#if (LCD1602_4OR8_DATA_INTERFACE==0)//8位LCD
void lcd1602_write_cmd(u8 cmd)
{
        LCD1602_RS=0;//選擇命令
        LCD1602_RW=0;//選擇寫
        LCD1602_E=0;
        LCD1602_DATAPORT=cmd;//準備命令
        delay_ms(1);
        LCD1602_E=1;//使能腳E先上升沿寫入
        delay_ms(1);
        LCD1602_E=0;//使能腳E后負跳變完成寫入        
}
#else        //4位LCD
void lcd1602_write_cmd(u8 cmd)
{
        LCD1602_RS=0;//選擇命令
        LCD1602_RW=0;//選擇寫
        LCD1602_E=0;
        LCD1602_DATAPORT=cmd;//準備命令
        delay_ms(1);
        LCD1602_E=1;//使能腳E先上升沿寫入
        delay_ms(1);
        LCD1602_E=0;//使能腳E后負跳變完成寫入
        
        LCD1602_DATAPORT=cmd<<4;//準備命令
        delay_ms(1);
        LCD1602_E=1;//使能腳E先上升沿寫入
        delay_ms(1);
        LCD1602_E=0;//使能腳E后負跳變完成寫入        
}
#endif

/*******************************************************************************
* 函 數 名       : lcd1602_write_data
* 函數功能                 : LCD1602寫數據
* 輸    入       : dat:數據
* 輸    出             : 無
*******************************************************************************/
#if (LCD1602_4OR8_DATA_INTERFACE==0)//8位LCD
void lcd1602_write_data(u8 dat)
{
        LCD1602_RS=1;//選擇數據
        LCD1602_RW=0;//選擇寫
        LCD1602_E=0;
        LCD1602_DATAPORT=dat;//準備數據
        delay_ms(1);
        LCD1602_E=1;//使能腳E先上升沿寫入
        delay_ms(1);
        LCD1602_E=0;//使能腳E后負跳變完成寫入               
}
#else
void lcd1602_write_data(u8 dat)
{
        LCD1602_RS=1;//選擇數據
        LCD1602_RW=0;//選擇寫
        LCD1602_E=0;
        LCD1602_DATAPORT=dat;//準備數據
        delay_ms(1);
        LCD1602_E=1;//使能腳E先上升沿寫入
        delay_ms(1);
        LCD1602_E=0;//使能腳E后負跳變完成寫入
        
        LCD1602_DATAPORT=dat<<4;//準備數據
        delay_ms(1);
        LCD1602_E=1;//使能腳E先上升沿寫入
        delay_ms(1);
        LCD1602_E=0;//使能腳E后負跳變完成寫入               
}
#endif

/*******************************************************************************
* 函 數 名       : lcd1602_init
* 函數功能                 : LCD1602初始化
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
#if (LCD1602_4OR8_DATA_INTERFACE==0)//8位LCD
void lcd1602_init(void)
{
        lcd1602_write_cmd(0x38);//數據總線8位,顯示2行,5*7點陣/字符
        lcd1602_write_cmd(0x0c);//顯示功能開,無光標,光標閃爍
        lcd1602_write_cmd(0x06);//寫入新數據后光標右移,顯示屏不移動
        lcd1602_write_cmd(0x01);//清屏        
}
#else
void lcd1602_init(void)
{
        lcd1602_write_cmd(0x28);//數據總線4位,顯示2行,5*7點陣/字符
        lcd1602_write_cmd(0x0c);//顯示功能開,無光標,光標閃爍
        lcd1602_write_cmd(0x06);//寫入新數據后光標右移,顯示屏不移動
        lcd1602_write_cmd(0x01);//清屏        
}
#endif

/*******************************************************************************
* 函 數 名       : lcd1602_clear
* 函數功能                 : LCD1602清屏
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void lcd1602_clear(void)
{
        lcd1602_write_cmd(0x01);        
}

/*******************************************************************************
* 函 數 名       : lcd1602_show_string
* 函數功能                 : LCD1602顯示字符
* 輸    入       : x,y:顯示坐標,x=0~15,y=0~1;
                                   str:顯示字符串
* 輸    出             : 無
*******************************************************************************/
void lcd1602_show_string(u8 x,u8 y,u8 *str)
{
        u8 i=0;

        if(y>1||x>15)return;//行列參數不對則強制退出

        if(y<1)        //第1行顯示
        {        
                while(*str!='\0')//字符串是以'\0'結尾,只要前面有內容就顯示
                {
                        if(i<16-x)//如果字符長度超過第一行顯示范圍,則在第二行繼續顯示
                        {
                                lcd1602_write_cmd(0x80+i+x);//第一行顯示地址設置        
                        }
                        else
                        {
                                lcd1602_write_cmd(0x40+0x80+i+x-16);//第二行顯示地址設置        
                        }
                        lcd1602_write_data(*str);//顯示內容
                        str++;//指針遞增
                        i++;        
                }        
        }
        else        //第2行顯示
        {
                while(*str!='\0')
                {
                        if(i<16-x) //如果字符長度超過第二行顯示范圍,則在第一行繼續顯示
                        {
                                lcd1602_write_cmd(0x80+0x40+i+x);        
                        }
                        else
                        {
                                lcd1602_write_cmd(0x80+i+x-16);        
                        }
                        lcd1602_write_data(*str);
                        str++;
                        i++;        
                }        
        }                                
}





#ifndef _lcd1602_H
#define _lcd1602_H

#include "public.h"

//LCD1602數據口4位和8位定義,若為1,則為LCD1602四位數據口驅動,反之為8位
#define LCD1602_4OR8_DATA_INTERFACE        0        //默認使用8位數據口LCD1602

//管腳定義
//sbit LCD1602_RS=P2^6;//數據命令選擇
//sbit LCD1602_RW=P2^5;//讀寫選擇
//sbit LCD1602_E=P2^7; //使能信號

sbit LCD1602_RS=P2^0;//數據命令選擇
sbit LCD1602_RW=P2^1;//讀寫選擇
sbit LCD1602_E=P2^2; //使能信號

#define LCD1602_DATAPORT P0        //宏定義LCD1602數據端口


//函數聲明
void lcd1602_init(void);
void lcd1602_clear(void);
void lcd1602_show_string(u8 x,u8 y,u8 *str);

#endif




#ifndef __TIME_H
#define __TIME_H

#include "public.h"

void time0_init(void);

#endif



#include "time.h"

void time0_init(void)
{
        TMOD|=0X01;
        TH0=0xDC;
        TL0=0x00;//定時10ms
        ET0=1;
        EA=1;
        TR0=1;                                
}




1111111111111.png (104.03 KB, 下載次數: 38)

鬧鐘設置不了

鬧鐘設置不了

22222222222222.png (101.33 KB, 下載次數: 50)

時間可以正常設置

時間可以正常設置
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩天堂在线 | av基地网| 久久欧美| 久久久久久久久国产精品 | 欧美久久一区二区 | 色播五月婷婷 | 中文在线观看免费视频 | 久久午夜精品 | 91免费福利| 黄色一级免费 | 精品自拍视频 | 久久精品在线观看 | 9.1成人免费看片 | 亚洲欧洲天堂 | 男女操操操 | 亚洲一区视频 | 成年人免费看视频 | 国内精品国产成人国产三级 | 国产精品片 | 丁香婷婷网 | 麻豆一区二区三区 | 日韩免费看 | 亚洲高清在线播放 | 青青草福利视频 | 国产成人a亚洲精品 | 中文字幕第2页 | 五月天网址 | 中文字幕免费av | 女人黄网站 | 日本三级大片 | 亚洲黄色免费 | 狠狠干狠狠干 | 波多野结衣乳巨码无在线观看 | 欧美日韩精品久久久免费观看 | 国产精品久久一区 | 美女网站视频在线观看 | 美日韩在线视频 | 亚洲美女网站 | 九九在线观看高清免费 | 亚洲日本中文字幕 | 天天爽夜夜爽夜夜爽精品视频 |