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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4089|回復(fù): 22
收起左側(cè)

單片機(jī)程序,我想輸入一個(gè)任意數(shù)字,然后顯示在lcd上,但是不行,希望求解

[復(fù)制鏈接]
ID:885542 發(fā)表于 2021-2-27 20:23 來(lái)自觸屏版 | 顯示全部樓層 |閱讀模式
#include"reg52.h"
#include "lcd.h"
typedef unsigned int u16;
typedef unsigned char u8;

void UsartInit()      //初始串口
{
  TMOD=0x20;
  TH1=0xF3;      //設(shè)置比特率
  TL1=0xF3;
  PCON=0x80;
  TR1=1;
  SCON=0x50;
  ES=1;
  EA=1;
}

void Usart() interrupt 4
{
  u8 receiveData;
  receiveData=SBUF;
  receiveDat=receiveData+0x30;   
  LcdWriteData(receiveData);   //寫(xiě)入函數(shù),寫(xiě)入函數(shù)
                                                    在另一個(gè)文檔有過(guò)設(shè)置
  RI =0;
  SBUF=receiveData;
  while(!TI);
  TI=0;
}

void main()
{
  LcdInit();        //初始化函數(shù),另一個(gè).c文檔有說(shuō)明
  UsartInit();
  while(1);
}
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-2-27 20:39 來(lái)自觸屏版 | 顯示全部樓層
同時(shí),命令函數(shù)也是有的,lcdwritecom,大佬解答時(shí)方便直接用這個(gè)
回復(fù)

使用道具 舉報(bào)

