|
問(wèn)題描述:
Proteus 8.11 仿真報(bào)錯(cuò)
仿真圖使用了 LCD1602液晶顯示
我把原理圖和所有的標(biāo)號(hào)D5都截圖了
打包文件中包含源碼及仿真圖
另:我也會(huì)將源碼和網(wǎng)絡(luò)標(biāo)號(hào)截圖放在問(wèn)題描述中,大家也可直接看這,報(bào)錯(cuò)的網(wǎng)絡(luò)標(biāo)號(hào)為D5,已在圖一中標(biāo)紅顯示
單片機(jī)源程序如下:
- #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); //延時(shí)函數(shù)
- void lcd_WriteCmd(uchar cmd); //LCD 寫一字節(jié)指令
- void lcd_WriteDat(uchar dat); //LCD 寫一字節(jié)數(shù)據(jù)
- 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; //將一字節(jié)指令給LCD
- delay(5);
- lcden = 1;
- delay(5);
- lcden = 0; //高脈沖讀走指令
- }
- /***** 向LCD寫入一字節(jié)數(shù)據(jù) *****/
- 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); //設(shè)置顯示16*2
- lcd_WriteCmd(0x0c); //開(kāi)顯示器及光標(biāo)設(shè)置
- lcd_WriteCmd(0x06); //移動(dòng)光標(biāo) 文字不動(dòng)
- delay(10);
- }
復(fù)制代碼 類似的問(wèn)題我在論壇里看過(guò)了,但根據(jù)壇友的方法,我解決不了;
這問(wèn)題困擾我許久,就是不清楚錯(cuò)在哪。
懇請(qǐng)壇友出手指點(diǎn)迷津,感謝大家
|
-
-
LCD1602.rar
2021-9-11 21:43 上傳
點(diǎn)擊文件名下載附件
31.88 KB, 下載次數(shù): 4
|