|
問題描述:
Proteus 8.11 仿真報錯
仿真圖使用了 LCD1602液晶顯示
我把原理圖和所有的標號D5都截圖了
打包文件中包含源碼及仿真圖
另:我也會將源碼和網絡標號截圖放在問題描述中,大家也可直接看這,報錯的網絡標號為D5,已在圖一中標紅顯示
單片機源程序如下:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar temp_data, temp;
- sbit wela = P2^7; //位選端口
- sbit dula = P2^6; //段選端口
- sbit beep = P2^3; //蜂鳴器端口
- sbit lcdrs = P3^0; //LCD1602 寄存器選擇
- sbit lcdrw = P3^1; //LCD1602 讀寫控制
- sbit lcden = P3^2; //LCD1202 使能端控制
- void delay(uchar num); //延時函數
- void lcd_WriteCmd(uchar cmd); //LCD 寫一字節指令
- void lcd_WriteDat(uchar dat); //LCD 寫一字節數據
- void lcd_Init(); //LCD初始化
- void main()
- {
- lcd_Init();
- while(1);
-
- }
- void delay(uchar num)
- {
- uint x, y;
- for(x = num; x > 0; x--)
- {
- for(y = 110; y > 0; y--);
- }
- }
- void lcd_WriteCmd(uchar cmd)
- {
- lcden = 0;
- lcdrs = 0; //寄存器選擇指令
- lcdrw = 0; //選擇讀指令
- P0 = cmd; //將一字節指令給LCD
- delay(5);
- lcden = 1;
- delay(5);
- lcden = 0; //高脈沖讀走指令
- }
- /***** 向LCD寫入一字節數據 *****/
- void lcd_WriteDat(uchar dat)
- {
- lcden = 0;
- lcdrs = 1;
- lcdrw = 0;
- P0 = dat;
- delay(5);
- lcden = 1;
- delay(5);
- lcden = 0;
- }
- /**** 初始化液晶LCD1602 ****/
- void lcd_Init()
- {
- dula = 0;
- wela = 0;
- lcden = 0;
- lcd_WriteCmd(0x38); //設置顯示16*2
- lcd_WriteCmd(0x0c); //開顯示器及光標設置
- lcd_WriteCmd(0x06); //移動光標 文字不動
- delay(10);
- }
復制代碼 類似的問題我在論壇里看過了,但根據壇友的方法,我解決不了;
這問題困擾我許久,就是不清楚錯在哪。
懇請壇友出手指點迷津,感謝大家
|
-
-
LCD1602.rar
2021-9-11 21:43 上傳
點擊文件名下載附件
31.88 KB, 下載次數: 4
|