ID:390416 發(fā)表于 2021-2-27 21:18 | 顯示全部樓層
你真是人才,在串口中斷里面 居然去調(diào)用LCD顯示函數(shù)。把LCD顯示獨(dú)立 把串口收發(fā)獨(dú)立 ,這樣處理串口的時(shí)候,不會(huì)被迫增加時(shí)間。
還有 串口發(fā)送使用whiel 死等是很浪費(fèi)CPU的。可以用中斷直接處理就行了。
這是LCD http://www.zg4o1577.cn/bbs/dpj-200685-1.html
這是串口http://www.zg4o1577.cn/bbs/dpj-200927-1.html
這是串口打印 http://www.zg4o1577.cn/bbs/dpj-201660-1.html
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2021-2-27 21:45 | 顯示全部樓層
void Usart() interrupt 4
{
        u8 receiveData;
        RI =0;
        receiveData=SBUF;
//        receiveDat=receiveData+0x30;   
        lcdwritecom(0x80);                                        //數(shù)據(jù)指針設(shè)置顯示位置  
        LcdWriteData(receiveData+0x30);                //寫(xiě)入函數(shù),數(shù)據(jù)轉(zhuǎn)換成ASCII字符碼
        SBUF=receiveData;                                        //將收到的數(shù)據(jù)返回上位機(jī)
        while(!TI);
        TI=0;
}
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-2-27 22:01 來(lái)自觸屏版 | 顯示全部樓層
wulin 發(fā)表于 2021-2-27 21:45
void Usart() interrupt 4
{
        u8 receiveData;

不行呀,好兄弟,我用串口發(fā)一個(gè)1,lcd上出現(xiàn)亂碼呢。。。。
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2021-2-28 06:47 | 顯示全部樓層
刮痧小能手 發(fā)表于 2021-2-27 22:01
不行呀,好兄弟,我用串口發(fā)一個(gè)1,lcd上出現(xiàn)亂碼呢。。。。

出現(xiàn)亂碼要在串口助手里看看返回的數(shù)字是否正確以區(qū)分是串口程序問(wèn)題還是LCD驅(qū)動(dòng)程序問(wèn)題
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-2-28 09:09 來(lái)自觸屏版 | 顯示全部樓層
wulin 發(fā)表于 2021-2-28 06:47
出現(xiàn)亂碼要在串口助手里看看返回的數(shù)字是否正確以區(qū)分是串口程序問(wèn)題還是LCD驅(qū)動(dòng)程序問(wèn)題

串口上也不會(huì)顯示我所輸入的數(shù)字,那咋么辦,我沒(méi)有一點(diǎn)頭緒呀,應(yīng)該改哪里
回復(fù)

使用道具 舉報(bào)

ID:882829 發(fā)表于 2021-2-28 10:42 | 顯示全部樓層
很簡(jiǎn)單,網(wǎng)上大把例子
回復(fù)

使用道具 舉報(bào)

ID:748788 發(fā)表于 2021-2-28 10:45 | 顯示全部樓層
懷疑你是一接觸單片機(jī)就直接上手串口和顯示屏,若果真這樣就沒(méi)有不蒙的,還是循序漸進(jìn)吧
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-2-28 12:21 來(lái)自觸屏版 | 顯示全部樓層
wwh2382 發(fā)表于 2021-2-28 10:45
懷疑你是一接觸單片機(jī)就直接上手串口和顯示屏,若果真這樣就沒(méi)有不蒙的,還是循序漸進(jìn)吧

不不不,我學(xué)了一點(diǎn)了,20天了,我已經(jīng)想了很久了,好幾天了都沒(méi)有結(jié)果。
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-2-28 15:37 | 顯示全部樓層
天意如是 發(fā)表于 2021-2-28 10:42
很簡(jiǎn)單,網(wǎng)上大把例子

沒(méi)有的啦,我也找了,反正沒(méi)找到對(duì)的,如果有,還請(qǐng)你不嫌麻煩給一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-2-28 15:52 | 顯示全部樓層
人人學(xué)會(huì)單片機(jī) 發(fā)表于 2021-2-27 21:18
你真是人才,在串口中斷里面 居然去調(diào)用LCD顯示函數(shù)。把LCD顯示獨(dú)立 把串口收發(fā)獨(dú)立 ,這樣處理串口的時(shí)候 ...

您所說(shuō)的獨(dú)立出來(lái)是否如此,我試過(guò)這樣還是不行,如果哪里不對(duì)還望指正,感謝!

#include"reg52.h"
#include "lcd.h"
typedef unsigned int u16;
typedef unsigned char u8;

void UsartInit()
{
  TMOD=0x20;
  TH1=0xF3;
  TL1=0xF3;
  PCON=0x80;
  TR1=1;
  SCON=0x50;
  ES=1;
  EA=1;
}
  

u8 receiveData;
void lcdscreen()                                                                          //lcd顯示獨(dú)立出來(lái)
{
        LcdInit();
    LcdWriteCom(0x80);                                                           //設(shè)置指針在第一格
    LcdWriteData(receiveData+0x30);                                        //寫(xiě)入函數(shù),數(shù)據(jù)轉(zhuǎn)換成ASCII字符碼
                      
}




void Usart() interrupt 4
{
        u8 receiveData;
        RI=0;
        receiveData=SBUF;
                lcdscreen();                                                //lcd顯示
        SBUF=receiveData;                                        //將收到的數(shù)據(jù)返回上位機(jī)
        while(!TI);
        TI=0;
}

void main()
{
  LcdInit();                                                                        //初始化lcd
  UsartInit();                                                                        //初始化串口
   
  while(1);
  
}
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-2-28 19:21 來(lái)自觸屏版 | 顯示全部樓層
難道真的就沒(méi)有人能寫(xiě)出來(lái)吧,不會(huì)吧
回復(fù)

使用道具 舉報(bào)

ID:286819 發(fā)表于 2021-2-28 22:55 | 顯示全部樓層
看這個(gè)程序貌似沒(méi)有錯(cuò)誤,把寫(xiě)入函數(shù)上傳一下,分析分析
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-3-1 08:42 來(lái)自觸屏版 | 顯示全部樓層
houchg 發(fā)表于 2021-2-28 22:55
看這個(gè)程序貌似沒(méi)有錯(cuò)誤,把寫(xiě)入函數(shù)上傳一下,分析分析

寫(xiě)入函數(shù)就不傳了吧,我是看視頻學(xué)的教程,都是一點(diǎn)點(diǎn)抄過(guò)去的,而且別的程序也用過(guò),沒(méi)有問(wèn)題的,肯定
回復(fù)

使用道具 舉報(bào)

ID:691185 發(fā)表于 2021-3-1 09:02 | 顯示全部樓層
你是在單片機(jī)上面實(shí)現(xiàn)嗎還是仿真,如果是實(shí)物的話,你看單片機(jī)的晶振頻率是不是對(duì)的。
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-3-1 10:29 | 顯示全部樓層
青街古城 發(fā)表于 2021-3-1 09:02
你是在單片機(jī)上面實(shí)現(xiàn)嗎還是仿真,如果是實(shí)物的話,你看單片機(jī)的晶振頻率是不是對(duì)的。

單片機(jī)上實(shí)現(xiàn),波特率是對(duì)的,所以大哥我代碼都出來(lái)了,還有可以修改的地方嗎,我這邊單片機(jī)上lcd還是沒(méi)有顯示哎
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2021-3-1 11:50 | 顯示全部樓層
刮痧小能手 發(fā)表于 2021-3-1 10:29
單片機(jī)上實(shí)現(xiàn),波特率是對(duì)的,所以大哥我代碼都出來(lái)了,還有可以修改的地方嗎,我這邊單片機(jī)上lcd還是沒(méi) ...

樓主的波特率肯定不對(duì),以下兩種任選。修改完整代碼如下,但不宜在中斷中調(diào)用LCD顯示函數(shù)。
  1. #include"reg52.h"
  2. //#include "lcd.h"
  3. typedef unsigned int u16;
  4. typedef unsigned char u8;

  5. sbit LCD_RS=P3^5;
  6. sbit LCD_EN=P3^4;
  7. sbit LCD_RW=P3^3;

  8. u8 receiveData;
  9. /*
  10. void UsartInit()
  11. {
  12.         TMOD=0x20;
  13.         TH1=0xF4;
  14.         TL1=0xF4;
  15. //        PCON=0x80;//不加倍
  16.         TR1=1;
  17.         SCON=0x50;
  18.         ES=1;
  19.         EA=1;
  20. }
  21. */
  22. void UsartInit()
  23. {
  24.         TMOD=0x20;
  25.         TH1=0xE8;
  26.         TL1=0xE8;
  27.         PCON=0x80;//加倍
  28.         TR1=1;
  29.         SCON=0x50;
  30.         ES=1;
  31.         EA=1;
  32. }
  33.   
  34. /*******100us延時(shí)程序********/
  35. void delay(u16 x)
  36. {
  37.         u16 a,b;
  38.         for(a=x;a>0;a--)
  39.                 for(b=10;b>0;b--);
  40. }

  41. /*******液晶寫(xiě)指令程序********/
  42. void LcdWriteCom(u8 com)
  43. {
  44.         LCD_EN=0;        //初始設(shè)置LCD_EN低電平
  45.         LCD_RS=0;        //允許寫(xiě)指令
  46.         P0=com;                //傳遞指令
  47.         delay(10);        //延時(shí)1ms
  48.         LCD_EN=1;        //使能寫(xiě)入
  49.         delay(10);        //延時(shí)1ms
  50.         LCD_EN=0;        //低跳變執(zhí)行
  51.        
  52. }
  53. /*******液晶寫(xiě)數(shù)據(jù)程序********/
  54. void LcdWriteData(u8 date)
  55. {
  56. //        LCD_EN=0;        //初始設(shè)置LCD_EN低電平
  57.         LCD_RS=1;        //允許寫(xiě)數(shù)據(jù)
  58.         P0 =date;        //傳遞數(shù)據(jù)
  59.         delay(10);        //延時(shí)1ms
  60.         LCD_EN=1;        //使能寫(xiě)入
  61.         delay(10);        //延時(shí)1ms
  62.         LCD_EN=0;        //低跳變執(zhí)行
  63.        
  64. }
  65. /*******液晶初始化程序********/
  66. void LcdInit()                //設(shè)置顯示模式、
  67. {
  68.         LCD_RW=0;                        //初始設(shè)置LCD_RW低電平
  69.         LcdWriteCom(0x38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
  70.         LcdWriteCom(0x01);//顯示清零,數(shù)據(jù)指針清零
  71.         LcdWriteCom(0x0c);//設(shè)置開(kāi)顯示,不顯光標(biāo)
  72.         LcdWriteCom(0x06);//設(shè)置寫(xiě)一個(gè)字符后地址指針加1
  73. }
  74. void lcdscreen(u8 t)    //lcd顯示獨(dú)立出來(lái)
  75. {
  76. //        LcdInit();
  77.         LcdWriteCom(0x80);   //設(shè)置指針在第一格
  78.         LcdWriteData(t+0x30);//寫(xiě)入函數(shù),數(shù)據(jù)轉(zhuǎn)換成ASCII字符碼
  79. }

  80. void Usart() interrupt 4
  81. {
  82.         u8 receiveData;
  83.         RI=0;
  84.         receiveData=SBUF;
  85.         lcdscreen(receiveData);        //lcd顯示
  86.         SBUF=receiveData;   //將收到的數(shù)據(jù)返回上位機(jī)
  87.         while(!TI);
  88.         TI=0;
  89. }

  90. void main()
  91. {
  92.         LcdInit();          //初始化lcd
  93.         UsartInit();        //初始化串口

  94.         while(1);
  95. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:798631 發(fā)表于 2021-3-1 12:37 | 顯示全部樓層
先確定是哪里的問(wèn)題   寫(xiě)液晶呢直接先寫(xiě)個(gè)常數(shù)    根據(jù)結(jié)果處理  這樣你就有方向了
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-3-1 18:11 來(lái)自觸屏版 | 顯示全部樓層
wulin 發(fā)表于 2021-3-1 11:50
樓主的波特率肯定不對(duì),以下兩種任選。修改完整代碼如下,但不宜在中斷中調(diào)用LCD顯示函數(shù)。

不管行不行,你寫(xiě)了這么多,我一定要試一下的,這么久終于有個(gè)認(rèn)真回答的了,我愛(ài)死你了
回復(fù)

使用道具 舉報(bào)

ID:885542 發(fā)表于 2021-3-1 19:03 | 顯示全部樓層
wulin 發(fā)表于 2021-3-1 11:50
樓主的波特率肯定不對(duì),以下兩種任選。修改完整代碼如下,但不宜在中斷中調(diào)用LCD顯示函數(shù)。

我這邊單片機(jī)和你肯定不一樣,幾個(gè)端口不一樣,所以初始化那幾個(gè)沒(méi)有復(fù)制,但是其他的復(fù)制了,我也檢查了幾遍還是沒(méi)有用。。。我再想想辦法吧,感謝你了
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2021-3-1 21:17 | 顯示全部樓層
刮痧小能手 發(fā)表于 2021-3-1 19:03
我這邊單片機(jī)和你肯定不一樣,幾個(gè)端口不一樣,所以初始化那幾個(gè)沒(méi)有復(fù)制,但是其他的復(fù)制了,我也檢查了 ...

這個(gè)程序是經(jīng)過(guò)實(shí)物驗(yàn)證過(guò)的,只要你是用的51內(nèi)核單片機(jī),串口初始化定時(shí)器都一樣。你的核心錯(cuò)誤就是串口初始化定時(shí)器錯(cuò)誤導(dǎo)致波特率不對(duì)。LCD1602與MCU的接口是可以按實(shí)際硬件電路定義的。
回復(fù)

使用道具 舉報(bào)

ID:748788 發(fā)表于 2021-3-2 17:41 | 顯示全部樓層
應(yīng)該確認(rèn)你的單片機(jī)晶振是不是11.0592m的。串口程序的波特率都是按照這個(gè)數(shù)字計(jì)算的,否則即使別人的程序在你的單片機(jī)上調(diào)通,也無(wú)法與串口助手之類的工具正常通信
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 免费黄视频网站 | 91精品国产乱码麻豆白嫩 | 国产精品人人做人人爽 | 国产精品久久国产精品 | 欧美性成人| 黄网站在线观看 | 成人av网站在线观看 | 国产真实精品久久二三区 | 黄色片在线免费看 | 中文字幕一区二区三区精彩视频 | 久久综合影院 | 久久com | 午夜视频免费在线观看 | 久久国产精品免费一区二区三区 | 97精品久久 | 国产一区久久 | 精品视频一区二区三区 | 成人国产一区二区三区精品麻豆 | 欧美精品综合在线 | 丁香久久 | 日本一区二区三区免费观看 | 成人亚洲视频 | 九九色综合 | 日本黄色免费大片 | 91免费版在线观看 | 久久精品国产v日韩v亚洲 | 91麻豆蜜桃一区二区三区 | 色嗨嗨| 欧美看片 | 亚洲精品乱码久久久久久黑人 | 激情欧美日韩一区二区 | 欧美日本韩国一区二区 | 欧美一级片在线看 | 成人精品啪啪欧美成 | 欧美精品久久一区 | 凹凸日日摸日日碰夜夜 | 国产在线一区二区 | 91丨九色丨国产在线 | 日韩视频观看 | 99久久视频 | 手机在线观看 |